日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > 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程序
開發,這是一個循序漸進的積累過程,沒有捷徑可走的。請各位一定要記住。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

99中文字幕一区| 天天综合天天综合| 欧美天堂一区二区| 亚洲一区在线观看网站| 精品对白一区国产伦| 欧美成人精品在线| 日韩欧美综合在线| av最新网址| 欧美日韩亚洲第一| 欧美日韩高清一区二区不卡| 欧美日韩在线精品一区二区三区激情综| av午夜在线| 二区视频在线观看| 国产无遮挡在线视频免费观看| 麻豆精品99| 亚洲国产欧美久久| 中文av字幕一区| 欧美日韩国产中文| 极品久久久久久| 综合图区亚洲白拍在线| 成人欧美亚洲| 中文字幕欧美国内| 国产欧美亚洲一区| 亚洲图片小说综合| 日韩精品在线私人| 日韩视频在线观看视频| 精品全国在线一区二区| 日韩精品免费观看视频| 亚洲成av人片| 日韩欧美中文在线视频| 免费日韩精品中文字幕视频在线| 中文字幕在线精品| 中文字幕久久av| 精品综合久久久久| 精品九九久久| 日韩精品综合在线| 精品久久人人做人人爽| 日韩欧美亚洲视频| 欧美日韩一级视频| 日本国产在线视频| 欧美一级日韩一级| 日韩欧美一二三| 一级片免费网站| 中文字幕亚洲国产| 国产在线黄色| 欧美日韩国产在线看| av午夜在线| 欧美婷婷精品激情| 欧美一级欧美三级在线观看| 欧美日韩国产免费观看| 日韩中文字幕在线观看视频| 一区二区中文视频| a√免费观看在线网址www| 欧美日韩中文字幕日韩欧美| 伊人网站在线| 黄色在线播放网站| 午夜成人鲁丝片午夜精品| 久久99久久久久| 蜜桃精品视频| 1区2区3区在线视频| 亚洲a一级视频| 中文字幕一区不卡| 欧美日韩久久不卡| www日韩在线观看| www.狠狠干| 免费网站看黄yyy222| 日本中文字幕在线观看| av免费观看网站| 亚洲一区导航| 国产一区成人| 亚洲va韩国va欧美va精品| 中文字幕综合在线| 国产亚洲二区| 欧美日韩一二三四| 亚洲一区资源| 日韩精品在线观| 久久久精品免费免费| 国产日韩成人精品| 91久久精品在线| 国产网站av| 欧美日韩中文| 日韩在线视频网| 日韩激情一区| 91精品国产91久久| 福利在线国产| 国产v日产∨综合v精品视频| 欧美日韩高清一区二区| 欧美日韩免费精品| 国产欧美三级| 99久久精品国产亚洲| 91精品在线观看国产| 欧美日韩中文字幕| 亚洲丝袜一区| 国产三级精品网站| 免费视频久久| 欧美日韩乱国产| 日韩欧美色综合网站| 日韩在线三区| 欧美日韩亚洲不卡| 91精品国产91久久| 日韩欧美一级在线播放| 欧美色视频一区二区三区在线观看| 日韩不卡一二三区| 中文字幕在线观看网址| 国产一二三精品| 最近高清中文在线字幕在线观看| 欧美日韩中文另类| 中文字幕日韩欧美| 中文亚洲免费| 国产欧美日韩精品高清二区综合区| 内射国产内射夫妻免费频道| 成人精品国产福利| 亚洲国内精品视频| 日本免费在线视频不卡一不卡二| 国产黄色网页| 一区二区不卡久久精品| 欧美 日韩 国产 在线观看| 色综合影院在线| 精品三区视频| 麻豆一区二区99久久久久| 天天摸日日摸狠狠添| 91久久精品国产91性色69| 欧美日韩国产综合久久| 欧美日韩国产一区| 91精品在线视频观看| 欧美国产亚洲一区| 国产三级中文字幕| 中文字幕日韩第一页| 久久精品久久精品国产大片| 国产 欧美 在线| 日韩在线不卡一区| 91蜜桃在线视频| 蜜臀久久精品| 亚洲欧洲在线观看av| 白嫩少妇丰满一区二区| 欧美日韩在线第一页| 99精品一级欧美片免费播放| 又黄又www的网站| 日韩中文字幕在线一区| 欧美日韩高清在线播放| 亚洲欧美小说国产图片| 久久精品免费在线观看| 日韩欧美亚洲国产| 国产999精品在线观看| 日韩欧美99| 免费视频一区三区| 精品欧美日韩在线| 日韩免费精品| 精品免费久久久| 日韩.com| 国产欧美日韩高清| 一区二区三区高清在线| 拍真实国产伦偷精品| 国产乱一区二区| 成年人黄国产| 91精品国产综合久久香蕉最新版| 国产不卡在线| 欧美日韩精品综合| 国产福利精品导航| 欧美啪啪一区| 蜜臀国产一区| 日韩免费视频| 91亚洲国产| 日韩欧美一级视频| 亚洲综合中文字幕在线| av不卡免费看| 久久久久蜜桃| 午夜成人鲁丝片午夜精品| 欧美日韩一二三| 欧美日韩高清| 亚洲图片小说综合| 日韩欧美综合| 欧美黄页在线免费观看| 一级网站免费观看| 日韩久久精品视频| 又黄又www的网站| 99精品视频99| 91 中文字幕| 欧美中文字幕第一页| 精品日韩视频在线观看| 日韩欧美在线精品| 国产在线看一区| 一区二区三区在线不卡| 欧美性生交大片免费| 91精品国产综合久久香蕉的特点| 欧美日韩国产在线看| 热久久精品国产| 中文字幕久久av| 欧美三级网址| 成人精品国产福利| 日本亚洲欧美三级| 人妻一区二区三区免费| 中文字幕 亚洲视频| 日韩欧美中文视频| 欧美一级久久| 国产在线看一区| 日韩 国产 一区| 日韩av中文字幕一区| 成人禁用看黄a在线| 欧美国产综合在线V| 在线国产91| 日韩视频精品在线| 九七久久人人| 日韩视频在线免费播放| 久久久精品网| 精品日韩欧美| 国产成人精品免费在线| 综合图区亚洲白拍在线| 中文字幕一区不卡| 亚洲va久久久噜噜噜久久| 一区二区视频在线| 91欧美日韩在线| 日本黄色一区二区三区| 欧美日韩在线播放一区| 亚洲中文字幕在线一区| 国产一区激情在线| 在线观看免费国产成人软件| 91精品国产丝袜白色高跟鞋| 国产日韩精品在线看| 欧美日韩国产系列| 国产成人精品999在线观看| 成人a在线观看| 日本精品免费观看高清观看| 黄色片免费看| 精品国产欧美日韩不卡在线观看| 日韩精品福利一区二区三区| 日韩不卡在线播放| 日韩视频第二页| 精品国产乱码久久久久久蜜臀| 日本国产在线视频| 欧美日韩国产免费| 一本一道综合狠狠老| 日本免费在线视频不卡一不卡二| www中文字幕| 欧洲精品二区| 在线欧美一级视频| 国产欧美日韩视频在线| 久久激情中文| 日韩不卡一二三区| 日韩欧美中文字幕在线观看| 日韩国产欧美三级| 中文字幕日韩高清| 亚洲成年人在线播放| 精品欧美久久久| 亚洲第一中文字幕| 色偷偷一区二区三区| 欧美日韩在线不卡视频| 日本精品国语自产拍在线观看| 欧美日韩高清在线播放| 国产欧美第一页| 粉嫩粉嫩芽的虎白女18在线视频| 天堂精品高清1区2区3区| 亚洲小说春色综合另类电影| 欧美性极品xxxx做受| 亚洲国产午夜精品| 亚洲欧美日本国产专区一区| 日韩欧美中文字幕在线播放| 91精品久久久久久久久| 欧美国产一级片| 视频一区视频二区中文| 色欧美日韩亚洲| 久久99精品久久久久子伦| 精品视频三区| 亚洲 欧美综合在线网络| 日韩一级视频在线观看| 亚洲黄色www| 欧美人妻一区二区三区| 精品国产乱码久久久久久蜜臀 | 粉嫩粉嫩芽的虎白女18在线视频| 免费精品国产自产拍在| 欧美日韩亚洲不卡| 蜜桃视频中文字幕| 狠狠色噜噜狠狠狠狠97| av中文网站| 91精品国产自产91精品| 精品国产免费视频| 成人欧美亚洲| 国产区日韩欧美| 婷婷久久综合九色国产成人| 欧洲一级精品| 二区三区中文字幕| 日韩在线视频一区| 在线不卡日本| 日韩欧美999| 午夜精品一区二区三区免费视频| 国产欧美自拍一区| 福利一区二区| 国产偷国产偷亚洲清高网站| 老司机久久99久久精品播放免费| av中文网站| 日韩亚洲一区在线| 一区二区三区视频网站| www中文字幕在线观看| 黄色一级大片在线免费看国产一| 国产欧美日韩不卡| 欧美日韩亚洲91| 91精品国产91久久| 欧美 日韩 国产 高清| 91精品婷婷国产综合久久| 精品一二三区| 日韩精品在线看| aaa欧美日韩| 欧美午夜精品在线| 91精品国产91久久久久| 久久精品日韩无码| 国产91大片| 视频一区视频二区中文| 精品福利二区三区| 在线综合 亚洲 欧美中文字幕| 国产成人综合精品| 国产区高清在线| 日本免费在线视频不卡一不卡二| 精品三级av| 91精品啪在线观看国产60岁 | 欧美日韩精品免费在线观看视频| 精品国产综合久久| 精品全国在线一区二区| 日韩免费视频一区二区| 91精品国产综合久久久久久漫画 | 国产超级va在线视频| 你懂的亚洲视频| 99精品视频国产| 日韩欧美在线1卡| 欧美在线中文字幕| 日韩区欧美区| 欧美日韩在线观看成人| 国产亚洲一级| 国产手机精品视频| av三级在线观看| 狠狠色综合色区| 91精品国产经典在线观看| 国产欧美日韩最新| 亚洲福利精品在线| 精品国内自产拍在线视频| 欧美日韩精品高清| 国产免费久久| 亚洲一区资源| 一级一片免费视频| 欧美日韩国产黄色| 91精品网站| 国产欧美日韩在线视频| 国产日韩专区| 久久久久蜜桃| 日韩在线精品| av不卡免费看| 欧美日韩在线三级| 91精品xxx在线观看| 亚洲欧美中文字幕在线观看| 精品人妻一区二区三区视频| 亚洲欧美999| 一区二区中文字幕在线| 日韩欧美一二三| 久久精品国产99| 中文字幕日韩亚洲| 一区二区国产在线| 婷婷精品进入| 日韩精品在线观| 一区二区中文视频| 日韩精品视频在线| 欧美日韩国产123区| 91精品蜜臀在线一区尤物| 一区二区三区久久| 91精品国产综合久久福利| 欧美高清一级片在线| 国产三级第一页| 中文字幕国产在线| 精品日韩99亚洲| 日韩视频在线观看视频| 日本不卡一区在线| 中文字幕高清在线播放| 欧美日韩国产观看视频| 福利一区二区| 国产日韩中文字幕| 日韩欧美在线精品| 欧美一级免费看| 国产视频一区三区| 欧美三级日韩三级| 91蜜桃在线视频| 亚洲精品中文字幕乱码三区| 欧美久久在线观看| 精品综合久久久久| 日韩欧美专区在线| 精品国产综合久久| 亚洲国内精品视频| 日本熟女一区二区| 欧美片网站免费| 天堂在线一区二区三区| 精品一二线国产| 久久91精品视频| 国产欧美日韩中文字幕| 日韩欧美国产高清| 国产在线www| 欧美在线亚洲一区| 一区二区三区精品99久久| 午夜国产在线视频| 欧美日韩在线视频首页| 亚洲免费专区| 精品一区二区三区中文字幕在线| 国产欧美 在线欧美| 中文字幕日韩欧美在线|