我创建了一个MFC DLL工程
想要一个结果 就是将DLL注入到进程后 马上显示对话框我在DLL这样写的CDll1App::CDll1App()
{
// TODO: add construction code here,
m_xiaoer * pDialog;
pDialog->DoModal() ; // Place all significant initialization in InitInstance
}
注入到进程后 弹出错误然后有尝试这样:
CDll1App::CDll1App()
{
// TODO: add construction code here,
m_xiaoer* pDlg=new m_xiaoer();
pDlg->Create (IDD_DIALOG1);
pDlg->ShowWindow (SW_SHOW); // Place all significant initialization in InitInstance
}
依然弹出错误 终止进程然后我试试 API 创建对话框响应 模态对话框 HINSTANCE hInstance=(HINSTANCE)GetModuleHandle(NULL);
::DialogBox (hInstance,MAKEINTRESOURCE(IDD_DIALOG1),this->m_hWnd,DialogProc); //this-〉 = NULL 非模态响应 非模态对话框 多窗口 HINSTANCE hInstance=(HINSTANCE)GetModuleHandle(NULL);
HANDLE hDlg=CreateDialog (hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
::ShowWindow ((HWND)hDlg,SW_SHOW);
注入到进程后 程序没有错误, 但是对话框没有显示出来
想要一个结果 就是将DLL注入到进程后 马上显示对话框我在DLL这样写的CDll1App::CDll1App()
{
// TODO: add construction code here,
m_xiaoer * pDialog;
pDialog->DoModal() ; // Place all significant initialization in InitInstance
}
注入到进程后 弹出错误然后有尝试这样:
CDll1App::CDll1App()
{
// TODO: add construction code here,
m_xiaoer* pDlg=new m_xiaoer();
pDlg->Create (IDD_DIALOG1);
pDlg->ShowWindow (SW_SHOW); // Place all significant initialization in InitInstance
}
依然弹出错误 终止进程然后我试试 API 创建对话框响应 模态对话框 HINSTANCE hInstance=(HINSTANCE)GetModuleHandle(NULL);
::DialogBox (hInstance,MAKEINTRESOURCE(IDD_DIALOG1),this->m_hWnd,DialogProc); //this-〉 = NULL 非模态响应 非模态对话框 多窗口 HINSTANCE hInstance=(HINSTANCE)GetModuleHandle(NULL);
HANDLE hDlg=CreateDialog (hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
::ShowWindow ((HWND)hDlg,SW_SHOW);
注入到进程后 程序没有错误, 但是对话框没有显示出来
我做一个对话框程序,其中有一部分需要根据不同的设置显示不同的控件。
我做了一个dll,用于创建这一部分的内容。使用CWND派生,
BOOL WINAPI CreateSonWnd(CWnd* parentWnd,UINT theVideoID,HWND& theVideoHwnd,CString& ErrorString)
{
theApp.m_TheSonWnd=new SonWnd();
bool TheResult=theApp.m_TheVideoSonWnd->Create(NULL,NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),parentWnd,theVideoID);
return TheResult;
}
创建后可以显示基本的控件
存在两个问题:
一是在SonWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)函数中创建ocx实例时不起作用,也不显示;
二是点击SonWnd时没有反应,主程序直接无响应!
请高手指点
资源编辑器画好后直接建一个关联此对话框的类,然后写一个单独的函数显示窗口。最后把这个函数导出在程序里面调用就好了。栗子:void ShowTest()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // 用于模块切换时的状态保护
CTest Dlg;
Dlg.DoModal();
}
typedef bool(*pShowTest)(void);
HINSTANCE hDLL;
pShowTest ShowTest;
hDLL=LoadLibrary(_T("test.dll"));//加载DLL
ShowTest=(pShowTest)GetProcAddress(hDLL,"?pShowTest@@YAXXZ");
ShowTest();
FreeLibrary(hDLL);//卸载DLL
如果可以的话 请求你创建一份MFC DLL给我吧
只要一句话吗 能正常显示对话框就好了!
如果可以的话 请求你创建一份MFC DLL给我吧
只要一句话吗 能正常显示对话框就好了!
http://mail.qq.com/cgi-bin/ftnExs_download?K=75396532a380989e0ea903114033574e000f5c0a530603071c0f5d07511e5156010148505e01004c000c045455035c03570c5501663c65295455095d227f29255d5e4b4007416526&t=exs_ftn_download&code=19e2f3ea
VS2012开发的一个小程序,模态正常,非模态有问题
=======吐槽========
诅咒各路网盘,各种登不上……
诅咒QQ输入法,今天害chrome崩溃好几次……
需要在函数中加入
AFX_MANAGE_STATE(AfxGetStaticModuleState());
并且只能用定义对象的方式调用,如果是对象指针好像也会报错如果需要在对话框上显示ocx则需要在InitInstance()函数中增加
AfxEnableControlContainer();