VC深入詳解 第一個WINMAIN程式
#include
#include
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance當前例項
HINSTANCE hPrevInstance, // handle to previous instance前一個例項
LPSTR lpCmdLine, // command line 字串指標
int nCmdShow // show state 指定視窗的顯示方式最大最小隱藏
)
{
WNDCLASS wndcls; //P6
wndcls.cbClsExtra=0; //1註冊視窗類時追加記憶體空間用於儲存附加資訊
wndcls.cbWndExtra=0; //2建立視窗類時追加記憶體空間用於儲存附加資訊
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); //3畫刷控制程式碼視窗重繪時指定畫刷擦除視窗背景&顏色
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); //4游標資源控制程式碼
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR); //5圖示
wndcls.hInstance=hInstance; //6應用例項控制程式碼,由WinMain函式傳進來
wndcls.lpfnWndProc=WinSunProc; //7指向視窗過程回撥函式
wndcls.lpszClassName="sunxin2006"; //8指定選單資源名字
wndcls.lpszMenuName=NULL; //9視窗名
wndcls.style=CS_HREDRAW | CS_VREDRAW; //A視窗樣式
RegisterClass(&wndcls); //
HWND hwnd; //建立物件變數
hwnd=CreateWindow("sunxin2006","http://www.sunxin.org",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL); //建立的物件變數存放資料
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg; //訊息變數
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg); //轉換字元訊息
DispatchMessage(&msg); //將訊息回傳給作業系統
}
return msg.wParam;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR: //字元訊息
char szChar[20];
sprintf(szChar,"您輸入的字元程式碼為 %d",wParam); //字元列印
MessageBox(hwnd,szChar,"char",0);
break;
case WM_LBUTTONDOWN: //左鍵
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"程式設計師之家",strlen("程式設計師之家")); //文字輸出
//ReleaseDC(hwnd,hdc);
break;
case WM_RBUTTONDOWN: //右鍵
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc1;
hdc1=GetDC(hwnd);
TextOut(hdc1,5,150,"誰的心 落在水鄉忘了收",strlen("誰的心 落在水鄉忘了收")); //文字輸出
//ReleaseDC(hwnd,hdc);
break;
case WM_PAINT: //重繪視窗
HDC hDC;
PAINTSTRUCT ps; //
hDC=BeginPaint(hwnd,&ps); //開始重繪
TextOut(hDC,0,0,"http://www.sunxin.org",strlen("http://www.sunxin.org"));//文字輸出
EndPaint(hwnd,&ps); //重繪結束
break;
case WM_CLOSE: //關閉視窗
if(IDYES==MessageBox(hwnd,"是否真的結束?","message",MB_YESNO))//文字輸出
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY: //銷燬視窗
PostQuitMessage(0); //傳送訊息關閉視窗
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam); //
}
return 0;
}
Win32 Application 是標準 windows程式,完全擁有windows的特性,也即我們常說的視窗應用程式!它通過GUI(Graphics User Interface圖形使用者介面)可以把視窗介面做得比較個性化,比如圓形的、不規則形狀的等等,另外,我們還可以通過滑鼠點選來完成控制。所以說它是基於WINDOWS平臺的32位開發環境開發應用程式(即,SDK程式)。入口函式為WinMain()。
Win32 Console Application(win32控制檯應用程式)往往是像MS-DOS視窗(XP中叫命令提示符)的樣子出現,我們得用鍵盤輸入各種命令來使用它,它與純dos程式區別是:它是32位的;或者叫CUI(Character User Interface字元使用者介面)。console程式以main()為入口,可以訪問部分windows API函式,比如建立視窗、對話方塊等等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27660822/viewspace-776208/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VC++深入詳解(12):網路程式設計C++程式設計
- VC++深入詳解--之複習筆記(一)C++筆記
- VC++深入詳解--之複習筆記(二)C++筆記
- VC++串列埠通訊程式設計詳解C++串列埠程式設計
- VC++視覺化程式設計第一個程式設計例項出錯C++視覺化程式設計
- 解讀第一個C++程式C++
- 從WinMain開始AI
- 第一個spark應用開發詳解(java版)SparkJava
- JavaScript之原型深入詳解JavaScript原型
- VC常用資料型別使用轉換詳解資料型別
- 一個解決VC++程式國際化的類,解決亂碼問題C++
- WinMain是如何被呼叫的AI
- CSDN周賽第40期:贏副總裁簽名實體書和《VC++深入詳解(第3版)》C++
- 深入Nginx + PHP 快取詳解NginxPHP快取
- async/await使用深入詳解AI
- Blocks深入理解和詳解BloC
- JavaScript之this指標深入詳解JavaScript指標
- 深入詳解SQL中的NullSQLNull
- VC常用資料型別使用轉換詳解 (轉)資料型別
- C++原始碼遊戲程式設計---WinMain()函式集(轉)C++原始碼遊戲程式設計AI函式
- MyBatis第一個程式MyBatis
- 第一個Java程式Java
- 改良第一個程式
- 深入理解Emoji(三) —— Emoji詳解
- 第一個spring程式Spring
- 第一個程式Hello world
- 第一個jsp程式JS
- 第一個Python程式Python
- java的第一個程式Java
- 第一個C++程式C++
- 深入瞭解Java社群程式Java
- 深入mysql基礎知識的詳解MySql
- 深入SQLite基本操作的總結詳解SQLite
- 深入詳細瞭解synchronized底層原理synchronized
- 深入百度蜘蛛IP段詳解
- pjlib深入剖析和使用詳解
- JavaScript中typeof和instanceof深入詳解JavaScript
- MVCC詳解,深入淺出簡單易懂MVC