16,551
社区成员
发帖
与我相关
我的任务
分享
BOOL CCTestDlg::Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName)
{
ASSERT(HIWORD(lpszTemplateName) == 0 ||
AfxIsValidString(lpszTemplateName));
m_lpszTemplateName = lpszTemplateName; // used for help
if (HIWORD(m_lpszTemplateName) == 0 && m_nIDHelp == 0)
m_nIDHelp = LOWORD((DWORD)m_lpszTemplateName);
#ifdef _DEBUG
if (!_AfxCheckDialogTemplate(lpszTemplateName, FALSE))
{
ASSERT(FALSE); // invalid dialog template name
PostNcDestroy(); // cleanup if Create fails too soon
return FALSE;
}
#endif //_DEBUG
HINSTANCE hInst = AfxFindResourceHandle(lpszTemplateName, RT_DIALOG);
HRSRC hResource = ::FindResource(hInst, lpszTemplateName, RT_DIALOG);
HGLOBAL hTemplate = LoadResource(hInst, hResource);
// BOOL bResult = CreateIndirect(hTemplate, pParentWnd, hInst);
// write own CreateIndirect
ASSERT(hTemplate != NULL);
LPCDLGTEMPLATE lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hTemplate);
// BOOL bResult = CreateIndirect(lpDialogTemplate, pParentWnd, NULL, hInst);
ASSERT(lpDialogTemplate != NULL);
if (pParentWnd == NULL)
pParentWnd = AfxGetMainWnd();
m_lpDialogInit = NULL;
AfxSetModuleState(AfxGetThreadState()->m_pPrevModuleState);
CreateDlgIndirect(lpDialogTemplate, pParentWnd, hInst);
UnlockResource(hTemplate);
FreeResource(hTemplate);
// ASSERT(pParentWnd != NULL);
ASSERT(lpszTemplateName != NULL);
return TRUE;
}