欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++創(chuàng)建窗口程序的實(shí)現(xiàn)示例

 更新時(shí)間:2024年01月19日 09:38:42   作者:老歌老聽(tīng)老掉牙  
Windows窗體應(yīng)用程序是C#語(yǔ)言中的一個(gè)重要應(yīng)用,本文主要介紹了C++創(chuàng)建窗口程序的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

實(shí)現(xiàn)一個(gè)基本的 Windows 應(yīng)用程序,使用 C++ 和 WinAPI(Windows API)編寫(xiě)。運(yùn)行這段代碼時(shí),它將顯示一個(gè)標(biāo)題為“Hello World”的窗口,并且可以通過(guò)關(guān)閉窗口來(lái)結(jié)束程序。

#include <windows.h> // 包含Windows頭文件
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 定義消息處理函數(shù)
 
int main() {
    HINSTANCE hInstance = GetModuleHandle(NULL); // 獲取當(dāng)前模塊的實(shí)例句柄
    WNDCLASS wnd = {}; // 初始化窗口類結(jié)構(gòu)體
    wnd.lpfnWndProc = WindowProc; // 設(shè)置消息處理函數(shù)指針
    wnd.hInstance = hInstance; // 設(shè)置實(shí)例句柄
    wnd.lpszClassName = TEXT("blackcat"); // 設(shè)置窗口類名稱
    RegisterClass(&wnd); // 注冊(cè)窗口類
    HWND hwnd = CreateWindowA(
        TEXT("blackcat"), 
        TEXT("Hello World"), 
        WS_OVERLAPPEDWINDOW,  
        100, 100, 600, 600, NULL, NULL, hInstance, NULL); // 創(chuàng)建窗口

    ShowWindow(hwnd, SW_SHOWNORMAL); // 顯示窗口
    
    MSG msg = {}; // 定義消息變量
    
    while (GetMessage(&msg, NULL, 0, 0)) { // 進(jìn)入消息循環(huán)
        TranslateMessage(&msg); // 轉(zhuǎn)換消息
        
        DispatchMessage(&msg); // 分發(fā)消息
    }
    
    return static_cast<int>(msg.wParam); // 返回程序退出值
}
 
// 消息處理函數(shù)
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        case WM_DESTROY:
            PostQuitMessage(0); // 接收到WM_DESTROY消息時(shí)關(guān)閉應(yīng)用程序
            
            break;
        
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam); // 默認(rèn)情況下交由系統(tǒng)處理
    }
    
    return 0;
}

下面是這段代碼的詳細(xì)解釋:

  • #include <windows.h>:引入 Windows 頭文件,它包含了創(chuàng)建和管理 Windows 應(yīng)用程序所需的函數(shù)和宏。
  • LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);:定義一個(gè)消息處理函數(shù) WindowProc。這個(gè)函數(shù)用于處理發(fā)送給窗口的各種消息。
  • int main():主函數(shù),程序的入口點(diǎn)。
  • HINSTANCE hInstance = GetModuleHandle(NULL);:獲取當(dāng)前模塊(通常是可執(zhí)行文件)的實(shí)例句柄。
  • WNDCLASS wnd = {};:初始化一個(gè) WNDCLASS 結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體用于定義窗口類。
  • wnd.lpfnWndProc = WindowProc;:設(shè)置消息處理函數(shù)為前面定義的 WindowProc。
  • wnd.hInstance = hInstance;:設(shè)置窗口類的實(shí)例句柄。
  • wnd.lpszClassName = TEXT("blackcat");:設(shè)置窗口類的名稱。
  • RegisterClass(&wnd);:注冊(cè)窗口類。
  • HWND hwnd = CreateWindowA(...);:使用前面注冊(cè)的窗口類創(chuàng)建一個(gè)窗口。
  • ShowWindow(hwnd, SW_SHOWNORMAL);:顯示窗口。
  • MSG msg = {};:定義一個(gè) MSG 結(jié)構(gòu)體變量,用于接收從消息隊(duì)列中取出的消息。
  • while (GetMessage(&msg, NULL, 0, 0)):進(jìn)入消息循環(huán),直到接收到退出消息為止。
  • TranslateMessage(&msg); 和 DispatchMessage(&msg);:這兩行代碼負(fù)責(zé)轉(zhuǎn)換和分發(fā)消息。簡(jiǎn)單來(lái)說(shuō),它們將消息傳遞給適當(dāng)?shù)拇翱谶^(guò)程函數(shù)進(jìn)行處理。
  • LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam):這是消息處理函數(shù)。它檢查收到的消息,如果消息是 WM_DESTROY,則退出應(yīng)用程序。否則,將消息傳遞給默認(rèn)的處理函數(shù)。

到此這篇關(guān)于C++創(chuàng)建窗口程序的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C++創(chuàng)建窗口程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論