RT...有人遇过么?
俺就建了个cpp,包含了windows.h.
然后将入口函数改成MyMain,在MyMain中创建一个窗体,然后进入消息循环..
但是,PostQuitMessage(0)后,消息循环while(GetMessage(&msg,NULL,0,0))括号中变成0,确实是退出了,主线程也exit了..但是程序still running..
咋回事.....晕了...

解决方案 »

  1.   

    然后将入口函数改成MyMain,在MyMain中创建一个窗体,然后进入消息循环.. 
    =========
    C++的入口函数也能改吗?
    将代码发上来看看吧
      

  2.   

    destroywindow()试试。。你的程序still running是什么意思。。是窗口没destroy么
      

  3.   

    #include "windows.h"
    //#include "ErrorMessageBox.h"
    //#pragma comment(lib,"ErrorMessageBox.lib")LRESULT CALLBACK MsgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
    switch(uMsg)
    {
    case WM_CLOSE:
    {
    DestroyWindow(hWnd);
    break;
    }
    case WM_DESTROY:
    {
    PostQuitMessage(0);
    //SendMessage(hWnd,WM_QUIT,0,0);
    break;
    }
    default:
    {
    return DefWindowProc(hWnd,uMsg,wParam,lParam);
    }
    }
    return DefWindowProc(hWnd,uMsg,wParam,lParam);
    }
    int WINAPI UniMain(
       HINSTANCE hInstance,      // handle to current instance
       HINSTANCE hPrevInstance,  // handle to previous instance
       LPSTR lpCmdLine,          // command line
       int nCmdShow              // show state
       )
    /*INT WINAPI UniMain()*/
    {
    WNDCLASSEX wc;
    ZeroMemory(&wc,sizeof(WNDCLASSEX));
    wc.lpszClassName=TEXT("aaaaa");
    wc.hInstance=hInstance;//(HINSTANCE)::GetModuleHandle(NULL);
    wc.lpfnWndProc=MsgProc;
    wc.style=CS_HREDRAW|CS_VREDRAW;
    wc.cbSize=sizeof(WNDCLASSEX);
    if(RegisterClassEx(&wc)==NULL)
    {
    // ErrorMessageBox();
    }
    HWND hWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,TEXT("aaaaa"),TEXT("自定窗口"),WS_OVERLAPPEDWINDOW,100,100,400,400,NULL,NULL,::GetModuleHandle(NULL),0);
    if(!hWnd)
    {
    // ErrorMessageBox();
    } ShowWindow(hWnd,SW_SHOWNORMAL);
    UpdateWindow(hWnd); MSG msg;
    BOOL bRet; while(GetMessage(&msg,NULL,0,0))
    {
    //  if(bRet==-1)
    //  {
    //  ErrorMessageBox();
    //  }
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    1+1;
    return 0;
    }
      

  4.   

    恩,任务管理器.
    入口函数是简单地在vs2008工程属性的Linker-Advanced-EntryPoint那改的.
      

  5.   

    假如用WinMain的话一切OK...
    恩...程序是从哪开始执行?运行时库?然后再调用WinMain?
      

  6.   

    我用VC6,好像改不了入口函数,过不了编译,不过改成WinMain后没什么问题,除了窗口无背景外,能退出!
      

  7.   

    用WinMain吧,我这边也测试过了
      

  8.   

    假如用WinMain的话一切OK... 
    恩...程序是从哪开始执行?运行时库?然后再调用WinMain?
    ===============
    一般是运行时库的int WinMainCRTStartup(void);调用入口函数的
      

  9.   

    恩恩...
    只是想试试不用WinMain会怎样...
    假如不是用vc2008编译器呢?因为今天突然发现,好象有点太依赖编译器了...感觉不是在学c++,是在学vs2008...
    建一个空的cpp,发现自己居然啥都写不出...我去看下WinMainCRTStartup好了,谢谢了.
      

  10.   

    WinMainCRTStartup的话,需要在VC6中进行设置
    Project --> Settings... -->Link --> Category选Output --> Entry-point symbol -->把WinMainCRTStartup