設置 | 登錄 | 註冊

作者共發了2篇帖子。

【程序】用命令行編譯對話框程序

5樓 巨大八爪鱼 2016-9-24 23:49
【源文件:wnd.c】
#include <tchar.h>
#include <Windows.h>
#include "resource.h"

INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HICON hIcon, hIconSm;
    HMENU hMenu;
    int wmId;
   
    switch (uMsg)
    {
    case WM_COMMAND:
        wmId = LOWORD(wParam);
        switch (wmId)
        {
        case IDOK:
            MessageBox(hDlg, TEXT("Hello World!"), TEXT("Hello"), MB_OK);
            break;
        case IDCANCEL:
            EndDialog(hDlg, wmId);
            break;
        case IDM_OPEN:
            MessageBox(hDlg, TEXT("Cannot open!"), TEXT("Error"), MB_ICONERROR);
            break;
        }
        break;
    case WM_INITDIALOG:
        hIcon = LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(MYICON), IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), (UINT)NULL);
        hIconSm = LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(MYICON), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), (UINT)NULL);
        SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
        SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);
       
        hMenu = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(MYMENU));
        SetMenu(hDlg, hMenu);
        break;
    }
    return FALSE;
}

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    DialogBox(hInstance, MAKEINTRESOURCE(MYDIALOG), NULL, DlgProc);
    return 0;
}
巨大八爪鱼 2024-5-13 19:37
NULL在C語言裡面特指「空指針」,而不是其他程式語言裡的空值。所以(UINT)NULL這種寫法嚴格來說是不符合規範的,最好直接寫成0。

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。