找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2655|回復: 1
收起左側

windows 窗口創(chuàng)建

[復制鏈接]
ID:72008 發(fā)表于 2015-1-11 19:24 | 顯示全部樓層 |閱讀模式
1、設計窗口類
2、注冊窗口
3、創(chuàng)建窗口
4、顯示窗口與更新窗口
5、消息循環(huán)
6、窗口函數(shù)




1.設計窗口
typedef struct tagWNDCLASS {
    UINT        style;                              //窗口的樣式
    WNDPROC     lpfnWndProc;        //名回調(diào)函數(shù)的名字
    int         cbClsExtra;                     //窗口類無擴展
    int         cbWndExtra;                  //窗口實例無擴展
    HINSTANCE   hInstance;            //當前實例句柄
    HICON       hIcon;                              //窗口的圖標   
    HCURSOR     hCursor;                    //光標的形狀與類型
    HBRUSH      hbrBackground;         //窗口的背景
    LPCSTR      lpszMenuName;       //設定菜單
    LPCSTR      lpszClassName;      //設定窗口名字(類名)
} WNDCLASS, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA;

注:以上是設計窗口的一個結構體 ,
       作用是確定窗口的 。
       圖標、窗口樣式、回調(diào)函數(shù)、背景、光標、類名等屬性


2.注冊窗口

RegisterClass(&XXX);

注:XXX代表  某某某設計窗口的結構體名+“&”是取地址
       作用是導入內(nèi)存


3.創(chuàng)建窗口

CreaeWindow 創(chuàng)建窗口函數(shù)原型
HWND CreateWindow(

LPCTSTR lpClassName, //窗口類名(與設計函數(shù)的類名相同)

LPCTSTR lpWindowName,  //窗口標題

DWORD dwStyle,       //窗口樣式,多種樣式
int x,    //x坐標 (屏幕坐標)
int y,              //Y坐標(屏幕坐標

int nWidth,   //寬

int nHeight,       //高

HWND hWndParent,   //父窗口

HMENU hMenu,       //加載菜單的句柄

HANDLE hlnstance,  //創(chuàng)建此窗口的應用程序的當前句柄(PID)(也是設計窗口中的.hInstance)

LPVOID lpParam    // 這個一般是NULL。不用的

);


注:以上是一個創(chuàng)建窗口的函數(shù) <CreaeWindow>創(chuàng)建窗口后
       函數(shù)會返回一個句柄 這時要用一個 窗口句柄類型(HWND)
       的變量來接收這個返回值。
       作用是確定:
       窗口的 標題、窗口樣式、窗口位置、窗口大小、菜單、父窗口等等。



4、顯示窗口與更新窗口
      顯示窗口
ShowWindow(XXXX,         //第一個參數(shù)是 窗口句柄(HWND)
                      SW_SHOW  //指定窗口如何顯示
                      );


     更新窗口
UpdateWindow(hWnd   //窗口句柄
                        );



5、消息循環(huán)
下面是代碼:
       MSG msg; //聲明消息結構

while(GetMessage(&msg,NULL,0,0)) //消息循環(huán)
{
TranslateMessage(&msg);     //讓Windows為與鍵盤相關的消息做一些轉換
DispatchMessage(&msg);      //分派消息到窗口過程函數(shù)中對消息處理
}

6、窗口函數(shù)

//窗口過程函數(shù)的實現(xiàn)(消息處理函數(shù))
LRESULT CALLBACK MyWindowProc(
       HWND hwnd,      // handle to window 窗口句柄
       UINT uMsg,      // message identifier消息標識
       WPARAM wParam,  // first message parameter
       LPARAM lParam   // second message parameter
      )
{

   switch(uMsg)
   {
   case WM_PAINT:
   {
   TCHAR str[] = _T("這是一個Windows的SDK程序!");
   HDC hDc;//聲明HDC數(shù)據(jù)結構
   PAINTSTRUCT  Ps;
   hDc = BeginPaint(hwnd,&Ps); //獲取設備環(huán)境句柄
   SetTextColor(hDc,RGB(13,25,200)); //設置文本顏色
   TextOut(hDc,0,0,str,18); //輸出文字
   EndPaint(hwnd,&Ps); //釋放資源
   break;
   }
   case WM_CLOSE: //點擊"X"按鈕時發(fā)送此消息,使消息循環(huán)停止
   if(IDYES == MessageBox(hwnd,_T("是否要退出?"),_T("提示"),MB_YESNO))
   {
             DestroyWindow(hwnd); //銷毀窗口,發(fā)送WM_DESTROY消息,注意程序進程還沒退出
   }   
   break;
   case WM_DESTROY:
   PostQuitMessage(NULL); //進程結束,完全退出程序
   break;
   case WM_LBUTTONDOWN:
   MessageBox(hwnd,_T("鼠標左鍵按下"),_T("提示"),MB_OK);
   break;
   default:
   return DefWindowProc(hwnd,uMsg,wParam,lParam); //處理未處理的消息
   break;
   }

   return 0;

}



回復

使用道具 舉報

ID:28571 發(fā)表于 2015-4-18 16:15 | 顯示全部樓層
好東西,學習一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表