vc++ 单文档程序添加窗口移动事件(不是大小改变),以实现子窗口的伴随移动...

这两天做一个程序要在单文档CView里生成若干个小窗口,但这些小窗口要随着窗口的移动而移动,刚开始试了OnSize()事件,但发现OnSize()只响应窗口的大小改变,不响应移动事件。后又试了OnMove,但这个事件只能在CMainFrame里响应,这就需要将消息传递给CView里,本来想手动创建一个消息,但看了很多资料还是云里雾里,后突然想到,可以手动向view发送系统的WM_SIZE消息,于是就在CMainFrame里的OnMove事件里设置了发送消息代码,一切搞定。代码如下

//主框架中响应OnMove事件后,向活动的View传送WM_SIZE消息
1 void CMainFrame::OnMove(int x, int y) 2 { 3 CFrameWnd::OnMove(x, y); 4 CView * active = GetActiveView();//获取当前视类指针 5 if(active != NULL) 6 active->PostMessage(WM_SIZE,x,y); 7 // TODO: Add your message handler code here 8 }
 1 //在View类中响应WM_SIZE消息
 2 void CKkView::OnSize(UINT nType, int cx, int cy) 
 3 {
 4     CView::OnSize(nType, cx, cy);
 5     // TODO: Add your message handler code here
 6     //移动信息子窗口m_ctrlMapX.m_hWnd != NULL
 7 
 8     CRect clientRect;
 9     GetClientRect(clientRect);
10     ClientToScreen(clientRect);
11     CRect msgRect;
12     msgDlg.GetWindowRect(msgRect);
13     msgDlg.MoveWindow(clientRect.right-msgRect.Width(),clientRect.top,msgRect.Width(),25);
14 }

折腾一下午终于解决!

转载于:https://www.cnblogs.com/boxianglei/archive/2012/06/14/2549740.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值