国产一区二区在线观看视频_96av麻豆蜜桃一区二区_caoporn国产一区二区_国产精品1区2区3区_91麻豆精东视频_蜜臀久久99精品久久久久久9_不卡免费追剧大全电视剧网站_狠狠色综合日日_成人在线综合网_91在线视频官网

首頁 > 編程 > Java > 正文

WinAPI簡單入門

2019-09-06 23:33:14
字體:
來源:轉載
供稿:網友

                    不要覺得奇怪,雖然我們擁有眾多“所見即所得”的編程方式來開發眾多界面精美的應
用程序,這些可視化的編程環境提供了大量的類庫和控件,但是在開發者享受方便的同時,
他們的手腳已經不知不覺的受到了限制,有很多深入到Windows內部的操作它們無法完成,
為什么?因為所用的類庫不支持。

  事實上這些類庫與控件都是架構在Window API的基礎上面的,API即 Application
Programming Interface -- 應用編程接口 的縮寫,它不僅為應用程序所調用,同時也是
Windows的一部分,Windows自身的運行也調用這些API函數。要了解如何使用API就必須了
解一些Windows的運行機制。

  簡單地說,Windows是由事件驅動的搶占式多任務操作系統。事件驅動是相對于過程驅
動而言的,它改變了原來文件的順序執行方式;Windows既然是多任務系統,就必須能同時
處理多個事件,系統為應用程序生成一個消息隊列,消息在上面被張貼和發送,應用程序只
要從其消息隊列中取出消息,然后一一執行就可以了。

  現在,我將使用最最基本的范例程序 HelloWin 來說明WIN32 API的運行機制

首先,一個程序一定要有進入點,Win32 App的進入點函數的名稱是WinMain,它的原型如下
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)


hInstance是所謂的“實例句柄”,它是一個數值,當程序在Windows下運行的時候,它被用
來唯一的標示這個程序,雖然用戶可能同時運行多個同一個程序,即運行多個“實例”,我
們可以看到,每一個實例都有不同的hInstance值。

hPrevInstance,簡單地說就是沒用…它是存在于16位Windows程序中的,在編寫
Windows 9x/NT/2000 程序的時候,總應該是NULL。

szCmdLine是一個指針,指向一個以0為終結的字串,里面包含傳給該程序的命令行參數,
如果想要讓程序處理命令行,那么這個參數就有用了。

iCmdShow參數是一個數值,指示窗口將如何被顯示,這個數值由在Windows下運行該程序的
程序所決定,通常是SW_SHOWNORMAL。

接下來是注冊一個窗口類,窗口總是從窗口類的基礎上創建的,窗口類用以標示處理窗口消
息的窗口過程,注冊窗口類時使用 RegisterClassEx() 函數,它只需要一個參數,一個指向
類型為 WNDCLASSEX 的結構指針。

具體注冊初始是這樣的:
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);     //結構的大小

wcex.style = CS_HREDRAW | CS_VREDRAW; //類風格
wcex.lpfnWndProc = (WNDPROC)WndProc;  //窗口類的窗口過程
wcex.cbClsExtra = 0;            //在類結構中預留的空間
wcex.cbWndExtra = 0;           //在Windows內部保存的窗口結構中預留的空間
wcex.hInstance = hInstance;        //程序的實例句柄
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_EXAMPLE);  //程序圖標
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);         //結構的大小
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);    //指定窗口的背景顏色
wcex.lpszMenuName = (LPCSTR)IDC_EXAMPLE;         //菜單
wcex.lpszClassName = szWindowClass;             //類名,和程序名相同
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);    //也是程序圖標

return RegisterClassEx(&wcex);

接下來,定義一個HWND,然后使用 CreateWindow() 函數,原型如下:
HWND CreateWindow(
  LPCTSTR lpClassName,    // 窗口類名
  LPCTSTR lpWindowName,  // 窗口標題
  DWORD dwStyle,       // 窗口風格
  int x,             // 初始x
  int y,             // 初始y
  int nWidth,          // 窗口寬
  int nHeight,         // 窗口高
  HWND hWndParent,     // 父窗口句柄
  HMENU hMenu,       // 菜單句柄
  HINSTANCE hInstance,   // 實例句柄
  LPVOID lpParam       // 創建參數
);

