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

posts - 64,comments - 18,trackbacks - 0

/*****************************************************
 Windows SDK編程之一  窗口示例程序
******************************************************/

/*Win32應用程序框架主要由"初始化窗口類","窗口注冊類","窗口的創建"以"窗口消息函數"等組成*/
#include "stdafx.h"


LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);  //窗口函數說明

/*
  WinMain函數是所有windows應用程序的入口,類似于C語言中的Main函數,其功能是完成一系列的定義和初始化工作,并產生消息循環。消息循環是整個程序運行的核心。WinMain函數實現以下功能。
  1. 注冊窗口類,建立窗口及執行其它必要的初始化工作;
  2. 進入消息循環,根據從應用程序消息隊列接受的消息,調用相應的處理過程
  3. 當消息循環檢索到WM_QUIT消息時終止程序運行。

  WinMain函數有三個基本的組成部份:函數說明、初始化和消息循環。

 WinMain函數的說明如下:
 int WINAPI WinMain(  //WinMain函數說明
             HINSTANCE hInstance, //程序當前實例句柄       
             HINSTANCE hPrevInstance,  //應用程序其它實例句柄
             LPSTR     lpCmdLine, //指向程序命令行參數的指針
             int   nCmdShow  //應用程序開始執行時窗口顯示方式的整數值標識
)
      由于Window操作系統是多任務的操作系統,能進行多任務的管理,因此,windows應用程序可能被并行的多次執行,因而可能出現同一個程序的多個窗口同時存在的情況,Windows系統將應用程序每一次執行稱為該應用程序的一個實例(Instance),并用一個實例句柄唯一的標識它。

*/
int APIENTRY WinMain(HINSTANCE hInstance,           //WinMain函數說明
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 /*
 建議采用Pascal的變量定義風格,即在程序(函數)開始處定義所有變量
 雖然C++的變量定義比較靈活,本程序為了使程序易于理解,未采用這種方法
 */
   
 char lpszClassName[]="窗口";       //窗口類名
 char lpszTitle[]="Windows SDK編程之一  窗口示例程序";   //窗口標題名

 //---------------窗口類定義-------------------------------------
 /*
 窗口類的定義
    在Windows應用程序中,窗口害定義了窗口的形式與功能。窗口類定義通過給窗口類數據結構WNDCLASS賦值完成,該數據結構中包括窗口類的各種屬性,在窗口類定義過程中常用到以下函數:
 */
 WNDCLASS wndclass;
 wndclass.style=0;                                              //窗口類型為缺省類型
 wndclass.lpfnWndProc=WndProc;                                  //窗口處理函數為WndProc
 wndclass.cbClsExtra=0;                                         //窗口類無擴展
 wndclass.cbWndExtra=0;                                         //窗口實例無擴展
 wndclass.hInstance=hInstance;                                  //當前實例句柄
 
 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);                 //使用缺省圖標
 /*
  LoadIcon():在應用程序中加載一個窗口圖標
     LoadIcon()函數原型為:
             HICON LoadIcon(
                   HINSTANCE hInstance,//圖標資源所在的模塊句柄,為NULL則使用系統預定義圖標
                   LPCTSTR lpIconName //圖標資源名或系統預定義圖標標識名
             )
 */


 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);                   //窗口采用箭頭光標
    /*
 LoadCursor():在應用程序中加載一個窗口光標
    LoadCursor()函數原型為:
             HCURSOR LoadCursor(
                     HINSTANCE hInstance,//光標資源所在的模塊句柄,為NULL則使用系統預定義光標
                     LPCTSTR lpCursorName //光標資源名或系統預定義光標標識名
             )
 */

 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);    //窗口背景為白色
 /*
  GetStockObject():獲取已經定義的畫筆、畫刷、字體等對象的句柄
     GetStockObject()函數原型為:
                   HGDIOBJ GetStockObject(int fnObject); //fnObject為對象的標識名

 */

 wndclass.lpszMenuName=NULL;                                    //窗口中無菜單
 wndclass.lpszClassName=lpszClassName;                          //窗口類名為'窗口實例'

 //------------------以下是進行窗口類的注冊---------------------------
 
 /*
    注冊窗口類
    Windows系統本身提供部份預定義的窗口類,程序員也可以自定義窗口類,窗口類必須先注冊后使用。窗口類的注冊由注冊函數RegisterClass()實現。其形式為:
    RegisterClass(&wndclass)
   &wndclass為窗口類結構
      RegisterClass函數的返回值為布爾值,注冊成功則返回真
 */
 if (! RegisterClass(&wndclass))     //注冊窗口,若失敗,則發出聲音
 { MessageBeep(0);
   return FALSE;
 }
   
 /*
 創建窗口實例
 創建一個窗口類的實例由函數CreateWindow()實現,該函數的原型為:
    HWND  CreateWindow(LPCTSTR lpszClassName,             //創建窗口,窗口類名
             LPCTSTR lpszTitle,                     //窗口實例的標題名
             DWORD dwStyle,           //窗口的風格
             int x,   //窗口左上角坐標
       int y,   //窗口左上角坐標
             int nWidth,   //窗口的寬度
       int nHeight,   //窗口的高度
               HWND hwndParent,           //此窗口父窗口
             HWENU hMenu,          //此窗口主菜單
                HINSTANCE hInstance, //應用程序當前句柄
             LPVOID lpParam);        //指向一個傳遞給窗口的參數值的指針
 */
 
 //創建窗口操作
 HWND hwnd; //窗口結構
    hwnd=CreateWindow(lpszClassName,   //創建窗口,窗口類名
  lpszTitle,                     //窗口實例的標題名
  WS_OVERLAPPEDWINDOW,           //窗口的風格
  CW_USEDEFAULT,CW_USEDEFAULT,   //窗口左上角坐標為缺省值
  CW_USEDEFAULT,CW_USEDEFAULT,   //窗口的高度和寬度為缺省值
  NULL,                          //此窗口無父窗口
  NULL,                          //此窗口無主菜單
  hInstance,                     //應用程序當前句柄
  NULL);                         //不使用該值

 ShowWindow(hwnd,nCmdShow);         //顯示窗口

 UpdateWindow(hwnd);                //繪制用戶區
 

    /*
  消息循環
  windows應用程序的運行以消息為核心。windows將產生的消息放入應用程序的消息隊列中而應用程序WinMain函數的消息循環提取消息隊列中的消息,并將其傳遞給窗口函數為相應處理過程處理。
    MSG msg; //消息結構

 while( GetMessage(&msg,NULL,0,0))  //消息循環
 { TranslateMessage(&msg);
   DispatchMessage(&msg);
 }
 */

 MSG msg; //消息結構
  /*GetMessage()作用:從消息隊列中讀取一條消息,并將消息放在一個MSG結構中:
   BOOL GetMessage(        
        LPMSG lpMsg,  //指向MSG結構的指針
        HWND hWnd,
        UINT wMsgFilterMin, //用于消息過濾的最小信息號值
        UINT wMsgFilterMax //用于消息過濾的最大信息號值 如最小值和最大值均為0, 則不過濾消息
   );
  當GetMessage返回0時,即檢索到WM_QUIT消息,程序將結束循環并退出

 BOOL TranslateMessage(  const MSG *lpMsg );  負責把消息的虛擬鍵值轉換為字符信息
 LRESULT DispatchMessage( const MSG *lpmsg  ); 將參數lpmsg指向的消息傳遞給指定的窗口

  */
 while( GetMessage(&msg,NULL,0,0))  //消息循環
 { TranslateMessage(&msg);
   DispatchMessage(&msg);
 }

 return msg.wParam;                //程序終止時,將信息返回操作系統
}


