有两个对话框窗口1,2,其中对话框窗口1是通过对对话框窗口2上的一个BUTTON进行消息响应得到的,程序刚一运行时是显示的对话框窗口2,当点击BUTTON时,让对话框窗口1显示,并将对话框窗口2销毁或隐藏,如何能办到?我也试过用DestoryWindow();ShowWindow(SW_SHOW);但都不行!
解决方案 »
- 编辑框如何屏蔽回车键
- 我在SDI的View中加载了一个Dialog,然后在Dialog中注册网络事件,进行基于TCP的socket通信,但是现在发现这些事件没有响应,请问是怎么回事?
- 如何控制windows的某个服务程序?能举些例子最好
- 一张图片,上面有几个数字,可以用VC做个程序识别上面的数字吗?
- 用vc编程,怎样在dll中可以得到客户应用程序的主窗口类指针?
- 新手问题:一个不明白的问题……
- 面试的问题
- 一个跟数据库有关的问题
- 如何用GPU进行三维可视化
- 请教关于类中静态结构成员初始化的问题
- 源代码如何保密的问题!
- 如何在CDialog上显示一个以CView为基类的窗口??????????????急,急,急,急,急,谢谢了。
CChatDlg* pDlg = new CChatDlg(ChattingID , RecMsg , MyID , ChattingBuddyName, &ChatDialogMap);
pDlg->SetChatType(ChatType);
pDlg->Create(IDD_DIALOG_CHAT,::CWnd::FromHandle(::GetDesktopWindow()));
这是个非摸态出窗体的,pDlg->Create(IDD_DIALOG_CHAT,::CWnd::FromHandle(::GetDesktopWindow()));使得点击BUTTON出来的新的窗体的所有操作和原来窗体分开!
然后你在后面加一个原来窗体的销毁估计就可以,你试试
自己写回调函数把系统消息Hook起来.
不过有些麻烦.建议多看看回调函数和系统消息处理.
WNDPROC g_oldWndProc;
///...
//..... //在窗口1Init的时候调用
WNDPROC oldProc = (WNDPROC)::SetWindowLongPtr(parent, GWLP_WNDPROC, (LONG)CustomWndProc);
if ( g_oldWndProc == NULL )
g_oldWndProc = old;
然后自己回调
LRESULT CALLBACK CustomWndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam )
{
// Call the default procedure.
LRESULT result = ::CallWindowProc(g_oldWndProc, hWnd, nMsg, wParam, lParam); return result;
}
我认为你可以在dialog1的窗体初始化的时候将dialog2作为模式对话框显示出来,那么只有dialog2 close的时候,dialog1才会显示出来。呵呵~~不知道这样能否帮你解决问题?
在CXXDialog2的OnButtonX中执行this->ShowWindow(SW_HIDE);//隐藏Dialog2
CXDialog1 dlg1;
dlg1.Domodal();//显示Dialog1
this->ShowWindow(SW_SHOW);//Dialog1关闭后再显示Dialog2
我初学MFC Dialog时就这样做过。