C++MFC SDI创建子窗口
C++ MFC SDI create child window
我可能会因为不知道更多而听起来有点像白痴,但坦率地说,我更倾向于指责在这件事上缺乏在线帮助。
在我听说MFC的一般意见之前,我决定使用MFC创建一个新程序(使用带有View/Doc模型的SDI)。因此,我的应用程序包括主框架窗口(CMainFrame
)、子窗口(CMFCTestView
)和文档(CMFCTestDoc
)。无论如何,我想拥有它,这样当用户按下工具栏上的"新建"按钮时,它就会去掉我当前拥有的子窗口,并用一个新的、新的子窗口替换它。
我目前拥有的代码是:
void CMainFrame::OnFileNew()
{
#ifdef _DEBUG
_cprintf("New Game!");
#endif
Board b = Board(9, 9, 9);
theApp.RecieveBoard(b);
// Create(_T("CMFCTestDoc"), _T("CMFCTestView"), WS_CHILD | WS_VISIBLE,
// rectDefault, this);
CreateEx(NULL, _T("CMFCTestView"), _T("Minesweeper"), WS_CHILD | WS_VISIBLE, rectDefault, this, IDR_MAINFRAME, 0);
}
我在网上能找到的少量信息告诉我,CreateEx
是用于创建新子窗口的函数,所以我试图将这里的示例应用于我的应用程序,但我遇到了一个错误,因为它无法创建窗口。我该如何完成我想要做的事情?
额外的好处:如何将数据传递给新的子窗口?假设您希望在首次向用户显示窗口时设置某些变量/值。我试图遵循这个答案,但在基于CMultiDocTemplate派生出自己的类后,我感到困惑。
如果我正确理解您的问题,MFC SDI应用程序将重用相同的文档和默认视图来显示文档的内容。你不必处理来自主框架窗口的new file
命令以创建新视图。当用户点击new file
命令时,默认实现将调用文档类的CDocument::OnNewDocument
成员函数。从那里你可以重新初始化你的数据。
可能是这样的:
BOOL CMFC_testDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
//here you reinitialize your data in the document class,which will be presented by the view to the user
return TRUE;
}
相关文章:
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 窗口 :创建仅具有对我的进程的权限的目录 (C++)
- DXGI_ERROR_INVALID_CALL为核心窗口创建交换链时
- 视觉C++窗口创建失败
- 从 WinAPI 窗口创建控制台窗口
- 窗口创建错误 - 可能是事件处理
- Qt:当主窗口被模式QDialog阻止时,如何聚焦从主窗口创建的无模式QDialog
- Visual Studio 2012应用程序窗口创建/调整大小与VS2008窗口创建不同?为什么?
- C++/SFML窗口创建失败
- 窗口创建问题
- 使用创建窗口创建 MDI 子窗口
- MDI 子窗口创建失败
- Win32窗口创建失败
- 挂钩窗口创建;挂钩未被触发
- 如何使用'C'或'C++'为窗口创建独立的程序或应用程序
- 调用glfwWindowHint()后,GLFW窗口创建失败
- c++窗口创建/ SDL
- Qt从我的主窗口创建新窗口
- 窗口创建失败-LoadFrame(IDR_MAINFRAME)使C++失败
- Visual Studio和SDL2窗口创建失败