关于网友提出的“ 奇怪的问题,折腾好久了。没有Messagebox就不显示按钮?”问题疑问,本网通过在网上对“ 奇怪的问题,折腾好久了。没有Messagebox就不显示按钮?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 奇怪的问题,折腾好久了。没有Messagebox就不显示按钮?
描述:本帖最后由 liuqi8523 于 2012-07-23 17:14:41 编辑
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "windows.h"
#include "stdafx.h"
#define _T TEXT
HWND hwnd;
HINSTANCE hIns;
HWND hwndButton = NULL;
HANDLE hThread;
HWND hwndDLG;
DWORD WINAPI FunProc(LPVOID lparamater)
{
hwnd = FindWindow(NULL,_T("Warcraft III"));
hIns = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);
hwndButton= CreateWindow(_T("Button"), _T("btn"), WS_VISIBLE|WS_CHILD, 5, 5, 80, 20,hwnd, NULL, GetModuleHandle(0), NULL);
if(hwndButton == NULL)
{
MessageBox(hwnd,_T("shibai"),_T("shibai"),MB_OK);
}
ShowWindow(hwndButton,SW_RESTORE);
return 0;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
hThread = CreateThread(NULL,0,FunProc,NULL,0,NULL);
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
WaitForSingleObject(hThread,0);
}
return TRUE;
}
以上是Dllmain的代码
问题出现
DWORD WINAPI FunProc(LPVOID lparamater)
{
hwnd = FindWindow(NULL,_T("Warcraft III"));
hIns = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);
hwndButton= CreateWindow(_T("Button"), _T("btn"), WS_VISIBLE|WS_CHILD, 5, 5, 80, 20,hwnd, NULL, GetModuleHandle(0), NULL);
if(hwndButton == NULL)
{
MessageBox(hwnd,_T("shibai"),_T("shibai"),MB_OK);
}
ShowWindow(hwndButton,SW_RESTORE);
//不增加MessageBox(hwnd,_T("shibai"),_T("shibai"),MB_OK);
return 0;
}
[img=http://s10.sinaimg.cn/middle/61004178n7a25f776be09&690][/img]
毫无效果
但是加入了MessageBox
hwnd = FindWindow(NULL,_T("Warcraft III"));
hIns = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);
hwndButton= CreateWindow(_T("Button"), _T("btn"), WS_VISIBLE|WS_CHILD, 5, 5, 80, 20,hwnd, NULL, GetModuleHandle(0), NULL);
if(hwndButton == NULL)
{
MessageBox(hwnd,_T("shibai"),_T("shibai"),MB_OK);
}
ShowWindow(hwndButton,SW_RESTORE);
MessageBox(hwnd,_T("shibai"),_T("shibai"),MB_OK);//增加了
return 0;
却有效果了!
[img=http://s6.sinaimg.cn/middle/61004178nc57ba8e0ec35&690][/img]
这是怎么回事。。
应该如何修改?
解决方案1: 我估计是线程结束了造成的,你在线程里加一个消息循环试试看。
以上介绍了“ 奇怪的问题,折腾好久了。没有Messagebox就不显示按钮?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3295257.html