将焦点设置在MFC视图中托管的无模式对话框上
Set focus on a modeless dialogs hosted in an MFC view
我有一个MFC视图,还有另一个实现MFC对话框的项目。我想在我的视图中主持对话框。我的视图属于CFormView类。
我在我的视图代码中是这样做的:
m_myDialog->Create(myDialog::IDD, this);
现在,我看到了我的对话框,但我无法将焦点设置在它上,也无法使用它
为了在视图中主持对话框,并能够使用它并将焦点设置为它,就像视图的一部分一样,我必须更改什么?
感谢
我知道这已经有几周的历史了,但您需要提供更多的代码或更好的上下文来描述正在发生的事情。
我也有类似的问题&当我第一次尝试这个时,发现很难找到这个信息。下面是我用过的东西的摘要。我相信可能有更好的方法可以做到这一点,但我发现它以我想要的方式工作;
//MyApp.h
class MyDialogClass;
class MyApp : public CWinAppEx
{
public:
MyApp();
virtual BOOL InitInstance();
//code etc
MyDialogClass *p_myDlg;
};
//MyApp.cpp
#include "MyApp.h"
#include "CMyView.h"
#include "mydialogclass.h"
BOOL MyApp::InitInstance()
{
//code etc
p_myDlg = CMyView::GetView()->p_myDlg;
//can be used here or elsewhere. I have mine linked with a button
p_myDlg->ShowWindow(true);
};
//CMyView.h
class MyDialogClass;
class CMyView : public CFormView
{
protected: // create from serialization only
CMyView();
DECLARE_DYNCREATE(CMyView)
public:
enum{ IDD = IDD_CMyView_VIEW };
static CMyView* GetView();
MyDialogClass *p_myDlg;
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
};
//CMyView.cpp
#include "MyApp.h"
#include "CMyView.h"
#include "mydialogclass.h"
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
p_myDlg = new MyDialogClass(this);
return 0;
}
void CMyView::DisplayDialogFoo()
{
//can be used here or elsewhere. I have mine linked with a button
p_myDlg->ShowWindow(true);
}
//mydialogclass.h
class MyDialogClass : public CDialog
{
DECLARE_DYNAMIC(MyDialogClass)
public:
MyDialogClass(CWnd* pParent /*= NULL*/);
enum { IDD = IDD_MyDialog_DLG };
};
//mydialogclass.cpp
#include "mydialogclass.h"
MyDialogClass::MyDialogClass(CWnd* pParent /*=NULL*/)
: CDialog(MyDialogClass::IDD, pParent)
{
Create(IDD, pParent);
}
这里还有一篇我刚刚发现的文章:http://www.codeproject.com/Articles/1651/Tutorial-Modeless-Dialogs-with-MFC
相关文章:
- 如何检测窗口当前是否正在运行模式对话框?
- wxWidgets - 阻止 OS X 上的窗口模式对话框
- 如何在另一个线程中关闭 MFC 模式对话框并获取对话框返回值?
- 防止模式对话框中的事件循环阻塞
- 从模式对话框中退出 MFC 应用
- 当主GUI线程被阻塞时,如何从工作线程创建无模式对话框
- MFC 结束对话框崩溃时模式对话框没有焦点
- 将焦点设置在MFC视图中托管的无模式对话框上
- 模式对话框不会作为最上面的窗口打开
- 从无模式对话框启动CFileDialog时会冻结
- 使用ESC键取消Carbon模式对话框
- 为什么MFC中的模式对话框实际上是内部无模式的
- 当另一个窗口关闭时关闭无模式对话框
- 如何在 WTL 中删除指向无模式对话框的指针
- 线程退出时 DLL 中的 MFC 无模式对话框被销毁
- Qt:关闭模式对话框关闭程序
- 如何在 QModelView 中组合模式对话框编辑器和就地小组件编辑器
- C++ 使用 WINAPI 启动多个无模式对话框(无 MFC)
- 模式对话框处于活动状态时隐藏MFC主窗口
- MFC无模式对话框立即关闭