//-----------------------------窗口函數---------------------------------------
/*
窗口消息處理函數定義了應用程序對接收到的不同消息的響應,它包含了應用程序對各種可用接收到的消息的處理過程,通常 ,窗口函數由一個或多個switch...case語句組成,每一條case語句
對應一種消息,當應用程序接收到一個消息時,相應的case語句被 激活并執行相應的響應程序模塊。
窗口函數的一般形式如下:
 LRESULT CALLBACK WindowProc(          HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);
Parameters

hwnd :[in] Handle to the window.
uMsg :[in] Specifies the message.
wParam:[in] Specifies additional message information. The contents of this parameter depend on the value of the uMsg parameter.
lParam:[in] Specifies additional message information. The contents of this parameter depend on the value of the uMsg parameter.
Return Value 
The return value is the result of the message processing and depends on the message sent.

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
  switch (message)
  {
  case ...
      ....
   break;
   .........
  case WM_DESTROY:
     //void PostQuitMessage(int nExitCode)函數的作用是向程序發送WM_QUIT消息,nExitCode應用程序退出代碼
      PostQuitMessage(0); //調用該函數發出WM_QUIT消息
  default: //缺省消息處理函數,以保證所的發往窗口的消息都能被處理
   return DefWindowProc(hwnd,message,wParam,lParam);
  }

  return (0);
}

*/
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
  switch (message)
  {
  case WM_DESTROY:
    PostQuitMessage(0); //調用該函數發出WM_QUIT消息
  default: //缺省消息處理函數
   return DefWindowProc(hwnd,message,wParam,lParam);
  }

  return (0);
}
/*
注:
  事件驅動的特點:
  Windows程序設計圍繞著事件或消息的產生驅動產生運行消息處理函數。Windows程序的執行順序取決于事件發生的順序,程序的執行是由順序產生的消息驅動的,程序員可以針對消息類型編寫消息處理程序以處理接收的消息,或者發出其他消息以驅動其他處理程序,但是不必預先確定消息的產生順序。這是面向對象編程中事件驅動的顯著特點。
  事件驅動編程方法對于編寫交互程序很有用處,用這一方法編寫的程序使程序避免了死板的操作模式,從而使用戶能夠按照自己的意愿采用靈活多變的操作模式。
  Windows應用程序中的消息傳遞機制:
  VC中存在幾種系統定義的消息分類,常用的消息由窗口消息、初始化消息、輸入消息、系統消息、剪切板消息、文當界面消息、DDE(動態數據交換)消息、應用程序自定義消息等。應用程序發送的消息發送至消息隊列,系統根據消息到達的順序對消息進行處理,并調用響應的消息處理模塊代碼。
*/

