WM_SIZE处理

WM_SIZE处理

   WCE中变化屏幕方向或者输入法伸展收缩时会触发WM_SIZE消息,该消息处理中可以进行控件的位置移动操作。
   
   这里用源码来说明一切:

void  CMyDlg::OnSize(UINT nType,  int  cx,  int  cy)
{
    CDialog::OnSize(nType, cx, cy);

    
// TODO: Add your message handler code here
    RECT rect, rectTree;
    GetClientRect(
&rect);
    m_MyCtrl.GetWindowRect(
&rectTree);
    ScreenToClient(
&rectTree);
    rectTree.right 
= rect.right-rectTree.left;
    rectTree.bottom 
= rect.bottom;
    m_MyCtrl.MoveWindow(
&rectTree);
}


   所有的RECT都是相对客户区域的位置,m_MyCtrl.GetWindowRect( & rectTree); ScreenToClient( & rectTree);这两行代码不能替换成m_MyCtrl.GetClientRect(&rectTree); 一行代码,因为GetClientRect始终都是得到整个客户区域的位置,而不是控件的位置。

你可能感兴趣的:(WM_SIZE处理)