在网上搜索了一下,似乎没有完整的解决方案。
本人经过查看MFC源代码,找到了一个解决方案。
1、首先,在资源中,将对话框的WS_VISIBLE属性去掉。
2、重载DoModal以及RunModalLoop函数。具体代码如下:
int CTestDlgDlg::DoModal() { // TODO: Add your specialized code here and/or call the base class // can be constructed with a resource template or InitModalIndirect ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL || m_lpDialogTemplate != NULL); // load resource as necessary LPCDLGTEMPLATE lpDialogTemplate = m_lpDialogTemplate; HGLOBAL hDialogTemplate = m_hDialogTemplate; HINSTANCE hInst = AfxGetResourceHandle(); if (m_lpszTemplateName != NULL) { hInst = AfxFindResourceHandle(m_lpszTemplateName, RT_DIALOG); HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG); hDialogTemplate = LoadResource(hInst, hResource); } if (hDialogTemplate != NULL) lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hDialo