posted on 2007-05-16 22:46 rebol 閱讀(2191) 評論(0)  編輯 收藏 引用 所屬分類: Final work LOG
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品影院| 日韩亚洲在线观看| 亚洲激情网址| 久久国产精品一区二区| 久久综合色综合88| 午夜在线电影亚洲一区| 欧美伦理91| 在线日韩中文| 久久免费视频在线观看| 国产欧美日韩综合| 亚洲国产一区在线观看| 欧美中文字幕视频| 中国亚洲黄色| 欧美精品福利视频| 亚洲东热激情| 免费成人在线观看视频| 亚洲精品123区| 午夜激情综合网| 亚洲欧洲偷拍精品| 欧美高清在线一区| 亚洲大黄网站| 欧美大片在线影院| 久久国产黑丝| 永久久久久久| 欧美xx69| 亚洲影院色无极综合| 国产精品美女久久久久av超清| 亚洲美女黄网| 亚洲天堂第二页| 欧美午夜女人视频在线| 伊人成人开心激情综合网| 久久久精品动漫| 亚洲欧美色一区| 国内精品国语自产拍在线观看| 亚久久调教视频| 亚洲伦理自拍| 久久久久国色av免费观看性色| 国产精品黄视频| 一区二区高清在线| 亚洲精品乱码| 国产日产精品一区二区三区四区的观看方式 | 久久9热精品视频| 国产裸体写真av一区二区| 欧美呦呦网站| 久久精品国产一区二区三区免费看 | 99视频精品| 亚洲激情婷婷| 久久米奇亚洲| 亚洲人成亚洲人成在线观看| 久久久亚洲高清| 欧美va日韩va| 亚洲欧美区自拍先锋| 久久久久欧美精品| 亚洲国产日韩在线一区模特| 欧美激情第六页| 亚洲自拍啪啪| 亚洲欧美三级在线| 午夜在线视频观看日韩17c| 一区二区三区无毛| 亚洲精品美女91| 久久成人精品一区二区三区| 亚洲私人影院| 伊人成人开心激情综合网| 99国产精品私拍| 国产欧美日韩精品在线| 午夜精品视频网站| 欧美高清视频在线观看| 香蕉尹人综合在线观看| 欧美—级在线免费片| 欧美一区二区免费观在线| 欧美一区二区在线看| 欧美日本精品一区二区三区| 久久精品99久久香蕉国产色戒| 欧美日韩精品免费在线观看视频| 欧美一区二区黄色| 欧美高清影院| 欧美在线观看视频一区二区三区| 西瓜成人精品人成网站| 亚洲国产经典视频| 亚洲欧美国产不卡| 亚洲视频专区在线| 另类图片综合电影| 久久久视频精品| 欧美三日本三级少妇三2023| 欧美黄色一区二区| 黄色精品一二区| 美日韩精品免费| 国产亚洲一级高清| 99国产精品99久久久久久粉嫩 | 午夜久久电影网| 免费亚洲网站| 亚洲欧美综合一区| 欧美精品九九99久久| 欧美在线视频全部完| 欧美日韩成人在线| 亚洲第一搞黄网站| 国产一区二区久久精品| 欧美jjzz| 亚洲黄色影片| 久久国产加勒比精品无码| 久久久久久久久久码影片| 国产精品裸体一区二区三区| 亚洲黄页一区| 欧美三级电影一区| 亚洲精品免费在线观看| 亚洲国产精品国自产拍av秋霞| 久久国产日韩| 久久国产99| 国产精品毛片大码女人| 一区二区三区四区国产精品| 亚洲肉体裸体xxxx137| 女人香蕉久久**毛片精品| 久久成人精品电影| 亚洲大胆在线| 久久精品综合一区| 久久久亚洲成人| 樱花yy私人影院亚洲| 亚洲欧美欧美一区二区三区| 国产最新精品精品你懂的| 亚洲欧美国产77777| 宅男噜噜噜66国产日韩在线观看| 欧美精品一区二区精品网| 蜜臀av一级做a爰片久久| 在线看一区二区| 欧美成人情趣视频| 午夜精品久久久久久久男人的天堂 | 9色国产精品| 亚洲精品国产精品乱码不99按摩| 欧美成人在线免费观看| 亚洲国产日韩欧美综合久久| 国产欧美日韩亚洲一区二区三区| 午夜精品影院| 欧美专区在线观看一区| 亚洲国产小视频| 欧美理论电影网| 午夜一区在线| 欧美www视频在线观看| 亚洲女人天堂av| 国产私拍一区| 欧美一级电影久久| 亚洲区免费影片| 一区二区三区在线免费播放| 欧美精品一区二区三区蜜臀| 一本色道久久综合亚洲91| 亚洲精品免费在线观看| 国产精品性做久久久久久| 久久久久久久久综合| 亚洲美女电影在线| 久久久久久久久久久久久久一区| 亚洲精品一区二区三区四区高清| 国产精品爱啪在线线免费观看| 欧美在线看片| 亚洲电影观看| 午夜在线成人av| 亚洲精品久久久久久久久| 国产精品―色哟哟| 麻豆精品在线播放| 欧美伊人久久久久久久久影院| 亚洲福利视频二区| 久久精品五月| 亚洲愉拍自拍另类高清精品| 激情久久久久久| 国产精品人人做人人爽| 蜜桃av综合| 久久精品一区| 亚洲一区二区三区四区中文 | 欧美成人资源网| 欧美有码在线视频| 亚洲伊人伊色伊影伊综合网| 在线免费观看日韩欧美| 国产伦精品一区二区三区照片91| 欧美福利在线观看| 久久综合国产精品| 日韩视频一区二区| 欧美jizz19性欧美| 你懂的亚洲视频| 欧美亚洲视频在线观看| 亚洲天堂网站在线观看视频| 亚洲丰满少妇videoshd| 久久国产精品99国产精| 亚洲你懂的在线视频| 一区二区高清视频| 欧美一区二区在线| 在线成人激情黄色| 久久久噜噜噜久久中文字幕色伊伊 | 久久先锋资源| 久久综合久久综合这里只有精品| 欧美电影免费| 亚洲第一黄色网| 一区二区三区精品| 国产精品激情偷乱一区二区∴| 亚洲天堂久久| 亚洲在线视频观看| 99国产精品视频免费观看一公开| 亚洲精品乱码| 91久久精品久久国产性色也91| 国产欧美va欧美va香蕉在| 欧美午夜在线视频| 免费成人性网站| 欧美区在线观看|