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

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

windows 程序解析

?

// ?INCLUDES? ////////////////////////////////////////////// /
#define ?WIN32_LEAN_AND_MEAN?? // ?just?say?no?to?MFC

#include?
< windows.h > ??? // ?include?all?the?windows?headers
#include? < windowsx.h > ?? // ?include?useful?macros
#include? < stdio.h > ?????
#include?
< math.h >

// ?DEFINES? ////////////////////////////////////////////////

// ?defines?for?windows?
#define ?WINDOW_CLASS_NAME?"WINCLASS1"

// ?GLOBALS? ////////////////////////////////////////////////


// ?FUNCTIONS? //////////////////////////////////////////////
LRESULT?CALLBACK?WindowProc(HWND?hwnd,?
????????????????????????????UINT?msg,?
????????????????????????????WPARAM?wparam,?
????????????????????????????LPARAM?lparam)
{
????
// ?this?is?the?main?message?handler?of?the?system
????PAINTSTRUCT????????ps;???????? // ?used?in?WM_PAINT
????HDC????????????????hdc;???? // ?handle?to?a?device?context

????
// ?what?is?the?message?
???? switch (msg)
????
{????
????
case ?WM_CREATE:?
????????
{
????????????
// ?do?initialization?stuff?here

????????????
// ?return?success
???????????? return ( 0 );
????????}
? break ;

????
case ?WM_PAINT:?
????????
{
????????????
// ?simply?validate?the?window
????????????hdc? = ?BeginPaint(hwnd, & ps);?????
????????????
// ?you?would?do?all?your?painting?here
????????????EndPaint(hwnd, & ps);

????????????
// ?return?success
???????????? return ( 0 );
????????}
? break ;

????
case ?WM_DESTROY:?
????????
{
????????????
// ?kill?the?application,?this?sends?a?WM_QUIT?message?
????????????PostQuitMessage( 0 );

????????????
// ?return?success
???????????? return ( 0 );
????????}
? break ;

????
default : break ;

????}
? // ?end?switch

????
// ?process?any?messages?that?we?didn't?take?care?of?
???? return ?(DefWindowProc(hwnd,?msg,?wparam,?lparam));

}
? // ?end?WinProc

// ?WINMAIN? ////////////////////////////////////////////////
int ?WINAPI?WinMain(????HINSTANCE?hinstance,
???????????????????HINSTANCE?hprevinstance,
???????????????????LPSTR?lpcmdline,
???????????????????
int ?ncmdshow)
{

????WNDCLASSEX?winclass;?
// ?this?will?hold?the?class?we?create
????HWND???????hwnd;????? // ?generic?window?handle
????MSG???????????msg;????????? // ?generic?message

????
// ?first?fill?in?the?window?class?stucture
????winclass.cbSize????????? = ? sizeof (WNDCLASSEX);
????winclass.style????????????
= ?CS_DBLCLKS? | ?CS_OWNDC? | ?
????????CS_HREDRAW?
| ?CS_VREDRAW;
????winclass.lpfnWndProc????
= ?WindowProc;
????winclass.cbClsExtra????????
= ? 0 ;
????winclass.cbWndExtra????????
= ? 0 ;
????winclass.hInstance????????
= ?hinstance;
????winclass.hIcon????????????
= ?LoadIcon(NULL,?IDI_APPLICATION);
????winclass.hCursor????????
= ?LoadCursor(NULL,?IDC_ARROW);
????winclass.hbrBackground????
= ?(HBRUSH)GetStockObject(BLACK_BRUSH);
????winclass.lpszMenuName????
= ?NULL;
????winclass.lpszClassName????
= ?WINDOW_CLASS_NAME;
????winclass.hIconSm????????
= ?LoadIcon(NULL,?IDI_APPLICATION);

????
// ?register?the?window?class
???? if ?( ! RegisterClassEx( & winclass))
????????
return ( 0 );

????
// ?create?the?window
???? if ?( ! (hwnd? = ?CreateWindowEx(NULL,?????????????????? // ?extended?style
????????WINDOW_CLASS_NAME,????? // ?class
???????? " Your?Basic?Window++ " ,? // ?title
????????WS_OVERLAPPEDWINDOW? | ?WS_VISIBLE,
????????
0 , 0 ,???????? // ?initial?x,y
???????? 400 , 400 ,?? // ?initial?width,?height
????????NULL,???????? // ?handle?to?parent?
????????NULL,???????? // ?handle?to?menu
????????hinstance, // ?instance?of?this?application
????????NULL)))???? // ?extra?creation?parms
???????? return ( 0 );

????
// ?enter?main?event?loop,?but?this?time?we?use?PeekMessage()
????
// ?instead?of?GetMessage()?to?retrieve?messages
???? while (TRUE)
????
{
????????
// ?test?if?there?is?a?message?in?queue,?if?so?get?it
???????? if ?(PeekMessage( & msg,NULL, 0 , 0 ,PM_REMOVE))
????????
{?
????????????
// ?test?if?this?is?a?quit
???????????? if ?(msg.message? == ?WM_QUIT)
????????????????
break ;

????????????
// ?translate?any?accelerator?keys
????????????TranslateMessage( & msg);

????????????
// ?send?the?message?to?the?window?proc
????????????DispatchMessage( & msg);
????????}
? // ?end?if

????????
// ?main?game?processing?goes?here
????????
// ?Game_Main();? // ?or?whatever?your?loop?is?called
????}
? // ?end?while

????
// ?return?to?Windows?like?this
???? return (msg.wParam);

}
? // ?end?WinMain

