小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

day01

 拳毛弧的藏經(jīng)閣 2014-04-07

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);      // 聲明窗口過程函數(shù),后面有定義

/*程序入口點WinMain函數(shù)*/
int WINAPI WinMain(HINSTANCE hInstance,          // 第一個參數(shù)為程序?qū)嵗浔?,用于?biāo)識該程序
       HINSTANCE hPrevInstance,         // 第二個參數(shù)用于同一程序多次運(yùn)行時的標(biāo)識,但在win32中不再使用,為NULL
       LPSTR lpCmdLine,           // 第三個參數(shù)為程序運(yùn)行參數(shù)
       int nShowCmd)           // 第四個參數(shù)為程序運(yùn)行的初始狀態(tài)(最小化、正常、最大化)
{
 static TCHAR szAppName[] = TEXT("HelloWin");         // 定義一個字符串,保存程序的名字,自由定義
 HWND hwnd;                  // 定義一個句柄,以備后面創(chuàng)建窗體時使用
 MSG msg;                  // 定義一個消息結(jié)構(gòu),用于后面的消息循環(huán)
 WNDCLASS wndclass;                // 定義一個窗口類結(jié)構(gòu)體,該結(jié)構(gòu)體名為wndclass,并在下面幾行設(shè)置結(jié)構(gòu)體內(nèi)的數(shù)據(jù)
 wndclass.style = CS_HREDRAW | CS_VREDRAW;          // CS_HREDRAW為水平方向尺寸,CS_VREDRAW為垂直方向尺寸,這兩個標(biāo)識用于后面調(diào)整窗體大小時,中央文本能任意顯示在中央
 wndclass.lpfnWndProc = WndProc;             // 將這個窗口類的過程設(shè)置為WndProc過程函數(shù),這個過程處理基于這個窗口類創(chuàng)建的所有窗口的全部消息,lpfnWndProc為指向WndProc函數(shù)的指針
 wndclass.cbClsExtra = 0;              // 用于在類結(jié)構(gòu)和windows內(nèi)部保存的窗口結(jié)構(gòu)中預(yù)留一些額外空間,程序可以根據(jù)需要來使用預(yù)留的空間
 wndclass.cbWndExtra = 0;              // 同上
 wndclass.hInstance =  hInstance;            // 程序的實例句柄,由于該窗口屬于該程序,這里與WinMain函數(shù)中的第一個參數(shù)一致
 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);        // 加載圖標(biāo)供應(yīng)用程序使用,這里使用系統(tǒng)自帶的預(yù)定義的圖標(biāo),第一個參數(shù)為NULL,第二個參數(shù)IDI_APPLICATION是一個簡單的窗口小圖標(biāo),如果要用自己準(zhǔn)備的圖標(biāo),第一個參數(shù)為程序?qū)嵗浔?,第二個參數(shù)標(biāo)識圖標(biāo)
 wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);         // 加載鼠標(biāo)指針供程序使用, LoadCursor函數(shù)加載一個預(yù)定義的鼠標(biāo)光標(biāo),光標(biāo)樣式為IDC_ARROW,并返回該光標(biāo)的句柄,這樣,當(dāng)我們將鼠標(biāo)放到窗體客戶區(qū)上時,鼠標(biāo)變成一個小箭頭,若果第二個參數(shù)是其他樣式,則鼠標(biāo)放在客戶區(qū)上時,顯示不一樣的光標(biāo)
 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);     // 獲取繪制窗口背景的刷子,GetStockObject函數(shù)返回一個刷子句柄,參數(shù)WHITE_BRUSH為白色刷子,所以這里返回的是白色刷子句柄,也可以設(shè)置其他顏色,這決定著窗口客戶端的背景顏色
 wndclass.lpszMenuName = NULL;             // 指定窗口類菜單,這里不需要菜單,為空
 wndclass.lpszClassName = szAppName;            // 設(shè)置一個類名,自由定義,這里我們定義為開頭定義的szAppName[]
 RegisterClass(&wndclass);              // 注冊剛剛定義的窗口類

 /*根據(jù)窗口類創(chuàng)建一個窗口,返回一個窗口句柄保存在hwnd里,同時下面的參數(shù)指定有關(guān)該窗口更多信息*/
 hwnd = CreateWindow(szAppName,             // 第一個參數(shù)為程序注冊的窗口類的名稱
      TEXT("The Hello Program"),         // 第二個參數(shù)為窗口標(biāo)題欄的內(nèi)容
      WS_OVERLAPPEDWINDOW,          // 第三個參數(shù)為窗口風(fēng)格,這里WS_OVERLAPPEDWINDOW是一種標(biāo)準(zhǔn)的窗口風(fēng)格,它有一個標(biāo)題欄,標(biāo)題欄左邊有一個系統(tǒng)菜單框,標(biāo)題欄右邊有最小化、最大化和關(guān)閉按鈕,四周還有表示窗口大小的邊框
      CW_USEDEFAULT,            // 第四個參數(shù)為窗口在屏幕上的水平位置,這里使用默認(rèn)位置
      CW_USEDEFAULT,            // 第五個參數(shù)為窗口在屏幕上的垂直位置,這里也是用默認(rèn)位置
      CW_USEDEFAULT,            // 第六個參數(shù)為窗口寬度,這里使用默認(rèn)位置
      CW_USEDEFAULT,            // 第七個參數(shù)為窗口高度,這里也是用默認(rèn)位置
      NULL,              // 第八個參數(shù)為父窗口句柄,由于這個程序只有一個窗口,這個窗口就是最高級窗口,所以這里留空
      NULL,              // 第九個參數(shù)為窗口菜單句柄,這里沒有菜單,也留空
      hInstance,             // 第十個參數(shù)為程序?qū)嵗浔c前面一樣都為hInstance
      NULL);              // 最后為創(chuàng)建參數(shù)指針為NULL,可以用這個指針訪問以后想要引用的程序中的數(shù)據(jù)
 ShowWindow(hwnd, nShowCmd);              // 在屏幕上顯示該窗口,參數(shù)hwnd即為剛剛創(chuàng)建好的窗口句柄,nShowCmd即WinMain函數(shù)的第四個參數(shù),決定窗口初始的狀態(tài),正常、最小化或最大化
 UpdateWindow(hwnd);                // 使窗口刷新自身

 while (GetMessage(&msg, NULL, 0, 0))           // 進(jìn)入消息循環(huán),GetMessage函數(shù)每執(zhí)行一次從消息隊列中取出一個消息,參數(shù)NULL,0,0表示程序接受屬于它的所有窗口的所有消息
 {
  TranslateMessage(&msg);              // 將msg結(jié)構(gòu)傳遞給windows,轉(zhuǎn)換一些鍵盤消息
  DispatchMessage(&msg);              // 該函數(shù)將msg結(jié)構(gòu)傳給windows,然后windows將該消息發(fā)送給適當(dāng)?shù)拇翱谶^程,讓它處理,本程序中窗口過程即WndProc函數(shù)
 }
 return msg.wParam;                // 當(dāng)退出消息循環(huán)后,返回msg結(jié)構(gòu)的wParam數(shù)據(jù),該數(shù)據(jù)是傳遞給PostQuitMessage函數(shù)的值(通常是0)
}

