STDMETHODIMP CO562634::ShowWindow()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // 这句你有吗?
if( m_pMyDialog != NULL )
{
m_pMyDialog->DestroyWindow();
delete m_pMyDialog;
}
m_pMyDialog = new CMyDialog();
m_pMyDialog->Create(IDD_DIALOG1);
m_pMyDialog->ShowWindow(SW_SHOW); return S_OK;
}
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // 这句你有吗?
if( m_pMyDialog != NULL )
{
m_pMyDialog->DestroyWindow();
delete m_pMyDialog;
}
m_pMyDialog = new CMyDialog();
m_pMyDialog->Create(IDD_DIALOG1);
m_pMyDialog->ShowWindow(SW_SHOW); return S_OK;
}
AfxSetResourceHandle(GetModuleHandle( "lm_st2d.dll" ));//你要调用的dll库
CDlgStlibStandardData dlg;
dlg.m_st2d = st2d;
if (dlg.DoModal() == IDOK)
{
...
}
AfxSetResourceHandle(hInst);
红地技术有限公司,你把金银花的代码贴出来不怕给人扁嘛?
AfxEnableControlContainer()函数后,在testDLL主程序中加一个对话框,并
先打开主程序的对话框,然后关闭这个对话框,调用动态连接库,就能够打开连接库中的对话框,不知道是什么原因,我想直接打开dll中的对话框,不知道要做何修改?
这个可以通过DllMain得到,或者如果是ATL project, 可以通过_Module.GetModuleInstance()来获得,不用给定名字
BOOL classX::Create(CWnd *pParentWnd)
{
m_lpszTemplateName=NULL;
HRSRC hResource = ::FindResource(yourDLL.hModule, MAKEINTRESOURCE(IDD), RT_DIALOG);
m_hDialogTemplate = LoadResource(yourDLL.hModule, hResource);
BOOL bResult = CreateIndirect(m_hDialogTemplate, pParentWnd, yourDLL.hModule);
FreeResource(m_hDialogTemplate);
return bResult;
}
在接口函数中
CoInitialize(NULL);
dlg.DoModal();
CoUninitialize();
这样你也可以用activex控件了。AfxEnableControlContainer还是要用