/*****************************感谢关注*****************************/
//////////////////////////////Creamdog/////////////////////////////
先用FindWindow找着那个窗体HWND FindWindow(
LPCTSTR lpClassName, // class name
LPCTSTR lpWindowName // window name
);
如果不知道ClassName的话用EnumDesktopWindow
BOOL EnumWindows(
WNDENUMPROC lpfn, // callback function
LPARAM lParam // value to pass to callback function
);
如果不会用的话………………我倒!
不过还是说一下吧,lpfn给一个函数来处理找到的窗体,lParam随便给了,和你的那个函数里的这个参数值一样就行。获取到Window的句柄之后,ShowWindow(hWnd,SW_SHOWNORMAL);
//////////////////////////////Creamdog/////////////////////////////
先用FindWindow找着那个窗体HWND FindWindow(
LPCTSTR lpClassName, // class name
LPCTSTR lpWindowName // window name
);
如果不知道ClassName的话用EnumDesktopWindow
BOOL EnumWindows(
WNDENUMPROC lpfn, // callback function
LPARAM lParam // value to pass to callback function
);
如果不会用的话………………我倒!
不过还是说一下吧,lpfn给一个函数来处理找到的窗体,lParam随便给了,和你的那个函数里的这个参数值一样就行。获取到Window的句柄之后,ShowWindow(hWnd,SW_SHOWNORMAL);
在另一个窗口中建立你要调用的两个窗口类的对象。
在TreeView中如果点1。
则调用a窗口的对象的DoModal()
点则调用b窗口的对象的DoModal()同时调用a窗口对象的EndDialog()
这样就好了。
CParentDlg parentDlg;
CChildDlg1 chldDlg1;
CChildDlg2 chldDlg2;
在CParentDlg中增加一控件IDC_FRAME,设置CChildDlg1 和CChildDlg2的风格为thin,child.
在CParentDlg::OnInitialize()中创建CChildDlg1 chldDlg1;和CChildDlg2 chldDlg2;对象并隐藏(只显示其中一个).给出部分代码:
CParentDlg::OnInitialize()
{
RECT pos;
CWnd *pChld = GetDlgItem(IDC_FRAME);
pChld->GetClientRect(&pos);
pChld->ClientToScreen(&pos);
chldDlg1.Create(..);
chldDlg2.Create(..);
chldDlg1.MoveTo(&pos);
chldDlg2.MoveTo(&pos);
chldDlg2.ShowWindow(SW_HIDE);
chldDlg1.ShowWindow(SW_SHOW);
}
再增加CTreeList控件的处理消息函数.点不同的ITEM时分别将这两个对话框隐藏和显示就可以了.....
我再补充一点。
当主对话框关闭时,你还需要处理关闭逻辑,就像属性页一样。
最好是关闭时,给所有的子对话框发送消息,通知主对话框即将关闭。如:
当你点击主对话框的确定按钮时,你需要
SendMessage(AllChild,WM_COMMAND,IDOK,0);//具体的参数我不太记得了。
当你点击主对话框的取消按钮时,你需要
SendMessage(AllChild,WM_COMMAND,IDCANCEL,0);//具体的参数我不太记得了。