怎么编写一个调用windows api 的程序,演示messageboxa的16种不同的组态
1个回答
2017-06-04
展开全部
知其然要知其所以然。不管你是直接C++sourcefile,还是win32Application,只要你了解其本质,那么你可以通过简单的配置,使你的程序成功运行起来。下面我告诉你如何在命令提示符(cmd.exe或commandprompt)下编译你的程序。1.如何进入初始化编译器环境的命令提示符:1)如果还是使用VC++6.0。那么在开始->运行中输入cmd,然后回车。在cmd.exe中使用cd命令进入你的VC++6.0安装目录的VC目录下,应该可以找到vcvars32.bat,然后在cmd.exe运行vcvars32.bat批处理脚步就可以了。2)如果是VS2005200820102012,那么在开始中找到对应目录,在这个目录下有个开发工具目录,里面有个vsx32commandprompt,直接点击就可以了。2.如何在以上命令提示符中编译你的程序,假设你上面的程序文件为test.c:cl/?#查看编译器使用帮助cl/OUT:test.exekernel32.libuser32.libgdi32.lib/SUBSYSTEM:WINDOWS/ENTRY:WinMainStartup/MANIFEST:NO/MDtest.c这样可以成功编译出来的text.exeTip:问题的关键是/SUBSYSTEM和/ENTRY/SUBSYSTEM:[CONSOLES,WINDOWS,]这是主要的两个参数。/ENTRY:[WinMainStartup,mainCRTStartup]就这两个参数。(WinMainStartup可能是WinMainCRTStartup,我记不清了)问题关联:1.当你直接C++sourcefile时,/SUBSYSTEM:CONSOLES/ENTRY:mainCRTStartup(这时入口函数时main,,它说crt0.obj使用了一个叫main的函数,你却没有写)2.当你使用win32application时,/SUBSYSTEM:WINDOWS/ENTRY:WinMainCRTStartup(这时你的程序符合要求,因为它找到了WinMain函数)拓展:#include#pragmacomment(lib,"User32.lib")intmain(intargc,char*argv[]){MessageBox(NULL,TEXT("开始学习"),TEXT("消息对话框"),MB_OK);return0;}把WinMain改成标准C/C++的main之后如何运行程序,因为你使用MessageBox函数,使用了win32API,故/SUBSYSTEM:WINDOWS。又因为你使用main函数为程序入口函数,故/ENTRY:mainCTRStartup。编译命令如下:cl/OUT:test.exekernel32.libuser32.libgdi32.lib/SUBSYSTEM:WINDOWS/ENTRY:mainCRTStartup/MANIFEST:NO/MDtest.cNote:以上参数都可以在VC++开发环境工程设置里面进行更改设置,由于我是在Unix下工作,很久没有接触VC,以上参数可能存在偏差,请使用cl/?link/?res/?nmake/?等自行仔细查看。另外,我建议开始编程使用命令加脚本的方式编程,学会使用自己编写Makefile,因为VC++的图形开发环境本质就是建立在各种脚本之上,所以对排查程序错误能够有本质上的认识。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询