RT...有人遇过么?
俺就建了个cpp,包含了windows.h.
然后将入口函数改成MyMain,在MyMain中创建一个窗体,然后进入消息循环..
但是,PostQuitMessage(0)后,消息循环while(GetMessage(&msg,NULL,0,0))括号中变成0,确实是退出了,主线程也exit了..但是程序still running..
咋回事.....晕了...
俺就建了个cpp,包含了windows.h.
然后将入口函数改成MyMain,在MyMain中创建一个窗体,然后进入消息循环..
但是,PostQuitMessage(0)后,消息循环while(GetMessage(&msg,NULL,0,0))括号中变成0,确实是退出了,主线程也exit了..但是程序still running..
咋回事.....晕了...
=========
C++的入口函数也能改吗?
将代码发上来看看吧
//#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;
}
入口函数是简单地在vs2008工程属性的Linker-Advanced-EntryPoint那改的.
恩...程序是从哪开始执行?运行时库?然后再调用WinMain?
恩...程序是从哪开始执行?运行时库?然后再调用WinMain?
===============
一般是运行时库的int WinMainCRTStartup(void);调用入口函数的
只是想试试不用WinMain会怎样...
假如不是用vc2008编译器呢?因为今天突然发现,好象有点太依赖编译器了...感觉不是在学c++,是在学vs2008...
建一个空的cpp,发现自己居然啥都写不出...我去看下WinMainCRTStartup好了,谢谢了.
Project --> Settings... -->Link --> Category选Output --> Entry-point symbol -->把WinMainCRTStartup