第一個Windows窗口應用程序


學習目的

熟悉開發工具Visual C++ 6.0和MSDN 2001的使用. 應用Windows API函數, 手工編寫具有最基本構成的Windows窗口應用程序(包含WinMain入口函數, 消息循環, 窗口函數), 並調試成功.

1.熟悉開發工具

熟悉開發工具visual studio的使用:

在visual studio中新建win32空項目

 

2.熟悉MSDN幫助的使用

練習使用MSDN查詢windows相關函數信息

 

3. 應用Windows API函數, 手工編寫具有最基本構成的Windows窗口應用程序(包含WinMain入口函數, 消息循環, 窗口函數)

程序代碼如下:

#include <windows.h>

#include<tchar.h>

 

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

 

//------------ 初始化窗口類----------------

int WINAPI WinMain(HINSTANCE hInstance, //WinMain函數說明

    HINSTANCE hPrevInst,

    LPSTR lpszCmdLine,

    int nCmdShow)

{

    HWND hwnd;

    MSG Msg;

    WNDCLASS wndclass;

    TCHAR lpszClassName[] = _T("窗口"); //窗口類名

    TCHAR lpszTitle[] = _T("My_Windows"); //窗口標題名

 

    //窗口類的定義

    wndclass.style = 0; //窗口類型為缺省類型

    wndclass.lpfnWndProc = WndProc; //窗口處理函數為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 = lpszClassName;

    //窗口類名為"窗口示例"

 

    //--------------- 窗口類的注冊 -----------------

    if (!RegisterClass(&wndclass)) //如果注冊失敗則發出警告聲音

    {

        MessageBeep(0);

        return FALSE;

    }

 

    //創建窗口

    hwnd = CreateWindow(lpszClassName, //窗口類名

        lpszTitle, //窗口實例的標題名

        WS_OVERLAPPEDWINDOW, //窗口的風格

        CW_USEDEFAULT,

        CW_USEDEFAULT, //窗口左上角坐標為缺省值

        CW_USEDEFAULT,

        CW_USEDEFAULT, //窗口的高和寬為缺省值

        NULL, //此窗口無父窗口

        NULL, //此窗口無主菜單

        hInstance, //創建此窗口的應用程序的當前句柄

        NULL); //不使用該值

 

    //顯示窗口

    ShowWindow(hwnd, nCmdShow);

    //繪制用戶區

    UpdateWindow(hwnd);

    //消息循環

    while (GetMessage(&Msg, NULL, 0, 0))

    {

        TranslateMessage(&Msg);

        DispatchMessage(&Msg);

    }

    return Msg.wParam; //消息循環結束即程序終止時將信息返回系統

}

 

//窗口函數

LRESULT CALLBACK WndProc(HWND hwnd,

    UINT message,

    WPARAM wParam,

    LPARAM lParam)

{

    switch (message){

    case WM_DESTROY:

        PostQuitMessage(0); //調用PostQuitMessage發出WM_QUIT消息

    default: //缺省時采用系統消息缺省處理函數

        return DefWindowProc(hwnd, message, wParam, lParam);

    }

    return (0);

}

編譯並調試程序,

 

Windows窗口應用程序運行結果

 

通過本次學習,熟悉了開發工具Visual C++ 6.0和MSDN 2001的使用.

通過應用Windows API函數, 手工編寫Windows窗口應用程序了解了windows窗口應用最基本的構成:包含WinMain入口函數, 消息循環, 窗口函數……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM