Win32 Application和Win32 Console Application区别
(1)Win32 Application就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的…它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。Win32 Application是为你开发windows应用程序所准备的,程序以WinMain()为入口,#include<windows.h>,能够使用win32 API函数。
(2)而Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的;或者叫CUI(Character User Interface字符用户接口)。console程序以main()为入口,不能使用win32 API函数。
2.以前一直没有注意main(int argc, char *argv[])里面的2个参数是什么意思,有什么用,现在看到很多编程书直接就用到了这2个参数。
第一个是参数个数,第二个是参数列表. 比如 a.exe a b c,参数个数就是3,argv[0]是a,argv[1]是b,argv[2]是c
3.编译时找不到xxx.pch
原因:这时因为该模块没有包括预编译头文件“stdafx.h”的缘故。VC用一个stdafx.cpp包含头文件stdafx.h,然后在stdafx.h里包含大部分系统头文件,这样编译时VC就通过编译stdafx.cpp把大部分系统头文件预编译进来了,在Debug目录下有一个很大的文件*.pch,这里就存储了预编译信息。根据这个原理,如果这个pch损坏了或被删除了,系统重新编译时就会抱怨“cannot open precompiled header file debug/*.pch”。这时怎么解决这个问题呢,打开Project-》Setting对话框选C+页,将Category下拉式列表框选中Precompiled Headers,最简单的办法就是选中第一个选项“Not using....",这样就根本不用预编译头也不去寻找pch文件,就不会出错了,但是这样做的后果是每次编译、连接都化更多的时间。
4.MessageBox
MessageBox:是编程过程中,为了达到提示效果而设计的消息提示框。根据实际使用的不同需求,可以设定不同的参数值。
形如:MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);
TEXT是一个宏。MB_后面是大写,小写就会报错.因为后面跟的是windows定义好的宏常量。MB后面也可以跟上图标,如ICONQUESTION.如果既要图标也要文字,MB_YESNO|MB_ICONQUESTION.
MessageBox是有返回值的
#include "stdafx.h"int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
int ret=MessageBox(NULL,TEXT("你超过18岁了吗?"),TEXT("提问"),MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)
{
MessageBox(NULL,TEXT("你是成人了"),TEXT("回复"),MB_OK);
}
else
{
MessageBox(NULL,TEXT("你是未成人了"),TEXT("回复"),MB_OK);
}
return 0;
}
5.if(IDYES==ret)写法会好点
if(ret==IDYES)与if(IDYES==ret)的效果一样,但写成if(IDYES==ret)的话,若把==写为=,则编译器会报错。
还有要注意的是在if 和else里面,哪怕只有一行代码,最好加上括号。