想做个吸附窗口的东西,怎么做?

carter10004 2011-10-11 03:31:23

HWND g_BkWnd=NULL; ///-///背景窗口
HWND g_MainWnd=NULL;///-///主窗口

void CXFWDlg::OnButton1()
{///-///产生子窗口
// TODO: Add your control notification handler code here
if (!IsWindow(g_BkWnd))
{
CBK_Window *pBK_Window =new CBK_Window;
pBK_Window->Create(IDD_BK,NULL);
pBK_Window->ShowWindow(SW_SHOW);
g_BkWnd=pBK_Window->m_hWnd;
}
else
{
::SendMessage (g_BkWnd, WM_CLOSE, 0, 0);
}
}

void CXFWDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{///-///判断窗口移动
CDialog::OnWindowPosChanging(lpwndpos);
// TODO: Add your message handler code here
if ((g_MainWnd==lpwndpos->hwnd)&&(IsWindow(g_BkWnd)))
{
CRect m_CRect_Main,m_CRect_Bk;
::GetWindowRect(g_MainWnd,m_CRect_Main);
::GetWindowRect(g_BkWnd,m_CRect_Bk);
if((abs(m_CRect_Main.bottom-m_CRect_Bk.top)>10)||((abs(m_CRect_Main.left-m_CRect_Bk.left)>10)))
{
::SetWindowPos(g_BkWnd,HWND_TOP,lpwndpos->x,(lpwndpos->y+lpwndpos->cy),lpwndpos->cx,lpwndpos->cy,SWP_NOZORDER);
::BringWindowToTop(g_MainWnd);
}
}
}

这样做卡死了。

----------------------------------------
http://blog.csdn.net/geoh/article/details/5880756
好像有人做过了,就是没看懂,能不能把这里的CAbout对话框换成别的对话框?

还有,里面的OnWnd什么的虚函数,是不是截取了所有窗口的大小,位置变化?
...全文
254 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharptiger123 2011-10-14
  • 打赏
  • 举报
回复
消息啊
猿创日记 2011-10-14
  • 打赏
  • 举报
回复
对话框随便换。主要是你的对话框要继承他的CMagnetDialog(如果我没记错的话应该是这个例子吧),然后把你创建的对话框设置一个主对话框,也就是你的对话框想主动吸附上去的。
虚函数里面截取的是当前移动的对话框的消息,主对话框的信息是后来再获得的。有个GetWindowRect(&rParent).自己看看代码。
carter10004 2011-10-13
  • 打赏
  • 举报
回复
1L:下载链接我0L已经给了,不过我没看明白。
2L:OnMove中好像不行,否则程序会一顿一顿的。。。
3L:WM_MOVING和OnWindowPosChanging有什么区别,能说详细点么?
4L,5L:谢谢。
yyps 2011-10-11
  • 打赏
  • 举报
回复
-----帮顶
水瓶座雨夕 2011-10-11
  • 打赏
  • 举报
回复
学习 学习
Eleven 2011-10-11
  • 打赏
  • 举报
回复
WM_MOVING消息响应中MoveWindow/SetWindowPos移动吸附窗口
向立天 2011-10-11
  • 打赏
  • 举报
回复
在主窗口的OnMove消息中移动子窗口
用户 昵称 2011-10-11
  • 打赏
  • 举报
回复
好像网上有模仿winamp,千千静听的例子,我在csdn下载频道就见过,不过没下载看。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