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

一、概述

  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>
            久久久午夜精品| 欧美日韩免费观看一区二区三区| 国产欧美日韩一级| 亚洲欧美在线观看| 亚洲欧美中文字幕| 国产视频欧美视频| 美女视频网站黄色亚洲| 女人天堂亚洲aⅴ在线观看| 亚洲美女精品成人在线视频| 亚洲精品久久久久中文字幕欢迎你| 欧美激情亚洲自拍| 亚洲欧美日韩国产| 久久九九免费视频| 日韩亚洲在线| 亚洲欧美视频| 亚洲激情视频在线| 一本色道久久综合狠狠躁的推荐| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲作爱视频| 国产婷婷97碰碰久久人人蜜臀| 久久久久久久久久看片| 狂野欧美激情性xxxx欧美| 一本色道久久88综合亚洲精品ⅰ | 亚洲激情在线视频| 国产精品久久国产精麻豆99网站| 久久精品一二三| 欧美精品在线一区| 欧美综合国产| 欧美日韩的一区二区| 欧美在线视频导航| 女生裸体视频一区二区三区| 亚洲欧美一级二级三级| 另类av导航| 久久成人综合视频| 欧美日本三级| 嫩草国产精品入口| 国产精品综合网站| 91久久久一线二线三线品牌| 国产亚洲va综合人人澡精品| 亚洲精品国产精品久久清纯直播| 国产午夜精品全部视频播放| 日韩亚洲一区二区| 亚洲精品专区| 狼狼综合久久久久综合网| 亚洲欧美在线观看| 欧美日韩一区二区三区| 欧美激情久久久| 国产午夜精品理论片a级大结局| 亚洲精品国产精品乱码不99| 在线观看欧美精品| 欧美伊久线香蕉线新在线| 亚洲婷婷综合久久一本伊一区| 久热国产精品| 久久在精品线影院精品国产| 国产日韩在线亚洲字幕中文| 亚洲最新视频在线| 日韩亚洲在线观看| 欧美成人精品一区二区| 欧美成人第一页| 激情久久久久| 欧美一区三区三区高中清蜜桃| 亚洲欧美另类久久久精品2019| 欧美日韩三区四区| 日韩视频在线一区二区三区| 亚洲精品久久久久久久久久久久| 久久免费99精品久久久久久| 久久久久久久久伊人| 国产最新精品精品你懂的| 亚洲欧美激情四射在线日| 午夜国产精品影院在线观看| 欧美日韩另类丝袜其他| 日韩亚洲精品视频| 亚洲深夜福利| 国产精品人成在线观看免费| 在线一区观看| 欧美一区2区三区4区公司二百| 国产精品久久99| 亚洲——在线| 久久精品网址| 亚洲国产精品一区二区三区| 免费久久99精品国产| 亚洲欧洲久久| 亚洲欧美日韩国产精品| 国产欧美日韩在线播放| 久久精品人人做人人综合| 欧美国产日韩a欧美在线观看| 亚洲国产欧美不卡在线观看| 欧美精品久久一区| 亚洲欧美国产77777| 久久亚洲风情| 99精品福利视频| 国产欧美亚洲精品| 久久综合给合| 一片黄亚洲嫩模| 久久伊人亚洲| 一区二区三区免费观看| 国产亚洲欧美一区二区| 农村妇女精品| 亚洲欧美日韩精品久久奇米色影视| 久久久九九九九| 99精品国产99久久久久久福利| 欧美成人免费网站| 亚洲欧美国产另类| 国产女精品视频网站免费| 午夜精品亚洲| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 亚洲视频在线一区| 日韩亚洲精品视频| 亚洲乱码国产乱码精品精天堂| 亚洲国产精选| 亚洲激情视频| 亚洲精品欧美| 在线天堂一区av电影| 亚洲无毛电影| 亚洲免费影视| 欧美专区中文字幕| 久久精品亚洲精品国产欧美kt∨| 久久精品人人| 久久综合综合久久综合| 欧美+亚洲+精品+三区| 欧美xx视频| 欧美视频一区二区| 国产精品亚洲不卡a| 国产区在线观看成人精品| 韩国一区二区三区在线观看| 亚洲电影视频在线| 99精品国产福利在线观看免费| 亚洲无吗在线| 欧美一级片在线播放| 久久综合久久久久88| 欧美国产日韩二区| 一区二区精品| 久久精品1区| 欧美成人精品1314www| 欧美视频手机在线| 激情丁香综合| 正在播放亚洲一区| 久久久亚洲综合| 亚洲精品久久在线| 午夜在线一区| 欧美激情视频在线播放| 国产精品亚洲成人| 91久久精品国产91性色tv| 亚洲欧美日韩一区二区在线 | 亚洲午夜在线| 久久精品一区二区三区中文字幕| 欧美国产精品v| 一区二区三区久久网| 久久免费午夜影院| 国产精品99免费看 | 久久五月激情| 欧美日韩精品一二三区| 国内精品免费午夜毛片| 一本一本a久久| 免播放器亚洲| 亚洲一区二区三区在线播放| 免费不卡在线视频| 国产日韩欧美二区| 99精品国产在热久久| 久久一区亚洲| 亚洲影音一区| 欧美激情影音先锋| 在线不卡中文字幕播放| 欧美一二三区在线观看| 亚洲国产天堂网精品网站| 小黄鸭精品密入口导航| 欧美日韩美女在线| 最新中文字幕一区二区三区| 久久久www成人免费精品| 宅男噜噜噜66一区二区66| 欧美成人国产| 亚洲高清色综合| 久久精品中文字幕一区| 宅男噜噜噜66国产日韩在线观看| 欧美激情精品久久久久久久变态 | 久久亚洲电影| 香蕉久久一区二区不卡无毒影院 | 欧美91大片| 在线播放日韩欧美| 久久久久久久999| 亚洲影视综合| 国产精品久久久久久妇女6080 | 欧美暴力喷水在线| 在线观看久久av| 久久综合色一综合色88| 久久精品国产77777蜜臀| 国产欧美精品日韩精品| 欧美影视一区| 午夜精品免费| 国产日韩亚洲欧美| 久久久精品日韩| 欧美在线日韩精品| 国产亚洲综合性久久久影院| 欧美在线观看日本一区| 香蕉久久夜色| 在线不卡免费欧美| 亚洲国产99精品国自产| 欧美精品久久久久久| 中文在线资源观看网站视频免费不卡 | 欧美—级a级欧美特级ar全黄|