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始终都是得到整个客户区域的位置,而不是控件的位置。

posted on 2008-05-26 10:35 迷宫の未来 阅读(1836) 评论(3)  编辑 收藏 引用

评论

# re: WM_SIZE处理 2008-06-26 10:51 更深的蓝

这样不是很妥啊,如果是在PPC和SP下,Workarea是不一样的,相差一个任务栏高度.  回复  更多评论   

# re: WM_SIZE处理 2008-11-02 21:15 过客

楼主,你好,我今天学习了一下你的例子,并用你的例子作了一下实验,结果报错,如果楼主知道是我的错误什么原因请你联系下我,先谢谢了,我的QQ:370676112,我的例子中是多控件....  回复  更多评论   

# re: WM_SIZE处理 2008-11-09 11:51 发生

对话框初始化完成之前
m_MyCtrl.GetWindowRect(&rectTree);能不错 什么鸟代码
  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(10)

随笔档案

文章档案

最新随笔

搜索

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