青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一、概述

  Windows程序具有相對固定的結構,對編寫者而言,不需要書寫整個過程,大部分過程由系統完成。

  程序中只要按一定的格式填寫系統留給客戶的那一小部分。

  所需要完成的有:

  窗口類的定義、窗口的建立、消息函數的書寫、消息循環。
  二、消息處理函數

  Windows程序是事件驅動的,對于一個窗口,它的大部分例行維護是由系統維護的。沒個窗口都有一個消息處理函數。

  在消息處理函數中,對傳入的消息進行處理。系統內還有它自己的缺省消息處理函數。

  客戶寫一個消息處理函數,在窗口建立前,將消息處理函數與窗口關聯。這樣,每當有消息產生時,就會去調用這個消息處理函數。

  通常情況下,客戶都不會處理全部的消息,而是只處理自己感興趣的消息,其他的,則送回到系統的缺省消息處理函數中去。

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case ...
...
case ...
...

}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

  三、窗口的建立

  客戶需要自己建立窗口,建立后會得到系統返回的窗口句柄(HWND),后繼的針對窗口的操作都針對句柄進行。

  1.注冊窗口類

  建立窗口前,需要制定好這個窗口的相關屬性,最主要的就是將自己定義的消息處理函數與窗口關聯,其他的屬性還包括:菜單、圖標等等。

  這個屬性指定步驟是通過指定"窗口類"來完成的。

  對于自己建立的窗口,這個"窗口類"需要自己制定,也即自己填充一個WNDCLASS結構,然后向系統注冊。
對于一些特殊窗口,如按鈕等控件,他們的行為是系統制定好了的,所以不需要自己注冊,直接使用對應的“窗口類”名稱就行了。

  2.建立窗口

  建立窗口時,注冊的"窗口類"名稱作為參數傳入。

  這樣,當有針對該窗口的消息時,將調用“窗口類”中指定的消息處理函數,在其中得到處理。

  四、消息循環

  系統會將針對這個程序的消息依次放到程序的“消息隊列”中,由程序自己依次取出消息,在分發到對應的窗口中去。

  因此,建立窗口后,將進入一個循環。

  在循環中,取出消息、派發消息,循環往復,直到取得的消息是退出消息。

  循環退出后,程序即結束。

#include "stdafx.h"
#include <windows.h>

//一、消息處理函數
//參數:窗口句柄,消息,消息參數,消息參數
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 //處理感興趣的消息
 switch (message)
 {
  case WM_DESTROY:
   //當用戶關閉窗口,窗口銷毀,程序需結束,發退出消息,以退出消息循環
   PostQuitMessage (0) ;
   return 0 ;
 }
 //其他消息交給由系統提供的缺省處理函數
 return ::DefWindowProc (hwnd, message, wParam, lParam) ;
}

//二、應用程序主函數
//參數:實例句柄、前一個實例的句柄、命令行參數、窗口顯示方式
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
 //1.注冊窗口類
 static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗口類名稱
 //定制"窗口類"結構
 WNDCLASS wndclass ;
 wndclass.style = CS_HREDRAW | CS_VREDRAW ;
 wndclass.lpfnWndProc = WndProc ; //關聯消息處理函數
 wndclass.cbClsExtra = 0 ;
 wndclass.cbWndExtra = 0 ;
 wndclass.hInstance = hInstance ; //實例句柄
 wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; //圖標
 wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //光標
 wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); //畫刷
 wndclass.lpszMenuName = NULL ;
 wndclass.lpszClassName = szAppName; //類名稱
 //注冊
 if (!ReGISterClass (&wndclass))
 {
  MessageBox (NULL, TEXT ("RegisterClass Fail!"),
  szAppName, MB_ICONERROR) ;
  return 0 ;
 }

 //建立窗口
 HWND hwnd ;
 hwnd = CreateWindow (szAppName, //窗口類名稱
  TEXT ("The Hello Program"), //窗口標題
  WS_OVERLAPPEDWINDOW, //窗口風格
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  NULL,
  NULL,
  hInstance, //實例句柄
  NULL);

 ShowWindow (hwnd, iCmdShow) ;
 UpdateWindow (hwnd) ;
 
 //消息循環
 MSG msg ;
 while (GetMessage (&msg, NULL, 0, 0)) //從消息隊列中取消息
 {
  TranslateMessage (&msg) ; //轉換消息
  DispatchMessage (&msg) ; //派發消息
 }
 return msg.wParam ;
}
Posted on 2006-01-01 15:01 艾凡赫 閱讀(1108) 評論(1)  編輯 收藏 引用 所屬分類: win32 sdk 編程