一? include頭文件和宏定義
#define?WIN32_LEAN_AND_MEAN??//?不使用mfc
#include?
<windows.h>???//?包含所有的windows頭文件,
#include?<windowsx.h>??//包含有用的宏定義
二 winmain()函數(shù)
int?WINAPI?WinMain(????HINSTANCE?hinstance,
???????????????????HINSTANCE?hprevinstance,
???????????????????LPSTR?lpcmdline,
???????????????????
int?ncmdshow);
函數(shù)原型如上,其中hinstance是windows為應(yīng)用程序生成的句柄,hprevinstance參數(shù)現(xiàn)在一般不用,用來向以前的兼容,lpcmdline就相當(dāng)于dos程序的命令行參數(shù),ncmdshow枚舉類型指出如何打開主應(yīng)用程序窗口,比如最大化,最小化,最前端等
WINAPI 不能少,相當(dāng)于以前的pascal 關(guān)鍵字
三 WNDCLASSEX 結(jié)構(gòu)
????? WNDCLASSEX?winclass;?//?this?will?hold?the?class?we?create
????
????
//?first?fill?in?the?window?class?stucture
????winclass.cbSize?????????=?sizeof(WNDCLASSEX);???????????????????? //指她本身的大小
????winclass.style????????????
=?CS_DBLCLKS?|?CS_OWNDC?|??????? //窗口樣式,一般選這4個
????????CS_HREDRAW?
|?CS_VREDRAW;
????winclass.lpfnWndProc????
=?WindowProc;???????????????????????????????? //要回調(diào)的函數(shù)指針
????winclass.cbClsExtra????????
=?0;???????????????????????????????????????????????????//額外的類信息空間,現(xiàn)在一般不用
????winclass.cbWndExtra????????
=?0;????????????????????????????????????????????????//額外的窗口信息空間,現(xiàn)在一般不用
????winclass.hInstance????????
=?hinstance;??????????????????????????????????????????//窗口的實(shí)例句柄,從winmain()傳來
????winclass.hIcon????????????
=?LoadIcon(NULL,?IDI_APPLICATION); //圖標(biāo)
????winclass.hCursor????????
=?LoadCursor(NULL,?IDC_ARROW);?????? //鼠標(biāo)
????winclass.hbrBackground????
=?(HBRUSH)GetStockObject(BLACK_BRUSH); //背景刷,用于刷新窗口的畫刷句柄,可以用GetStockObject()
????winclass.lpszMenuName????
=?NULL;?????????????????????? //菜單,要加入到窗口中的菜單名稱
????winclass.lpszClassName????
=?WINDOW_CLASS_NAME;?? //要創(chuàng)建的窗口類的類名
????winclass.hIconSm????????
=?LoadIcon(NULL,?IDI_APPLICATION); //圖標(biāo),顯示在標(biāo)題蘭和狀態(tài)蘭