/*定義窗口過程,窗口過程確定了在窗口的客戶區(qū)域顯示什么,以及窗口怎樣響應(yīng)用戶的輸入*/
LRESULT CALLBACK WndProc(HWND hwnd,             // 第一個參數(shù)hwnd是接收消息的窗口的句柄
       UINT message,            // 第二個參數(shù)message是標(biāo)識該消息的數(shù)字
       WPARAM wParam,            // 32位的消息參數(shù),提供了關(guān)于消息的更多信息
       LPARAM lParam)            // 32位的消息參數(shù),提供了關(guān)于消息的更多信息
{
 HDC hdc;                     // 定義一個設(shè)備描述表句柄,這里指顯示輸入設(shè)備句柄
 PAINTSTRUCT ps;                 // 該結(jié)構(gòu)體內(nèi)包含了一些窗口過程,用來刷新窗口客戶區(qū)的內(nèi)容
 RECT rect;                  // 定義一個RECT結(jié)構(gòu)體,用于后面保存窗口客戶區(qū)域的尺寸

 switch (message)                // 處理消息,這里我們定義的WndProc過程窗口函數(shù)只處理兩種消息
 {
 case WM_PAINT:                 // 當(dāng)我們調(diào)整窗口邊框時,整個窗口將變成無效的,窗口過程收到此WM_PAINT消息,接下來我們需要重新繪制窗口,這也是使得中央文本能一直保持在中央的原因
  hdc = BeginPaint(hwnd, &ps);            // 開始窗口繪制,第一個參數(shù)為程序的窗口句柄,第二個參數(shù)為指向PAINTSTRUCT結(jié)構(gòu)體的指針,該結(jié)構(gòu)體內(nèi)包含一些窗口過程,用來刷新窗口客戶區(qū)的內(nèi)容。BeginPaint函數(shù)返回一個設(shè)備描述表句柄,保存在hdc里
  GetClientRect(hwnd, &rect);             // 獲取窗口客戶區(qū)的尺寸,第二個參數(shù)為之前定義的RECT結(jié)構(gòu)體,用于保存窗口客戶區(qū)域的尺寸
  DrawText(hdc, TEXT("Hello, Windows XP!"), -1, &rect,      // 顯示窗口中心文本,第一個參數(shù)為設(shè)備表描述句柄,第二個參數(shù)為要顯示的文本字符串,第三個參數(shù)為-1,指示字符串是以字符0結(jié)束的,第四個參數(shù)是保存客戶區(qū)尺寸的結(jié)構(gòu)體
   DT_SINGLELINE|DT_CENTER|DT_VCENTER);
  EndPaint(hwnd, &ps);              // 結(jié)束窗口繪制,參數(shù)同開始窗口繪制
  return 0;
 case WM_DESTROY:                // 單機(jī)右上角關(guān)閉按鈕時觸發(fā)此消息
  PostQuitMessage(0);               // 在消息隊列中插入一條“退出”消息,這使得WinMain函數(shù)退出消息循環(huán),程序終止
  return 0;
 }
 return DefWindowProc(hwnd, message, wParam, lParam);       // DefWindowProc為默認(rèn)消息處理函數(shù),窗口過程不處理的消息傳遞給該函數(shù)
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多