久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用Win32 application建立窗體_入門

 audrey_guowei 2009-05-21
大致說來windows編程有兩種方法:
1.windwos c方式(SDK),,
2.c++方式:即對SDK函數(shù)進(jìn)行包裝,,如VC的MFC,BCB的OWL等,如果要深入 下去,,還是要熟悉SDK,。
 
建立一個(gè)簡單的窗體有如下步驟:

HINSTANCE hInst; // 當(dāng)前實(shí)例句柄
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);// 回調(diào)函數(shù)

//在此加入全局變量、常量,、函數(shù),、類等,供回調(diào)函數(shù)使用
/* * 主函數(shù): int WINAPI WinMain(HANDLE, HANDLE, LPSTR, int) 初始化窗口,,注冊窗口,,處理消息循環(huán) **/
int WINAPI WinMain(                  //WINAPI也可用APIENTRY代替
HINSTANCE hInstance, /**當(dāng)前實(shí)例句柄**/ 
 HINSTANCE hPrevInstance,// 前一個(gè)實(shí)例句柄
LPSTR                    lpCmdLine,/**命令行字符串**/
int                            nCmdShow  // 窗口顯示方式
)

/** 回調(diào)函數(shù): MainWndProc(HWND, UINT, WPARAM, LPARAM) 處理窗口消息,,執(zhí)行有關(guān)代碼  **/
LRESULT CALLBACK MainWndProc(
HWND                         hWnd,          /* 窗口句柄 */
UINT                            message,   /* 消息類型 */
WPARAM                   wParam,  /* 附加信息 */ 
LPARAM                     lParam)    /* 附加信息 */
 
以下是一個(gè)實(shí)例:

#include <windows.h>
#include <stdio.h>

HWND hWnd=NULL; // 保存 Windows 分配給程序的窗口句柄,它是全局的

LRESULT APIENTRY MainWndProc(HWND,UINT,WPARAM,LPARAM);
void MyMsgLoop();

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    char clsName[]="myWnd";
    WNDCLASS wc;  //創(chuàng)建一個(gè)Windows窗體
    wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;// 窗體風(fēng)格
    wc.lpfnWndProc = MainWndProc; //   窗體進(jìn)程的指針
    wc.cbClsExtra = 0L;
    wc.cbWndExtra = 0L;
    wc.hInstance = hInstance;// 窗體進(jìn)程實(shí)例的句柄,,通過WinMain主函數(shù)傳遞進(jìn)來
    wc.hIcon = NULL;
    wc.hCursor = NULL;
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);// 背景畫刷,,也就是窗口顯示背景顏色
    wc.lpszMenuName = NULL;
    wc.lpszClassName = clsName;// 注冊的Windows類名稱

    RegisterClass(&wc);//調(diào)用RegisterClass函數(shù)進(jìn)行注冊
    / /具備了創(chuàng)建一個(gè)窗體的信息,開始調(diào)用API函數(shù)CreateWindow來進(jìn)行窗體的創(chuàng)建工作
    hWnd = CreateWindow(clsName,"主窗口",
       WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
       100, 100,400, 300,NULL,NULL,hInstance,NULL); // 創(chuàng)建窗口
    ShowWindow( hWnd, SW_SHOWDEFAULT ); // 顯示窗口
    UpdateWindow( hWnd );   // 刷新窗口
   //UpdateWindow函數(shù)用于更新窗口,,該函數(shù)更新窗口的時(shí)候會(huì)向指定的窗體的進(jìn)程發(fā)送消息,,如果被更新的客戶區(qū)為空,說明窗體沒有接收到消息,。
    MyMsgLoop();     // 進(jìn)入消息循環(huán)
    return 0;
}

LRESULT APIENTRY MainWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam )
{// 消息處理
    switch(message) 
    {
     case WM_CREATE:  // 當(dāng)收到建立窗口的消息時(shí),,進(jìn)行處理...
        return 0;
        break;
     case WM_CLOSE:  // 當(dāng)收到關(guān)閉窗口的消息時(shí),進(jìn)行處理...
        MessageBox(NULL,"窗口要關(guān)閉了","消息提示",MB_OK|MB_ICONEXCLAMATION); 
        PostQuitMessage(0);
        return 0;
        break;
     case WM_DESTROY: // 當(dāng)退出消息的時(shí)候,,進(jìn)行處理...
        MessageBox(NULL,"退出消息了","消息提示",MB_OK|MB_ICONEXCLAMATION); 
        PostQuitMessage(0);
        return 0;
        break;
      default:
      break;
    }
    return (DefWindowProc(hWnd, message, wParam, lParam));
}

void MyMsgLoop()

    MSG msg; 
    BOOL receiveMessage;
    PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE);
    while(msg.message != WM_QUIT) 
    { // 消息循環(huán)
       receiveMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE);
       if(receiveMessage) 
       { // 有消息
        TranslateMessage(&msg);
        DispatchMessage(&msg);
       }
    }
}

 
 
 

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多