2012-06-22 3 views
0

아래 코드를 코딩했습니다. 나는 내 프로그램에서 그것을 사용하고 그것이 작동하는 것 같습니다. 어쨌든, 나는 그것이 정확한지 묻습니다.lParam 메시지를 조합하십시오. 올바른 코드입니까?

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

나는 "INT"와 "짧은"를 변경할 필요가 없습니다 (I (16)에 의해 32 INT을 이동하지만, 16 (16)에 의해 이동 가능)?

반바지 대신 "short"또는 "int"를 사용하는 이유는 무엇입니까?

+2

당신은 공급 [매크로]를 사용 할 수 있습니다 (http://msdn.microsoft.com/en-us/library/windows/desktop/ff468920 (V = VS.85)에서 .aspx) 등을위한 작곡. [MAKELPARAM] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632661 (v = vs.85) .aspx) 예를 들어 비트 이동에 대해 걱정할 필요가 없습니다. – eran

답변

6

MAKELPARAM 매크로를 사용하는 것이 더 관용적입니다.

SendMessage(hwnd, WM_SIZE, 0, MAKELPARAM(low, high)); 
관련 문제