四 注冊windows類
RegisterClassEx(&winclass); 傳入指向類的指針
五 創(chuàng)建窗口
CreateWindowEx(NULL,??????????????????//?extended?style?????? 擴(kuò)張的窗口樣式,高級,一般不用
????????WINDOW_CLASS_NAME,?????//?class??????? 創(chuàng)建窗口需要的類指針
????????"Your?Basic?Window++",?//?title??????????? 標(biāo)題蘭的文本
????????WS_OVERLAPPEDWINDOW?|?WS_VISIBLE,???????? //窗口樣式
????????
0,0,????????//?initial?x,y?? 窗口的左上角,象素表示
????????400,400,??//?initial?width,?height 寬高,象素表示
????????NULL,????????//?handle?to?parent? 父窗口句柄
????????NULL,????????//?handle?to?menu??????? 菜單句柄或子窗口標(biāo)示
????????hinstance,//?instance?of?this?application? winmain(0中的instance
????????NULL))???//?extra?creation?parms? 高級參數(shù),一般不用
六 顯示窗口且刷新一下
ShowWindow()//可以控制不顯示,或在狀態(tài)蘭也不顯示
UpdateWindow() //刷新窗口,就是生成一個WM_PAINT消息
七 主消息循環(huán)
LRESULT?CALLBACK?WindowProc(HWND?hwnd,? //窗口句柄
????????????????????????????UINT?msg,?????????????????? //消息id
????????????????????????????WPARAM?wparam,??? //用于進(jìn)一步確定msg指定的消息
????????????????????????????LPARAM?lparam)????? //用于進(jìn)一步確定msg指定的消息
LRESULT?CALLBACK 不能少,以下是簡單的幾種消息:
WM_CREATE: //可以此時執(zhí)行各種初始化
WM_PAINT:??? ?hdc? =?BeginPaint(hwnd,&ps);?????//確認(rèn)窗口是否有效
????????????
?????????? //?you?would?do?all?your?painting?here? //繪制工作
???????????? ???????? EndPaint(hwnd,&ps);??????????????????????? //結(jié)束繪制

WM_KEYDOWN:? //處理鍵盤按下
WM_DESTROY:???? //將要關(guān)閉應(yīng)用程序,發(fā)出WM_QUIT消息
WM_QUIT:??????????? //推出程序
注意 函數(shù)DefWindowProc(),是處理其他的消息,除了WindowProc()已經(jīng)處理的其他消息.

GetMessage(LPMSG,?????? //消息結(jié)構(gòu)的地址
??????????????????? hWnd,??????????????? //窗口的句柄
?????????????????????uint,????????????????? //first message
?????????????????????? uint)?????????????????? //last messge
她從事件隊(duì)列獲得下一個消息,然后調(diào)用TranslateMessage()函數(shù),進(jìn)行消息的轉(zhuǎn)換和處理,然后通過DispatchMessage()來調(diào)用winproc()函數(shù).

PeekMessage( &msg,NULL,0,0,PM_REMOVE))中參數(shù):消息結(jié)構(gòu)的指針,窗口的句柄,第一條消息,最后一條消息,刪除標(biāo)記 ,其中參數(shù)刪除標(biāo)記是GetMessage()中沒有的,該標(biāo)記有2個值,PM_NOREMOVE和PM_REMOVE,前一個經(jīng)過peekmessage()后不將其從消息隊(duì)列中刪除,后一個表示經(jīng)過peekmessage()后從消息隊(duì)列中刪除.


