我在VC中创建了一个主对话框(CDiaLog),以它为父对话框,又创建了若干个WS_CHILD属性的子对话框,现在我想使其中的一个子对话框A总是在最前显示 (我想要的功能是把对话框A做成浮动的工具条),下面给出我用来测试的简单代码。
先在VC建立一个对话框工程test
在主对话框类中//CtestDlg.cpp
CtestDlg::OnInitDialog()
{
..
// TODO: 在此添加额外的初始化
CSubADlg *pMyDlgA = new CSubADlg();//子对话框A,我在类CSubADlg中添加了一个WM_LBUTTONDOWN鼠标消息函数,
// 作测试用
pMyDlgA->Create(IDD_SUBADLG,this);//IDD_SUBADLG是我在资源视图建立的对话框资源的ID,要把style属性改成
//child
pMyDlgA->MoveWindow(0,0,100,200);
pMyDlgA->ShowWindow(true); CSubBDlg *pMyDlgB = new CSubBDlg();//子对话框B,我在类CSubBDlg中也添加了一个WM_LBUTTONDOWN鼠标消息函数,
// 作测试用 //对话框pMyDlgB在客户区全屏显示
CRect rc;
this->GetClientRect(rc);
pMyDlgB->Create(IDD_SUBBDLG,this);
pMyDlgB->MoveWindow(rc);
pMyDlgB->ShowWindow(true); //关键代码,问题就是出在这里
::SetWindowPos(pMyDlgA->m_hWnd,HWND_TOPMOST,0,0,0,0, SWP_NOSIZE | SWP_NOMOVE);
}
//
调试运行后,发现对话框界面只是显示CSubBDlg的对话框(全屏显示),而CSubADlg不能显示,但是CSubADlg能够捕捉鼠标焦点(即点击时能响应自己的鼠标函数)我要怎么做才能让CSubADlg既能总是显示,又能捕捉鼠标焦点
先在VC建立一个对话框工程test
在主对话框类中//CtestDlg.cpp
CtestDlg::OnInitDialog()
{
..
// TODO: 在此添加额外的初始化
CSubADlg *pMyDlgA = new CSubADlg();//子对话框A,我在类CSubADlg中添加了一个WM_LBUTTONDOWN鼠标消息函数,
// 作测试用
pMyDlgA->Create(IDD_SUBADLG,this);//IDD_SUBADLG是我在资源视图建立的对话框资源的ID,要把style属性改成
//child
pMyDlgA->MoveWindow(0,0,100,200);
pMyDlgA->ShowWindow(true); CSubBDlg *pMyDlgB = new CSubBDlg();//子对话框B,我在类CSubBDlg中也添加了一个WM_LBUTTONDOWN鼠标消息函数,
// 作测试用 //对话框pMyDlgB在客户区全屏显示
CRect rc;
this->GetClientRect(rc);
pMyDlgB->Create(IDD_SUBBDLG,this);
pMyDlgB->MoveWindow(rc);
pMyDlgB->ShowWindow(true); //关键代码,问题就是出在这里
::SetWindowPos(pMyDlgA->m_hWnd,HWND_TOPMOST,0,0,0,0, SWP_NOSIZE | SWP_NOMOVE);
}
//
调试运行后,发现对话框界面只是显示CSubBDlg的对话框(全屏显示),而CSubADlg不能显示,但是CSubADlg能够捕捉鼠标焦点(即点击时能响应自己的鼠标函数)我要怎么做才能让CSubADlg既能总是显示,又能捕捉鼠标焦点
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货