在 CreateWindow() 調用返回之后,Windows內部已經創建了這窗口。但是窗口并為顯示,
還需要兩個調用,一個是 ShowWindow(hwnd, iCmdShow):第一個參數是剛剛創建的窗口
句柄,第二個參數是傳遞給WinMain的nCmdShow;另一個是 UpdateWindow(hwnd) ,導致
客戶區域被繪制。

接下來,程序通過執行一塊被稱為“消息循環”的代碼從消息隊列中取出消息

while (GetMessage(&msg, NULL, 0, 0))
{
  if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
}

消息循環以 GetMessage 開始,它從消息隊列中取出一條消息,只要從消息隊列中取出消
息的 Message 域不為 WM_QUIT,GetMessage 就返回一個非零值,否則將導致程序退出
消息循環,然后程序中止,返回 msg 結構的 wParam 參數。在循環中,TranslateMessage
將 msg 結構的內容進行修改,而 DispatchMessage 找出準備調用的窗口過程。

上面進行的僅僅是準備性工作:注冊窗口類、創建窗口、顯示窗口、進入消息循環取出消息
而實際的動作都發生在窗口過程中。

LRESULT CALLBACK WndProc(HWND hWnd, //剛剛創建的窗口句柄
  UINT message,           //得到的消息
  WPARAM wParam,
  LPARAM lParam           //消息的進一步詳細的參數
)

在程序中窗口過程通常是命名為 WndProc 的函數,其實窗口過程可以任意的命名,一個
Windows程序可以包含多個窗口過程,一個窗口過程總是與調用了 RegisterClassEx 注冊的
窗口類相關聯,CreateWindow 函數根據窗口類來創建窗口,但是一個窗口類可以被用來創
建多個窗口。