posted on 2006-09-08 15:18 夢在天涯 閱讀(417) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812919
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              国产女优一区| 国内精品视频久久| 亚洲欧美视频在线| 亚洲在线视频免费观看| 国产日韩欧美一区二区三区在线观看| 午夜在线精品偷拍| 久久精品国产2020观看福利| 在线观看视频亚洲| 日韩天堂在线视频| 国产一区二区三区黄| 欧美国产日韩一区二区三区| 欧美精品在线观看播放| 亚洲伊人一本大道中文字幕| 先锋影音国产精品| 亚洲精品欧美极品| 亚洲一级片在线观看| 在线播放中文字幕一区| 亚洲茄子视频| 亚洲欧美在线磁力| 亚洲国产va精品久久久不卡综合| 亚洲国产综合在线| 国产视频观看一区| 91久久线看在观草草青青| 国产精品免费一区二区三区在线观看| 麻豆成人综合网| 欧美午夜不卡影院在线观看完整版免费| 久久国产88| 欧美日韩国产综合网| 久久午夜精品| 国产精品久久久久9999吃药| 免费久久99精品国产自在现线| 欧美性大战久久久久久久蜜臀| 麻豆精品视频在线观看| 国产精品久久久久7777婷婷| 欧美电影免费观看高清完整版| 国产精品资源| 99国产精品久久久久久久| 在线观看亚洲a| 亚洲欧美三级伦理| 亚洲天堂免费在线观看视频| 裸体女人亚洲精品一区| 久久久精品日韩欧美| 欧美日韩在线一区二区| 欧美国产日产韩国视频| 韩国久久久久| 欧美一级大片在线观看| 午夜国产一区| 国产精品高精视频免费| 日韩视频免费在线| 亚洲国产精品va在看黑人| 久久av资源网| 久久精品国产亚洲aⅴ| 国产精品天美传媒入口| 在线亚洲观看| 亚洲欧美精品suv| 欧美视频福利| 亚洲视频1区| 亚洲自拍都市欧美小说| 欧美无砖砖区免费| 亚洲一区二区免费视频| 亚洲女人av| 国产精品揄拍一区二区| 午夜精品国产更新| 久久精品成人欧美大片古装| 国产农村妇女毛片精品久久麻豆 | 91久久久亚洲精品| 鲁大师影院一区二区三区| 欧美jizz19hd性欧美| 亚洲大片av| 欧美激情精品久久久久久大尺度| 亚洲国产成人91精品 | 欧美日韩国产一级片| 日韩视频免费在线| 亚洲欧洲av一区二区| 国产麻豆综合| 久久久欧美精品| 亚洲高清免费在线| 亚洲午夜精品国产| 国产精品一区二区久久精品| 欧美亚洲尤物久久| 欧美大片免费看| 一区二区三区国产精品| 日韩视频在线你懂得| 亚洲国产精品精华液网站| 欧美成人午夜77777| 夜夜精品视频一区二区| 欧美一区二区免费观在线| 狠狠色综合网站久久久久久久| 久久综合久久88| 99视频一区二区| 久久久久久久久伊人| 亚洲乱码视频| 国产日韩亚洲欧美精品| 欧美夫妇交换俱乐部在线观看| 一本久道久久综合婷婷鲸鱼| 久久久福利视频| 99一区二区| 狠狠色伊人亚洲综合成人| 欧美激情精品久久久久久免费印度 | 亚洲女人av| 免费亚洲一区| 亚洲欧美在线高清| 亚洲精品欧美日韩专区| 国产日韩欧美91| 欧美经典一区二区| 久久精品国产2020观看福利| 亚洲精品资源| 欧美国产一区二区三区激情无套| 亚洲在线电影| 日韩亚洲一区在线播放| 国内精品模特av私拍在线观看| 欧美日韩国产一区精品一区 | 亚洲你懂的在线视频| 亚洲国产欧美日韩| 麻豆精品视频在线观看| 亚洲欧美日韩区| 9l国产精品久久久久麻豆| 在线观看日韩av| 国产亚洲精品成人av久久ww| 欧美日韩亚洲一区二区三区在线观看 | 精品动漫av| 国产日韩精品在线| 国产精品久久午夜夜伦鲁鲁| 欧美精品久久99久久在免费线| 久久国产精品久久久久久久久久| 亚洲少妇最新在线视频| 亚洲精品日韩综合观看成人91| 欧美国产三区| 免费观看日韩| 美女图片一区二区| 久久一综合视频| 久久精品网址| 久久久精品国产免大香伊| 欧美一区二区啪啪| 久久本道综合色狠狠五月| 亚洲欧美一区二区三区极速播放| 在线亚洲精品| 亚洲综合视频一区| 亚洲欧美日韩精品综合在线观看| 亚洲在线观看视频| 亚洲一区二区少妇| 亚洲男人的天堂在线观看 | 亚洲人成绝费网站色www| 久久精品亚洲热| 欧美专区日韩视频| 欧美jjzz| 亚洲高清视频一区二区| 美女日韩欧美| 欧美国产日韩一区二区三区| 欧美激情欧美激情在线五月| 亚洲高清不卡一区| 亚洲激情第一页| 一区二区高清在线| 亚洲先锋成人| 午夜精品福利在线观看| 久久精品一本| 欧美大片免费观看在线观看网站推荐| 欧美电影在线| 国产精品久久国产精麻豆99网站| 国产精品一区二区三区久久久 | 久久永久免费| 亚洲国产美女久久久久| 日韩系列欧美系列| 亚洲欧美日韩区| 老鸭窝亚洲一区二区三区| 欧美激情亚洲一区| 国产精品视频免费在线观看| 国产一区二区精品久久91| 亚洲国产一区二区a毛片| 一区二区免费看| 久久久久久精| 亚洲欧洲日本一区二区三区| 亚洲欧美区自拍先锋| 免费在线看成人av| 国产精品女人网站| 亚洲成色精品| 性欧美暴力猛交69hd| 免费久久精品视频| 亚洲在线观看免费视频| 久久亚洲电影| 国产精品乱码一区二三区小蝌蚪| 有坂深雪在线一区| 亚洲免费小视频| 欧美激情一区在线观看| 亚洲免费视频在线观看| 欧美精选午夜久久久乱码6080| 国产精品一区二区久久| 日韩视频在线免费| 久久久青草青青国产亚洲免观| 亚洲另类黄色| 欧美成ee人免费视频| 国产色产综合产在线视频| 亚洲婷婷综合色高清在线| 欧美大尺度在线| 欧美一区国产二区| 国产精品久久久久天堂| 日韩午夜av| 欧美韩国日本综合| 久久国产精品黑丝| 国产日韩欧美不卡|