A. 如何:從命令行創建 Windows 窗體應用程序
控制台應用程序在命令行執行所有的輸入和輸出,因此對於快速試驗語言功能和編寫命令行實用工具,它們是理想的選擇。注意在開發Windows窗體應用程序時也將遇到本節中討論的開發環境的功能,因此,請不要僅因為您不打算編寫控制台應用程序就跳過本節!在本節中,您將學習:如何創建新的控制台應用程序。如何在代碼編輯器中使用書簽。如何查看解決方案資源管理器。如何使代碼保持良好的格式。如何使用IntelliSense更快更准確地輸入代碼。如何生成並運行您的應用程序。在該任務中創建的程序將使用System.IO命名空間中的類獲取並顯示包含在C:\目錄中的所有文件及其大小的列表。您可以這些代碼為基礎,開發用於在目錄中搜索特定文件名的實用工具。創建C#控制台應用程序在「文件」菜單上,單擊「新建項目」。出現「新建項目」對話框。該對話框列出VisualC#速成版可以創建的不同默認應用程序類型。選擇「控制台應用程序」作為項目類型,並將應用程序的名稱更改為「列出文件」。默認位置應是恰當的,但您始終可以根據需要輸入新路徑。單擊「確定」。VisualC#速成版為您的項目創建一個以項目標題命名的新文件夾,然後打開VisualC#速成版主窗口,包括代碼窗格,您將在其中輸入和編輯構成應用程序的C#源代碼。注意窗口頂部的工具欄。該工具欄包含各種圖標,用於創建、載入和保存項目、編輯源代碼、生成應用程序以及隱藏和顯示構成VisualC#速成版環境的其他窗口。該工具欄的最右端的五個圖標用來打開重要的窗口,如「解決方案資源管理器」和「工具箱」。將滑鼠指針放在其中任一圖標上可獲取彈出工具提示幫助。注意書簽使您可以從源代碼中的一個位置快速跳轉到另一位置,因此它對於編寫大型程序很有用。要創建書簽,請單擊「切換書簽」圖標或按Ctrl+B+T。邊距中會顯示一個青色標記。使用同樣的過程可刪除現有的書簽。您可以創建任意數量的書簽,並且可以使用「下一個」和「上一個」書簽圖標或按Ctrl+B+N和Ctrl+B+P在它們之間跳轉。確保「解決方案資源管理器」是可見的,方法是單擊屏幕右端的「解決方案資源管理器」選項卡或工具欄中的「解決方案資源管理器」圖標。「解決方案資源管理器」是非常有用的窗格,因為它顯示構成項目的各種文件。該項目中最重要的文件是「Program.cs」文件,它包含應用程序的源代碼。如果希望使VisualC#速成版的顯示保持美觀整潔,了解如何打開和隱藏「解決方案資源管理器」之類的窗口非常重要。默認情況下,「解決方案資源管理器」是可見的。如果要隱藏「解決方案資源管理器」,請單擊其標題欄中的「自動隱藏」圖標(圖釘圖標),或打開「解決方案資源管理器」標題欄中的「選項」菜單並啟用「自動隱藏」。其他窗口(如「類視圖」和「屬性」)也有這些圖標。在「代碼編輯器」中鍵入類名「Console」。如果「解決方案資源管理器」仍擋住「代碼」窗格,請在「代碼」窗格中單擊一次以隱藏「解決方案資源管理器」。現在單擊Main方法內的左大括弧({)的右邊,然後按Enter鍵開始新行。注意編輯器如何自動縮進游標。注意「代碼編輯器」始終嘗試將代碼格式保持為標準的、易於閱讀的布局。如果代碼開始顯得雜亂,您可以重新格式化整個文檔,方法是單擊「高級」,然後單擊「編輯」菜單中的「設置文檔格式」,或者按Ctrl+E+D。鍵入C#類名或關鍵字時,您可以選擇:自行鍵入完整的單詞,或者讓IntelliSense工具(「代碼」窗格的一部分)幫您完成。例如,當鍵入「c」時,將顯示單詞的彈出列表,因為IntelliSense嘗試預測您要鍵入的單詞。在這種情況下,您將看不到剛才顯示的單詞「Console」,因此要麼向下滾動列表,要麼繼續鍵入單詞「console」。當「console」在列表中突出顯示時,按Enter或Tab,或者雙擊它,Console將添加到代碼中。使用IntelliSense的好處是可以保證大小寫和拼寫是正確的。鍵入代碼還是讓IntelliSense幫您完成,完全由您決定。鍵入一個句點和方法名WriteLine。在Console後鍵入句點時,將立即顯示另一個IntelliSense列表。該列表包含屬於Console類的所有可能的方法和屬性。您需要WriteLine方法,並且應該能夠在列表的底部看到它。自行完成鍵入WriteLine或按向下鍵以選擇它,然後按Enter或Tab或雙擊它。WriteLine將添加到代碼中。鍵入左括弧。您將立即看到IntelliSense的另一項功能—方法簽名,它顯示為工具提示消息。在本例中,您可以看到19個不同的簽名,並可以通過單擊向上鍵和向下鍵瀏覽它們。鍵入字元串「該程序列出目錄中的所有文件。」鍵入引號內的消息,並添加一個右括弧。您將看到顯示一條紅色波浪下劃線,提醒您缺少某些符號。鍵入一個「分號」(;),下劃線將消失。完成程序。鍵入或復制並粘貼以下代碼來完成程序:C#staticvoidMain(string[]args){Console.WriteLine(":");System.IO.DirectoryInfodir=newSystem.IO.DirectoryInfo(@"C:\");foreach(System.IO.FileInfofileindir.GetFiles("*.*")){Console.WriteLine("{0},{1}",file.Name,file.Length);}Console.ReadLine();}程序中的最後一行是Console.ReadLine();,它使程序在按Enter鍵之前暫停。如果省略此行,命令行窗口將立即消失,您將看不到程序的輸出。如果您正在創建始終從命令行控制台中使用的命令行實用工具,可能需要省去對ReadLine()方法的調用。運行程序。現在您的第一個程序已完成,可以編譯和運行了。要執行此操作,請按F5或單擊工具欄中的「開始」圖標。在程序編譯和運行後,將打開「控制台」窗口,並顯示文件及其大小的列表。
B. 用C語言編寫windows窗體程序,怎麼創建按鈕以及怎麼添加按鈕的觸發事件啊
Windows
窗體程序是基於消息機制的,所有控制項,它的本質都是一個窗體,都是使用
CreateWindows
函數來創內建,不過類名,容則需要指定為系統預先注冊的控制項類,比如,你要創建一個按鈕控制項,就要這樣子
CreateWindows(
"BUTTON",
"按鈕標題"
),CreateWindows
這個函數你應該用了不少了吧,其餘的參數可以參考
MSDN,但是類名我們指定了
「BUTTON」,說明我們要創建一個按鈕,每個按鈕都有一個唯一的
ID,通過你的消息處理函數,可以知道哪個按鈕發生了什麼事件,詳細講的話,非常多,你可以參考
MSDN,或者《Windows
程序設計》這本書
。
C. 怎麼用C語言編寫一個windows窗口
調用window庫窗口函數即可創建windows窗口。
必須使用windows的編譯器,如VC,MS等等。
RegisterClassEx函數:
該函數注冊在隨後調用CreateWindow函數和CreateWindowEx函數中使用的窗口類。 RegisterClass函數己經由函數RegisterClassEx函數來代替,但是,如果不需要設置類的小目標則仍然可以使用RegisterClass函數。
CreateWindowEx函數:
該函數創建一個具有擴展風格的層疊式窗口、彈出式窗口或子窗口,其他與CreateWindow函數相同。關於創建窗口和其他參數的內容,請參看CreateWindow。具體仍可見微軟的msdn。
消息處理函數WindowProc:
該函數是一個應用程序定義的函數。它處理發送給窗口的消息。WINDPROC類型定義了一個指向該回調函數的指針。WindowProc是用於應用程序定義函數的佔位符。
函數原型:
LRESULT CALLBACK WindowProc (HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
參數:
hwnd:指向窗口的句柄。
uMsg:指定消息類型。
wParam:指定其餘的、消息特定的信息。該參數的內容與UMsg參數值有關。
IParam:指定其餘的、消息特定的信息。該參數的內容與uMsg參數值有關。
返回值:返回值就是消息處理結果,它與發送的消息有關。
一個簡單的Window的代碼如下:
#include<Windows.h>
#include<tchar.h>
LRESULTWINAPIWinProc(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);
intWinMain(
__inHINSTANCEhInstance,
__in_optHINSTANCEhPrevInstance,
__inLPSTRlpCmdLine,
__inintnShowCmd
)
{
TCHAR*szName=_T("myWindow");
WNDCLASSEXwc={0};
HWNDhWnd=NULL;
MSGMsg={0};
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.cbSize=sizeof(WNDCLASSEX);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//通過函數來設置一個白色的背景,這里大家設置為NULL看看,會很有趣的
wc.hCursor=NULL;//不設置
wc.hIcon=NULL;//不設置
wc.hIconSm=NULL;//不設置
wc.hInstance=hInstance;//當前程序的句柄,hInstance是有系統給傳遞的
wc.lpfnWndProc=WinProc;//窗口處理過程的回調函數。
wc.lpszClassName=szName;//窗口類的名字。
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW|CS_VREDRAW;
RegisterClassEx(&wc);//在系統中注冊
hWnd=CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T("我的窗口我喜歡"),WS_OVERLAPPEDWINDOW,
200,100,600,400,NULL,NULL,hInstance,NULL);//創建窗口,窗口標題為"我的窗口我喜歡"
if(hWnd==NULL)
{
MessageBox(NULL,_T("There'sanError"),_T("ErrorTitle"),MB_ICONEXCLAMATION|MB_OK);
return0;
}
ShowWindow(hWnd,nShowCmd);//顯示窗口
UpdateWindow(hWnd);
//下面是對消息的循環處理,大家先不必管這些,下節課我會細說的
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);//翻譯消息
DispatchMessage(&Msg);//分派消息
}
returnMsg.message;
}
//消息處理函數
LRESULTWINAPIWinProc(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam)
{
switch(Msg)//處理消息過程
{
caseWM_DESTROY://響應滑鼠單擊關閉按鈕事件
PostQuitMessage(0);//退出消息隊列
return0;//退出函數
}
returnDefWindowProc(hWnd,Msg,wParam,lParam);
}
D. 怎麼用c語言寫窗體程序
步驟:
1、注冊窗口類;
2、創建窗體;
3、消息循環;
4、編寫窗口消息處理函數。
代碼:
#include<windows.h>
#include<tchar.h>
LRESULTCALLBACKWindowProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMlParam);
intWINAPI_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRszCmdLine,intnCmdShow)
{
WNDCLASSwc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=WindowProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=NULL;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject();
wc.lpszMenuName=NULL;
wc.lpszClassName=_T("MyWindowClass");
if(!RegisterClass(&wc))
{
MessageBox(NULL,_T("無法注冊窗口類"),_T("錯誤"),MB_OK);
return0;
}
HWNDnewWindow=CreateWindow(
_T("MyWindowClass"),
_T("我的第一個winapi程序"),
WS_OVERLAPPEDWINDOW,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(NULL==newWindow)
{
MessageBox(NULL,_T("無法創建窗體"),_T("錯誤"),MB_OK);
return0;
}
ShowWindow(newWindow,nCmdShow);
UpdateWindow(newWindow);
MSGmsg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
{
switch(uMsg)
{
caseWM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
returnDefWindowProc(hwnd,uMsg,wParam,lParam);
}
return0;
}
就是一個只有標題欄、關閉按鈕、最小化按鈕、最大化/還原按鈕、顯示區域的窗體。
E. C語言如何創建窗口
windows下通過調用API來創建窗口:
#include<windows.h>
int main()
{
MessageBox(NULL,"Hello World!","C圖形程序",MB_OK);
return 0;
}
linux下通過調用圖形庫來創建窗口。
樓主如回果是學C的話,先不答要急於搞這些東西,把基礎打扎實才是最重要的,GUI可以後學。基礎扎實了,這些只是很簡單的東西。
F. 怎樣使用visual studio 2010以C語言編一個簡單的窗口程序
VC2010 生成的工程默認是 Unicode 編碼,字元串必須是 Unicode 字元,在前面加上 L:
MessageBox(NULL, L"Hello World!", L"我的第一個窗口程序", MB_OK);
一般來說,用 VC 開發程序都不這樣寫,而是應該是使用微軟定義的數據類型和宏,這樣便能同時編譯 ANSI 版本,不用修改源文件。須包含頭文件 tchar.h,對於字元串應使用 _T 或 TEXT 宏將其包含,如 _T("Hello")。當定義 Unicode 時,等同於 L"Hello";未定義時等同於 "Hello"。所以一般都寫成這樣:
#include <windows.h>
#include <tchar.h>
void main()
{
MessageBox(NULL, _T("Hello World!"), _T("我的第一個窗口程序"), MB_OK);
}
當然,上面說過,像樓上那樣使用 TEXT 宏也是可以的,兩者是同一個東西。
G. 怎樣用C語言編寫出窗體程序
#include <windows.h>
//Function prototype.
int WINAPI WinMain(HINSTANCE,HINSTANCE ,LPSTR ,int);
LRESULT CALLBACK MainWndProc(HWND ,UINT ,WPARAM,LPARAM);
InitApplication(HINSTANCE);
InitInstance(HINSTANCE,int);
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(nMsg)
{
case WM_COMMAND:
{
hdc = GetDC((HWND)lParam);
GetClientRect ((HWND)lParam, &rect) ;
DrawText(hdc,"HOHO",-1,&rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
ReleaseDC((HWND)lParam,hdc);
}
break;
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps);
GetClientRect (hwnd, &rect) ;
DrawText(hdc,"Hello Word",-1,&rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd,&ps);
}
break;
//按鍵
case WM_KEYDOWN:
if(wParam == VK_ESCAPE)
SendMessage(hwnd,WM_CLOSE,0,0);
break;
case WM_CHAR:
switch(wParam)
{
case 'w':
MessageBox(hwnd,"UP","KeyBorad Input",MB_OK);
break;
case 's':
MessageBox(hwnd,"DOWN","KeyBorad Input",MB_OK);
break;
case 'a':
MessageBox(hwnd,"LEFT","KeyBorad Input",MB_OK);
break;
case 'd':
MessageBox(hwnd,"RIGHT","KeyBorad Input",MB_OK);
break;
}
break;
//關閉
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,nMsg,wParam,lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInStance,
LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
if(!InitApplication(hInstance))
{
MessageBox(NULL,"InitApplication Failed","Error!",MB_ICONEXCLAMATION | MB_OK);
return FALSE;
}
if(!InitInstance(hInstance,nCmdShow)){
MessageBox(NULL,"InitInstance Failed","Error!",MB_ICONEXCLAMATION | MB_OK);
return FALSE;
}
while(GetMessage(&msg,(HWND) NULL,0,0)>0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
InitApplication(HINSTANCE hInstance)
{
WNDCLASS wc;
wc.style = CS_DBLCLKS;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MainWClass";
return RegisterClass(&wc);
}
InitInstance(HINSTANCE hInstance,int nCmdShow){
HWND hwnd;
HWND hwndCloseButton;
hwnd = CreateWindow(
"MainWClass",
"Sample",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
(HWND)NULL,
(HMENU)NULL,
hInstance,
(LPVOID)NULL);
if(!hwnd)
return FALSE;
hwndCloseButton = CreateWindow(
"BUTTON",
"CLOSE",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
100,
100,
100,
80,
hwnd,
(HMENU)NULL,
hInstance,
(LPVOID)NULL);
if(!hwndCloseButton)
return FALSE;
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
return TRUE;
}
H. 如何用C語言編寫一個窗體應用程序
最好不要,稍微麻煩一點的窗體程序你就搞不定,而且資料非常少
比較合算的應該是C#的WPF, VC的MFC,都不是C語言的