首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC++

Windows 程式設計必備:常見 Win32 型別與結構體速查表

     編輯:VC++

核心資料型別

型別描述
CALLBACK回呼函式慣用修飾詞,取代 FAR PASCAL
HANDLE32 位元無號整數,通用控制碼
HDC裝置內容控制碼
HWND視窗控制碼
LONG32 位元有號整數
LPARAM訊息 lParam 參數型別
LPCSTR常數字串指標
LPSTR字串指標
LPVOID通用指標 (void*)
LRESULT視窗程序回傳值
NULL空指標/零值
UINT無號整數(32 位元)
WCHAR16 位元 Unicode 字元
WINAPIAPI 呼叫慣例,取代 FAR PASCAL
WPARAM訊息 wParam 參數型別

常用結構體

結構體用途
MSG訊息結構,含 hwnd, message, wParam, lParam, time, pt
PAINTSTRUCTBeginPaint 填充,含 hdc, rcPaint 等繪圖資訊
RECT矩形座標 left, top, right, bottom
WNDCLASS視窗類別註冊資訊

最小可執行 Win32 範例

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szProgName[] = "ProgName";

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
    LPSTR lpCmdLine, int nCmdShow)
{
    HWND hWnd;
    MSG lpMsg;
    WNDCLASS wcApp = { 0 };

    wcApp.lpszClassName = szProgName;
    wcApp.hInstance = hInst;
    wcApp.lpfnWndProc = WndProc;
    wcApp.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcApp.hbrBackground = GetStockObject(WHITE_BRUSH);
    wcApp.style = CS_HREDRAW | CS_VREDRAW;

    if (!RegisterClass(&wcApp)) return 0;

    hWnd = CreateWindow(szProgName, "範例程式",
        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInst, NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while (GetMessage(&lpMsg, NULL, 0, 0))
    {
        TranslateMessage(&lpMsg);
        DispatchMessage(&lpMsg);
    }
    return (int)lpMsg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg,
    WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    switch (msg)
    {
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // 繪製幾何圖形、文字...
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}

參數說明備註

  • hInst:應用程式實例控制碼,識別進程。
  • hPrevInst:Win32 下永遠為 NULL。
  • lpCmdLine:命令列參數字串。
  • nCmdShow:視窗初始顯示狀態(SW_SHOW 等)。

此表可作為 Windows SDK 開發快速參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved