请问怎样实现好像VC工作区的[窗口]菜单下的将某一个窗口资源激活到最上面的功能 找到那个窗口的指针或者句柄,用SetWindowPos(),::SetWindowPos(hWnd, &wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 setActiveView别忘了给分:) 同意 jerrytse(聪明笨伯)的观点 是MDI吗?问题好像说的不明白 y97523szb() 的说法是正确的只要用setActiveView就可以了,问题在于怎样在选中菜单时,显示相应的对话框;我写了个小程序来实现了这个过程,现在简要说明如下:1.通过OnBTNAdd来增加对话框,并将对话框名增加到菜单中,给菜单一个命令号2.当选择对话框的选取菜单时,就会触发函数OnChildDlgMsg,它有个参数来指出触发这个函数的消息,通过这个参数数你就能知道该显示激活哪一个对话框;///////定义#define WM_CHILD_DLG_MSG (WM_USER + 0X100)typedef struct ChildDlgInfotag { CChildDlg *pChildDlg; UINT uID;}ChildDlgInfo;/////消息映射ON_COMMAND_RANGE(WM_CHILD_DLG_MSG, WM_CHILD_DLG_MSG + 1000, OnChildDlgMsg)//////增加对话框的函数void CDialogSelView::OnBTNAdd() { ChildDlgInfo *pchild_dlg_info = new ChildDlgInfo; CChildDlg *pchild_dlg = new CChildDlg; pchild_dlg->Create(CChildDlg::IDD, this); CString str; static s_DlgNum = 1; str.Format("Dialog%d", s_DlgNum); pchild_dlg->SetWindowText(str); pchild_dlg->CenterWindow(NULL); pchild_dlg->ShowWindow(SW_SHOW); pchild_dlg_info->pChildDlg = pchild_dlg; pchild_dlg_info->uID = s_DlgNum; m_nCurDlg = m_pChildDlgArray.Add(pchild_dlg_info); CWnd *pmain_wnd = AfxGetMainWnd(); CMenu *pmain_menu = pmain_wnd->GetMenu(); CMenu *psub_menu = pmain_menu->GetSubMenu(0); psub_menu->AppendMenu(MF_STRING ,WM_CHILD_DLG_MSG+s_DlgNum,str); s_DlgNum++;}/////////消息响应函数void CDialogSelView::OnChildDlgMsg(UINT uID){ int size = m_pChildDlgArray.GetSize(); ChildDlgInfo *pchild_dlg_info; for (int i = 0; i < size; i++) { pchild_dlg_info = m_pChildDlgArray.GetAt(i); UINT id = uID - WM_CHILD_DLG_MSG; if (pchild_dlg_info->uID == id) { pchild_dlg_info->pChildDlg->ShowWindow(SW_SHOW); pchild_dlg_info->pChildDlg->SetActiveWindow(); break; } }} 关于线程返回值? 运行MSDN中的MFC实例代码出错.......在线等 急,急,急,急,编译的问题. why - 对话框hide 后用 ShowWindow 再次打开时为什么不响应系统消息? 各位大虾可否推荐我一本用C++实现的数值计算(计算方法)的书? 深入研究Windows内部原理系列视频教程 如何自动关闭其他运行的程序? 在对话框中放一个静态文本,为何执行时看不到该文本? 在中国,一个VC程序员能有前途吗?(只能给47分,我会再加!) 在对话框程序中 pCmdUI->SetCheck(1)不起作用?? 谁有My IE的源码,请帮忙 关于DirectX的小问题(在线等)
别忘了给分:)
我写了个小程序来实现了这个过程,现在简要说明如下:1.通过OnBTNAdd来增加对话框,并将对话框名增加到菜单中,给菜单一个命令号
2.当选择对话框的选取菜单时,就会触发函数OnChildDlgMsg,它有个参数来指出触发这个函数的消息,通过这个参数数你就能知道该显示激活哪一个对话框;///////定义
#define WM_CHILD_DLG_MSG (WM_USER + 0X100)
typedef struct ChildDlgInfotag {
CChildDlg *pChildDlg;
UINT uID;
}ChildDlgInfo;/////消息映射
ON_COMMAND_RANGE(WM_CHILD_DLG_MSG, WM_CHILD_DLG_MSG + 1000,
OnChildDlgMsg)
//////增加对话框的函数
void CDialogSelView::OnBTNAdd()
{
ChildDlgInfo *pchild_dlg_info = new ChildDlgInfo;
CChildDlg *pchild_dlg = new CChildDlg; pchild_dlg->Create(CChildDlg::IDD, this); CString str;
static s_DlgNum = 1;
str.Format("Dialog%d", s_DlgNum); pchild_dlg->SetWindowText(str);
pchild_dlg->CenterWindow(NULL);
pchild_dlg->ShowWindow(SW_SHOW); pchild_dlg_info->pChildDlg = pchild_dlg;
pchild_dlg_info->uID = s_DlgNum; m_nCurDlg = m_pChildDlgArray.Add(pchild_dlg_info); CWnd *pmain_wnd = AfxGetMainWnd();
CMenu *pmain_menu = pmain_wnd->GetMenu();
CMenu *psub_menu = pmain_menu->GetSubMenu(0);
psub_menu->AppendMenu(MF_STRING ,WM_CHILD_DLG_MSG+s_DlgNum,str); s_DlgNum++;
}
/////////消息响应函数
void CDialogSelView::OnChildDlgMsg(UINT uID)
{
int size = m_pChildDlgArray.GetSize();
ChildDlgInfo *pchild_dlg_info; for (int i = 0; i < size; i++)
{
pchild_dlg_info = m_pChildDlgArray.GetAt(i);
UINT id = uID - WM_CHILD_DLG_MSG;
if (pchild_dlg_info->uID == id)
{
pchild_dlg_info->pChildDlg->ShowWindow(SW_SHOW);
pchild_dlg_info->pChildDlg->SetActiveWindow();
break;
}
}
}