Feedback

# re: Windows程序的基本結構  回復  更多評論   

2007-04-03 22:17 by skyson
代碼有問題,我編譯不過,但是想了一下,你可能是故意改成這樣的。但是還是修改一下吧:
////////////////////////////////////////////////
 //注冊
 if (!ReGISterClass (&wndclass))
 {
  MessageBox (NULL, TEXT ("RegisterClass Fail!"),
  szAppName, MB_ICONERROR) ;
  return 0 ;
 }
/////////////////////////////////////////////////
上面代碼改為:
if (!RegisterClass (&wndclass))
 {
  MessageBox (NULL, TEXT ("RegisterClass Fail!"),
  szAppName, MB_ICONERROR) ;
  return 0 ;
 }

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区激情小说| 亚洲日本免费电影| 欧美精品一区在线| 久久亚洲欧美| 国产精品久久久久一区二区三区共| 久久综合狠狠综合久久激情| 国产精品久久国产三级国电话系列 | 亚洲女人天堂成人av在线| 欧美大色视频| 欧美激情欧美激情在线五月| 黑人中文字幕一区二区三区 | 亚洲一区亚洲| 在线一区二区日韩| 欧美精品18+| 91久久精品国产91久久性色tv| 尤物99国产成人精品视频| 午夜欧美不卡精品aaaaa| 亚洲一区不卡| 国产精品欧美日韩一区二区| 一本色道久久综合亚洲精品按摩 | 亚洲一区二区在线播放| 欧美精品日韩一本| 亚洲啪啪91| 夜夜爽99久久国产综合精品女不卡| 免费亚洲一区| 亚洲欧洲一区二区三区在线观看| 亚洲日本中文| 欧美日韩国产首页在线观看| 亚洲久久一区| 亚洲欧美不卡| 国产亚洲激情在线| 久久久人成影片一区二区三区| 久久中文字幕一区二区三区| 亚洲盗摄视频| 欧美精品久久天天躁| 日韩亚洲在线观看| 欧美一区二区三区男人的天堂| 国产伦一区二区三区色一情| 久久99伊人| 亚洲国产欧洲综合997久久| 亚洲免费播放| 国产精品看片资源| 久久精品噜噜噜成人av农村| 欧美高清视频一区二区| 99精品视频一区| 国产精品久久影院| 久久九九精品99国产精品| 欧美激情视频在线免费观看 欧美视频免费一 | 久久福利影视| 国产日韩亚洲| 久久琪琪电影院| 亚洲欧洲日产国产综合网| 亚洲一区久久| 黄色精品一区二区| 欧美激情一级片一区二区| 亚洲视频网站在线观看| 久久精品一区二区三区四区| 亚洲精品系列| 国产欧美高清| 欧美经典一区二区| 亚洲综合视频网| 猫咪成人在线观看| 亚洲一区视频| 亚洲激情视频在线播放| 国产欧美一区二区三区另类精品| 麻豆精品一区二区综合av| 亚洲美女精品久久| 久久久99国产精品免费| 亚洲欧洲一区二区三区在线观看 | 亚洲欧美在线一区二区| 久久午夜视频| 亚洲一区二区三区视频播放| 一区视频在线看| 欧美午夜不卡在线观看免费 | 一区二区国产精品| 黄色精品免费| 国产精品久久久久久久久久免费看 | 欧美日韩免费在线视频| 亚洲欧美不卡| 亚洲精品国偷自产在线99热| 久久精品91久久香蕉加勒比| 99在线精品视频| 尤物99国产成人精品视频| 欧美色大人视频| 久久影音先锋| 香蕉久久一区二区不卡无毒影院| 亚洲日本理论电影| 欧美成年人在线观看| 久久精品夜色噜噜亚洲aⅴ| 正在播放欧美一区| 亚洲国产天堂久久综合| 国产综合精品| 国产免费成人在线视频| 欧美小视频在线| 欧美日韩国产区一| 欧美777四色影视在线| 久久九九国产| 亚洲欧美日本国产有色| 另类春色校园亚洲| 亚洲综合电影一区二区三区| 在线亚洲电影| 99精品久久久| 一区二区三区日韩欧美| 亚洲精品美女久久7777777| 在线欧美日韩国产| 狠狠综合久久| 在线看国产日韩| 亚洲电影在线免费观看| 在线欧美影院| 亚洲经典一区| 日韩视频在线免费| 夜夜嗨网站十八久久| 99在线精品观看| 亚洲一区二区三区乱码aⅴ| 亚洲一区二区三区免费观看| 午夜精品久久久久久久久久久久| 亚洲欧美日韩国产综合精品二区| 亚洲欧美日韩国产综合| 久久国产精品第一页| 久久久久亚洲综合| 欧美黑人多人双交| 亚洲精品国产精品国产自| 一区二区av在线| 欧美亚洲自偷自偷| 中日韩高清电影网| 亚洲日本aⅴ片在线观看香蕉| 在线不卡欧美| 亚洲人成在线播放网站岛国| 亚洲看片一区| 欧美一级久久久| 久久综合激情| 亚洲精选在线观看| 亚洲欧美日韩国产中文| 久久在线免费观看视频| 欧美另类99xxxxx| 国产无一区二区| 亚洲欧洲日产国产网站| 亚洲午夜精品久久久久久app| 久久大逼视频| 91久久久久| 亚洲一区精彩视频| 鲁鲁狠狠狠7777一区二区| 欧美日韩日日夜夜| 国语精品中文字幕| 99在线热播精品免费| 久久久国产成人精品| 亚洲欧洲中文日韩久久av乱码| 亚洲永久免费观看| 免费人成网站在线观看欧美高清| 欧美视频在线观看 亚洲欧| 国产亚洲永久域名| 99在线观看免费视频精品观看| 欧美一二三区精品| 亚洲激情成人在线| 欧美一区二区三区男人的天堂| 欧美激情在线狂野欧美精品| 国产小视频国产精品| 在线视频欧美日韩精品| 久久久五月婷婷| 国产精品99久久久久久白浆小说| 久久久视频精品| 国产精品网站在线观看| 亚洲精品三级| 免费av成人在线| 午夜亚洲福利| 国产精品家教| 一区二区三区视频在线| 欧美mv日韩mv国产网站app| 亚洲在线一区二区| 欧美色图首页| 91久久国产综合久久| 另类亚洲自拍| 欧美一区二区日韩| 国产精品久久看| 亚洲一本大道在线| 亚洲人成在线观看| 欧美福利在线观看| 亚洲激情不卡| 欧美大片网址| 久久视频在线免费观看| 国产一区日韩一区| 久久国产精品久久久久久电车| 亚洲视频一二| 国产精品成人aaaaa网站 | 1024成人网色www| 久久精品在线观看| 午夜国产精品视频免费体验区| 国产精品99一区二区| 亚洲一区二区三区四区五区午夜| 亚洲欧洲日本国产| 欧美区视频在线观看| 一本色道久久99精品综合 | 久久精品国产一区二区电影| 国产亚洲人成a一在线v站| 欧美一区二区三区视频免费| 亚洲自拍偷拍视频| 国产伦精品一区二区三区视频孕妇 | 国产毛片精品国产一区二区三区| 亚洲欧美日韩一区二区在线| 亚洲亚洲精品三区日韩精品在线视频|