组装一个lParam消息,这是正确的代码吗?

A_n*_*to2 0 c winapi

我编码下面的代码.我已经在我的程序中使用它,它似乎工作.无论如何,我在问它是否正确.

int SendMessageWMSIZE(HWND hwnd) {
    RECT rc;
    GetClientRect(hwnd,&rc);
    int lParam_my;
    short low=rc.right-rc.left; // LOWORD
    short high=rc.bottom-rc.top; // HIWORD
    lParam_my=(high<<16)|low;  // construct an int 32 from two int 16

    SendMessage(hwnd, WM_SIZE, 0, lParam_my);

    return lParam_my;
}
Run Code Online (Sandbox Code Playgroud)

我不是要用"int"改变"short"(我可以将32 int改为16,但将16改为16)?

如果我使用"短"或"整数"而不是短裤,它为什么会起作用?

Dav*_*nan 6

使用MAKELPARAM宏会更加惯用.

SendMessage(hwnd, WM_SIZE, 0, MAKELPARAM(low, high));
Run Code Online (Sandbox Code Playgroud)