其实,一个程序要将其编译成win程序或控制台程序(对应WinMain或main),在vs08中,只需改动一个选项,
项目->属性->Linker->子系统 改为windows就是win程序,相应的会寻找WinMain函数,改为Console就是控制台的,寻找main函数。
所以一个程序文件中完全可以同时出现WinMain函数和main函数,根据编译对应的子系统选项来连接。
//
// WinMain
//
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE prevInstance,
PSTR cmdLine,
int showCmd)
{
if(!d3d::InitD3D(hinstance,
640, 480, true, D3DDEVTYPE_HAL, &Device))
{
::MessageBox(0, _T("InitD3D() - FAILED"), 0, 0);
return 0;
}
if(!Setup())
{
::MessageBox(0, _T("Setup() - FAILED"), 0, 0);
return 0;
}
d3d::EnterMsgLoop( Display );
Cleanup();
Device->Release();
return 0;
}
//main
int main()
{
printf("hello, world");
}
另外一个不同的地方是C/C++的预处理器定义:
若是控制台程序:WIN32;_DEBUG;_CONSOLE
win程序:WIN32;_DEBUG;_WINDOWS
两者显然是不同的,对于不同类型的程序,c/c++预处理器肯定会有不同的设置方式,win程序的处理方式肯定更加的多样化,所以,最好也将其进行更换。