0

以下のコードをコーディングしました。私は自分のプログラムでそれを使用しましたが、うまくいくようです。とにかく、私はそれが正しいかどうか尋ねています。

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;
}

「short」を「int」に変更する必要はありませんか (32 int を 16 でシフトできますが、16 を 16 でシフトできます)。

short の代わりに「short」または「int」を使用すると機能するのはなぜですか?

4

1 に答える 1

6

MAKELPARAMマクロを使用する方がより慣用的です。

SendMessage(hwnd, WM_SIZE, 0, MAKELPARAM(low, high));
于 2012-06-22T09:34:11.007 に答える