You can not call DLLMain in DLLMain. You should not block DLLMain with a message pump.
解决方案 »
- vs2010 ADO如何获得字符集字段名称 和个数的问题
- 各位大老们!!!按钮响应鼠标事件问题,
- CreateFileMapping 的几个问题
- 当我关闭一个程序的时候。我如何把内存关于这个程序的东西。也关掉!
- 有什么发布可以把程序变成一个setup文件啊?
- 如何处理SQL语句中含有的'符号
- 请问高手:如何在CTreeView控件中使用鼠标右键事件选中鼠标所点击的项?
- 如何得到某进程的主线程及根据线程ID得到线程句柄
- 请问程序中怎样使用Windows密码认证?
- 很有意思的问题,高手就来讨论讨论
- 针式打印机Epson LQ-300K+2 走纸的问题!
- 如何让Serialize写入的数据为文本而不是二进制数据!!
在InitInstance() 里创建一个UI线程,在这个线程里创建窗口。
下面是我的线程函数
UINT _stdcall ThreadFunc(LPVOID lpParam)
{
m_CHookDlg.Create(IDD_HOOKDIALOG,NULL);
HWND hDlgModeless=m_CHookDlg.GetSafeHwnd();
m_CHookDlg.ShowWindow(SW_SHOW);
UpdateWindow(m_CHookDlg.m_hWnd);
//MessageBox(NULL,"dsf","adf",0);
MSG msg;
while(::GetMessage(&msg,NULL,0,0))
{ if(hDlgModeless==0||!::IsDialogMessage(hDlgModeless,&msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
m_CHookDlg.DestroyWindow();
return 0;
}在InitInstance()中调用代码为
BOOL CGameDllApp::InitInstance()
{
// TODO: Add your specialized code here and/or call the base class
::CloseHandle((HANDLE)::_beginthreadex(NULL,0,ThreadFunc,NULL,0,&dwThreadID));
return TRUE
}
while(::GetMessage(&msg,NULL,0,0))
{if(hDlgModeless==0||!::IsDialogMessage(hDlgModeless,&msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);}}
非模式对话框,除非destroy,否则会一直显示的。
2.必要时使用AfxGetResourceHandle和AfxSetResourceHandle来切换资源句柄