我想基本上每一个有Windows GUI编程经历的人都知道:对于一般的Win32 Console程序(就是一般的C/C++程序),程序的入口是main;对于一般的 Win32 GUI程序,程序的入口是WinMain。
对于main不一定就是一般C/C++程序的入口,看过不少相关的评论也算是知道的,main仅仅是一个标准规定的符号;对于GUI程序,如果用前面的情况类比,那么WinMain也不一定就是入口。只不过……你想象过用main来换掉WinMain吗?
我是没有想过的,虽然这说的通,main怎么说都是标准的定义,WinMain不过是微软自己定的,但main没有WinMain定义的参数。再说进入WinMain之前的“初始化”也可能和进入main之前的不一样。
不过经过今晚,尽管无法断言初始化的工作是否一样(十有八九不一样),但是用main来代替WinMain,应该是行得通的。WinMain的四个参数中,第二个一般用不上,第三个和main的第二个差不多,第四个是可以显式指定的,剩下的第一个,可以通过GetModuleHandle(NULL)来获得,结果:
int main () { HINSTANCE hInst = GetModuleHandle(NULL); /* ... */ }
然后编译,链接,记得链接上GUI程序所必需的核心库。然后运行,得到的结果和用WinMain写的看上去是一样的,除了多了个黑色底的console window。
最新评论