这里的Class T都是继承自CDialog类
编译可以通过,因为 是DLL。
运行时老报错,debug查出错在这句话:BOOL ok = dlg->CreateIndirect(pTemplate ,wndparent);
调用语句是:
HRESULT r = CreateDllDialog(parent,IDD_EDITOR,&g_Editor);
请高手看看
template<class T> HRESULT CreateDllDialog(HWND parent,UINT resId,T** rdlg)
{
*rdlg = NULL; DLGTEMPLATE* pTemplate =NULL; HGLOBAL hTemplate = NULL;
{
//Load DLGTEMPLATE
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE hInst= AfxFindResourceHandle(MAKEINTRESOURCE(resId),RT_DIALOG);
if (hInst == NULL)
{
TRACE("Could not find resource in resource chain");
ASSERT(FALSE);
return -1;
} HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(resId),RT_DIALOG); ASSERT(hRsrc != NULL);
hTemplate = ::LoadResource(hInst, hRsrc);
ASSERT(hTemplate != NULL);
pTemplate = (DLGTEMPLATE*)::LockResource(hTemplate);
ASSERT(pTemplate != NULL); } CWnd* wndparent=CWnd::FromHandle(parent);
T* dlg = new T(wndparent);
BOOL ok = dlg->CreateIndirect(pTemplate ,wndparent); {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
::UnlockResource(hTemplate);
::FreeResource(hTemplate);
} if (ok==true)
{
dlg->ModifyStyle(0,WS_CLIPCHILDREN);
*rdlg = dlg; return S_OK;
}
delete dlg;
return -1;
}
编译可以通过,因为 是DLL。
运行时老报错,debug查出错在这句话:BOOL ok = dlg->CreateIndirect(pTemplate ,wndparent);
调用语句是:
HRESULT r = CreateDllDialog(parent,IDD_EDITOR,&g_Editor);
请高手看看
template<class T> HRESULT CreateDllDialog(HWND parent,UINT resId,T** rdlg)
{
*rdlg = NULL; DLGTEMPLATE* pTemplate =NULL; HGLOBAL hTemplate = NULL;
{
//Load DLGTEMPLATE
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE hInst= AfxFindResourceHandle(MAKEINTRESOURCE(resId),RT_DIALOG);
if (hInst == NULL)
{
TRACE("Could not find resource in resource chain");
ASSERT(FALSE);
return -1;
} HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(resId),RT_DIALOG); ASSERT(hRsrc != NULL);
hTemplate = ::LoadResource(hInst, hRsrc);
ASSERT(hTemplate != NULL);
pTemplate = (DLGTEMPLATE*)::LockResource(hTemplate);
ASSERT(pTemplate != NULL); } CWnd* wndparent=CWnd::FromHandle(parent);
T* dlg = new T(wndparent);
BOOL ok = dlg->CreateIndirect(pTemplate ,wndparent); {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
::UnlockResource(hTemplate);
::FreeResource(hTemplate);
} if (ok==true)
{
dlg->ModifyStyle(0,WS_CLIPCHILDREN);
*rdlg = dlg; return S_OK;
}
delete dlg;
return -1;
}
解决方案 »
- 如何获取文件的checksum
- bcg 主菜单一部分在左,一部分在右
- DispatchMessage(&msg)函数还干了些什么
- 如何截获安全移除的消息?
- 还是堆栈问题,有研究的过来看看
- MFC里的"//{{"符号?
- 音量调节的问题,在线等候
- There are a static control "IDC_SHOW_RESULT" In a dialog,How can I get this contorl's HANDLE?
- 喉结的《WIN32多线程程序设计》例程连接出错,怎么办
- 有没有编码方法能让VCD文件还原成压缩以前的质量??????(现在是否有这样的软件???)
- 如何让ie不从wsarecv接受数据,而从recv接受数据
- 急求vc6下载!!!!!!!!!!!!!11111
放在 BOOL ok = dlg->CreateIndirect(pTemplate ,wndparent);
的前面