奇怪的有关问题,折腾好久了。没有Messagebox就不显示按钮

奇怪的问题,折腾好久了。没有Messagebox就不显示按钮?
C/C++ code
// 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的代码

问题出现
C/C++ code

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;
}



毫无效果

但是加入了MessageBox
C/C++ code

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;


却有效果了!

这是怎么回事。。
应该如何修改?

------解决方案--------------------
我估计是线程结束了造成的,你在线程里加一个消息循环试试看。