消息收到之后,接下來應該根據消息的不同來進行處理
switch(message)
{
 case …:
 …
 …

HelloWin程序只需要處理兩條消息,即 WM_PAINT 和 WM_DESTROY。

WM_PAINT 消息在Windows程序中的地位極其重要,當窗口客戶區的一部分或者全部變為
“無效”,必須進行刷新的時候,將由這條消息通知程序。

為什么客戶區域會變得無效呢?在創建窗口的時候,整個客戶區都是無效的,因為還沒有畫
任何的東西。第一條 WM_PAINT 消息指示窗口過程在窗口上面畫一些東西;還有在用戶改
變了窗口的大小之后,客戶區域重新變得無效,除此之外最小化窗口之后再還原、窗口的一
部分被覆蓋,都會引發這條消息。

WM_DESTROY消息則是當用戶按下“關閉”按鈕的時候被觸發,標準的處理方法是調用
PostQuitMessage 將一條 WM_QUIT 消息插入消息隊列,這將使得 GetMessage 函數調用
返回0,從而退出消息循環,結束整個程序。

其實,從上面可以看出,Windows程序的這種運行機制并不是很難理解,真正困難的是不知
道調用什么函數去完成想要的操作,以及怎樣調用那些函數,從而靈活的進行底層API程序
開發,這是一個循序漸進的積累過程,沒有捷徑可走的。請各位一定要記住。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

国产一区二区在线观看视频_96av麻豆蜜桃一区二区_caoporn国产一区二区_国产精品1区2区3区_91麻豆精东视频_蜜臀久久99精品久久久久久9_不卡免费追剧大全电视剧网站_狠狠色综合日日_成人在线综合网_91在线视频官网
懂色av一区二区夜夜嗨| 国产a区久久久| 久久成人免费网站| 国产麻豆精品久久一二三| 国产老肥熟一区二区三区| 成人一级黄色片| 日韩精品电影在线| 国产iv一区二区三区| 人禽交欧美网站| 国产成人午夜高潮毛片| 青青草91视频| 北岛玲一区二区三区四区| 另类小说一区二区三区| 成人精品gif动图一区| 蜜桃精品视频在线| 成人精品视频.| 国产精品性做久久久久久| 99re热这里只有精品视频| 精品一区二区在线看| a美女胸又www黄视频久久| 精品亚洲porn| 蜜臀久久99精品久久久久宅男 | 国产一区亚洲一区| av一区二区三区黑人| 精东粉嫩av免费一区二区三区| www.欧美色图| 国产高清精品网站| 国内欧美视频一区二区| 日韩在线一区二区三区| 成人av电影免费观看| 国产在线精品免费av| 免费人成在线不卡| 91麻豆6部合集magnet| 粉嫩嫩av羞羞动漫久久久| 狠狠久久亚洲欧美| 麻豆国产欧美一区二区三区| 91在线视频在线| 成人免费高清视频| 国产91在线看| 国产宾馆实践打屁股91| 国产老妇另类xxxxx| 国产麻豆一精品一av一免费| 韩国女主播成人在线| 麻豆精品一区二区av白丝在线| 91免费版在线| 日韩av一级片| 免费在线观看精品| 久久精品国产久精国产爱| 日本欧美韩国一区三区| 日韩电影在线观看网站| 日本中文在线一区| 奇米精品一区二区三区在线观看 | 麻豆精品在线看| 美女视频一区二区三区| 久久精品久久久精品美女| 免费成人美女在线观看| 久久国产麻豆精品| 国内精品视频一区二区三区八戒| 日韩国产精品大片| 秋霞影院一区二区| 久久国产夜色精品鲁鲁99| 久久精品国产秦先生| 狠狠色狠狠色综合系列| 国产成人免费视频精品含羞草妖精| 国产福利一区二区三区视频在线 | 激情伊人五月天久久综合| 另类人妖一区二区av| 另类小说视频一区二区| 国产美女娇喘av呻吟久久| 成人性视频网站| 丝袜亚洲另类欧美综合| 麻豆精品在线视频| 成人性视频网站| 天堂一区二区在线| 久久精品国产77777蜜臀| 国产一区二区三区免费在线观看| 国产a区久久久| 日本欧美在线看| 国产91在线观看丝袜| 奇米影视一区二区三区| 国产99久久久国产精品| 蜜臀国产一区二区三区在线播放| 国产九色精品成人porny| 99视频一区二区| 韩国理伦片一区二区三区在线播放| 成人涩涩免费视频| 蜜桃av一区二区| 粉嫩aⅴ一区二区三区四区五区| 91免费观看视频| 国产精品一二三区| 丝袜诱惑亚洲看片| 国产精品一卡二| 日韩vs国产vs欧美| 波多野洁衣一区| 国产精品夜夜嗨| 免费观看在线色综合| 成人在线综合网| 九九热在线视频观看这里只有精品| 成人激情小说网站| 久久99精品国产.久久久久久| a级精品国产片在线观看| 加勒比av一区二区| 日韩av中文字幕一区二区| 成人不卡免费av| 韩国毛片一区二区三区| 蜜桃视频一区二区三区 | 波多野结衣视频一区| 精品在线观看视频| 肉色丝袜一区二区| 成人黄色a**站在线观看| 精品一区二区三区在线观看| 91老司机福利 在线| 福利一区二区在线| 狠狠色狠狠色合久久伊人| 日本午夜一区二区| 97精品电影院| caoporm超碰国产精品| 岛国精品一区二区| 国产福利一区二区| 国产一区91精品张津瑜| 久久99这里只有精品| 奇米888四色在线精品| jvid福利写真一区二区三区| 国产成a人无v码亚洲福利| 国产精品综合久久| 国产乱理伦片在线观看夜一区| 久久成人av少妇免费| 蜜臀91精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩成人av影视| 日韩精品一二三四| 日本不卡一区二区| 日韩成人免费电影| 精品一区二区在线视频| 激情综合色播五月| 国产成人免费高清| 不卡的看片网站| 99re6这里只有精品视频在线观看| 成人a区在线观看| av一本久道久久综合久久鬼色| 97se亚洲国产综合自在线不卡| 粉嫩嫩av羞羞动漫久久久| 成人综合婷婷国产精品久久| 成人黄色a**站在线观看| 91丨porny丨户外露出| 91蝌蚪porny成人天涯| 91香蕉视频在线| 日本怡春院一区二区| 久久国产精品区| 国产乱码精品一区二区三区av| 成人综合在线观看| 日韩成人精品在线| 国产麻豆精品一区二区| 成人高清在线视频| 奇米888四色在线精品| 国产乱人伦精品一区二区在线观看| 国产成人av一区二区| 94色蜜桃网一区二区三区| 麻豆精品久久精品色综合| 国产高清精品网站| 日本中文字幕一区| 国产aⅴ综合色| 日韩经典中文字幕一区| 国产一区日韩二区欧美三区| 成人国产在线观看| 久久激情综合网| 成人精品鲁一区一区二区| 免费人成精品欧美精品| 国产精品一级在线| 免费观看一级特黄欧美大片| 丰满少妇久久久久久久| 美女精品一区二区| 粉嫩一区二区三区性色av| 蜜桃视频一区二区三区在线观看 | 国产一区二区在线免费观看| www.亚洲在线| 国产精选一区二区三区| 日产国产高清一区二区三区| 成熟亚洲日本毛茸茸凸凹| 九色综合国产一区二区三区| 91小视频免费看| 国产不卡视频在线观看| 精品在线一区二区| 视频精品一区二区| 成人激情午夜影院| 国产传媒欧美日韩成人| 久久国内精品视频| 日韩高清在线一区| 波波电影院一区二区三区| 国产乱色国产精品免费视频| 久久机这里只有精品| 日韩在线一二三区| 不卡电影免费在线播放一区| 国产精品系列在线播放| 精品中文字幕一区二区| 免费高清成人在线| 日韩av电影免费观看高清完整版| 成人免费不卡视频| 成人免费精品视频| 国产成人精品在线看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91色婷婷久久久久合中文| 大桥未久av一区二区三区中文| 国产精品一二一区| 国产激情精品久久久第一区二区| 久久国产麻豆精品| 国模一区二区三区白浆| 麻豆成人久久精品二区三区小说| 91色porny| 日韩精品欧美成人高清一区二区| 93久久精品日日躁夜夜躁欧美| 99r国产精品| 日韩中文字幕91| 蜜桃av噜噜一区| 日本不卡视频在线| 麻豆高清免费国产一区| 激情久久五月天| 国产精品一区二区在线播放| 国产一区二区三区久久久| 国产一区二区三区精品视频| 国产精品原创巨作av| 国产成人在线免费| 成人午夜在线播放| 99久久久久久| 日韩高清电影一区| 裸体在线国模精品偷拍| 国产伦精品一区二区三区免费 | 日韩福利视频网| 免费欧美日韩国产三级电影| 久久成人精品无人区| 国产乱码一区二区三区| 粉嫩欧美一区二区三区高清影视 | 久久av老司机精品网站导航| 国精品**一区二区三区在线蜜桃| 国产不卡视频一区二区三区| 成av人片一区二区| 日韩不卡免费视频| 国产精品资源网| 99re亚洲国产精品| 精品亚洲免费视频| 99久久免费精品| 国产在线乱码一区二区三区| 国产ts人妖一区二区| 91丨porny丨首页| 韩国av一区二区三区| 北岛玲一区二区三区四区| 蜜桃在线一区二区三区| 国产成人在线观看| 日本美女一区二区| 成人午夜av电影| 青青草91视频| 不卡一区二区三区四区| 久久激五月天综合精品| av爱爱亚洲一区| 国内精品在线播放| 91在线视频免费观看| 久久超碰97中文字幕| 不卡高清视频专区| 国产精一区二区三区| 91麻豆精品在线观看| 国产精品综合二区| 日韩 欧美一区二区三区| 丰满白嫩尤物一区二区| 九九国产精品视频| 丝袜国产日韩另类美女| 国产毛片精品一区| 久久精品国产久精国产| 99久久久无码国产精品| 国产成人午夜99999| 精品一区二区在线视频| 日韩av在线播放中文字幕| 成人涩涩免费视频| 国产精品影视天天线| 免费在线一区观看| 日韩电影免费在线看| 不卡视频在线观看| 成人午夜激情片| 国产传媒欧美日韩成人| 韩国女主播成人在线观看| 麻豆专区一区二区三区四区五区| 91蜜桃视频在线| a美女胸又www黄视频久久| 国产成人精品一区二区三区网站观看| 美女视频黄 久久| 日韩精品每日更新| 日韩精品三区四区| 视频一区在线视频| 97久久精品人人澡人人爽| 波多野结衣一区二区三区| 成人免费视频app| 成人免费看视频| 成人aa视频在线观看| 国产ts人妖一区二区| 国产精品一区二区久久不卡| 激情五月播播久久久精品| 麻豆国产精品视频| 九九久久精品视频| 精品无码三级在线观看视频| 韩国v欧美v亚洲v日本v| 国内精品第一页| 国产精品1区2区3区| 国产精品正在播放| 岛国av在线一区| 波多野结衣精品在线| 91在线视频在线| 男人操女人的视频在线观看欧美| 蜜臀国产一区二区三区在线播放| 麻豆精品一区二区三区| 国产一区二三区| 丁香激情综合五月| 天堂一区二区在线| 开心九九激情九九欧美日韩精美视频电影| 麻豆一区二区三区| 国产成人啪免费观看软件| 成人午夜电影小说| 日韩av中文字幕一区二区| 久久国产福利国产秒拍| 国产黑丝在线一区二区三区| 丰满白嫩尤物一区二区| 天堂在线亚洲视频| 久久99热这里只有精品| 国产精品羞羞答答xxdd| 99国内精品久久| 久久精品国产99久久6| 国产成人精品免费看| 天堂va蜜桃一区二区三区漫画版| 日本特黄久久久高潮| 国产在线一区观看| 成人一区二区三区视频| 日本午夜精品视频在线观看| 国产伦精品一区二区三区免费迷| av一区二区三区黑人| 老色鬼精品视频在线观看播放| 国产成人精品aa毛片| 日韩avvvv在线播放| 国产成人在线视频免费播放| 日韩激情一区二区| 国产一区二区三区免费看| 91在线观看视频| 国产精品中文字幕欧美| 91日韩在线专区| 国产精品一区二区男女羞羞无遮挡 | 99久久精品国产麻豆演员表| 日本sm残虐另类| 成人激情动漫在线观看| 九色|91porny| 91亚洲精品久久久蜜桃| 国产曰批免费观看久久久| 99re视频这里只有精品| 国产又黄又大久久| 日韩av中文字幕一区二区三区| 国产精品资源在线观看| 麻豆精品一区二区综合av| 粉嫩aⅴ一区二区三区四区五区| 秋霞影院一区二区| 不卡一区二区在线| 激情综合色播五月| 蜜臀av一区二区三区| 91最新地址在线播放| 国v精品久久久网| 激情深爱一区二区| 男女性色大片免费观看一区二区 | 成人免费黄色大片| 国产精品一区二区在线看| 三级欧美在线一区| av一二三不卡影片| 风间由美性色一区二区三区| 国模娜娜一区二区三区| 另类人妖一区二区av| 日一区二区三区| 99riav久久精品riav| 成人a区在线观看| 丰满白嫩尤物一区二区| 国产一区二区三区黄视频| 麻豆精品一区二区综合av| 日本系列欧美系列| 日本少妇一区二区| 男女男精品网站| 免费xxxx性欧美18vr| 人禽交欧美网站| 免费成人你懂的| 久久精品国产在热久久| 美女脱光内衣内裤视频久久影院| 秋霞影院一区二区| 麻豆视频观看网址久久| 久久精品国产一区二区三| 蜜臀91精品一区二区三区| 另类综合日韩欧美亚洲| 精品一区二区三区香蕉蜜桃| 另类成人小视频在线| 极品少妇一区二区三区精品视频 | 成人av在线一区二区| 高清shemale亚洲人妖| 成人深夜视频在线观看| 99久久综合精品| 日韩精品视频网| 激情综合网最新| 国产成人av福利| 99久久婷婷国产精品综合| 日韩激情视频在线观看|