本来,mfc都已经是很落后的东西,现在写窗体都用C#,提到vs的窗体大家都想到c#。虽然如此,但本来了解Windows窗体的编程机制,同时又本着vc6可以实现的东西,vs都可以实现而且更进步的理念,同时市面上大部分介绍win32窗体C++编程的书籍都是以VC6为版本的,所以开倒车也要在VS中实现win32窗体程序的了。

具体这样做:

1、打开VS2010,废话,如下图,创建一个win32窗体程序。

2、点下一步,直接默认设置点完成,创建一个Windows应用程序

3、可以直接编译,运行了,但是生成出来的东西并不能让我们满意,如下图所示,有一个我们并不需要出现的菜单栏,我们还想在窗体中输出一个Helloworld。

或许此刻,你觉得VC6没有这么乱吧,或者认为VC6和VS2010差别很大?按照部分书上所示,在创建工程选择第3项,编译运行一劳永逸?

但其实并不是,在VC6同样如此的。而且你还可以发现,其实VC6那些文件和这里VS2010文件也是差不多的。

实际上VS2010只是放了些兼容性文件上去而已。来来去去还是那一套,绘出一个窗体,然后在这个窗体有一个函数在不停地循环,就是为了读鼠标或者键盘的响应信息。然后这些信息统统扔到LRESULT CALLBACK WndProc这个消息回调函数里面,你要弄什么就在这个函数里面写吧。

就是个框架,没有什么技术含量,和你改java web什么的,改win32窗体独有的程序框架里面的东西,在里面加你自己的东西就行了。

好,说了这么多,到底怎么完成我们去掉菜单栏和输出一个Helloworld文件的梦想呢?

4、直接对Win_Helloworld.cpp(文件名根据你第一步的工程名不同而不同)这个主cpp入手,进行修改。

(1)去掉菜单栏,对ATOM MyRegisterClass(HINSTANCE hInstance)函数,整个程序的第87行入手,如下图修改,将其值换成NULL。

同时注释或者删去142-158行消息回调函数中关于菜单栏单机处理的case WM_COMMAND事件。

172-190行一大段关于“关于”对话框的函数。

(2)输出Helloworld

接下我们需要对消息回调函数中的case WM_PAINT:这个所谓的“重绘事件”进行入手,就是你每次移动、最大化这个窗口,这个事件都会被触发的,窗体会被重绘,人家vs2010也非常好心你就是应该在这里开始你的win32窗体程序的旅程,将case WM_PAINT:修改成如下所示,其实就是加了SetTextColor和TextOut两个函数而已:

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

// TODO: 在此添加任意绘图代码...

SetTextColor(hdc,RGB(0,0,0));//黑色的画笔

TextOut(hdc,100,100,L"Helloworld",strlen("Helloworld"));//在(100,100)这个文件,输出Helloworld。

EndPaint(hWnd, &ps);

break;即:

你可以将这个hdc,理解成在这个窗体画东西的画笔。然后呢,各个函数基本都是名副其实了,值得提醒在TextOut函数中,不像VC6,在VS2010中,所有那些LPCTSTR,不能直接放个字符串上去,要在前面加个大写L,强行转化一下。将一个普通字符串转化为 系统中的窗体字符(大概就是这个意思)。所以你就知道C++各种各样的变量是多么蛋疼,php等无变量类型的设计是多么伟大。

写到这里就写完了,运行结果如下图所示:

最后,做个小终结吧。

写C++的Win32窗体程序,别拿以前C语言那种,从0开始的思维往上面套。就是系统已经给你一个框架,你按照他的要求在这个框架上面改。

起步的时候,并不需要对这个框架有多熟悉,先从这个框架的一些基本东西入手,实现一些最基本的功能。

程序猿出来混也基本上是如此,很少让你拿一门语言从0开始的,基本上都是在框架中修修补补,创造。

或者在了解Win32窗体程序的同时,Win32最基本的WIN API同时,能提高一下自己面对框架的能力。

使用VS2010创建windows窗体应用程序。在右侧的已安装模板中,选择Visual C#,右边会显示出各种项目类型。这里第一项就是Windows窗体应用程序。

默认状态下,会自动生成一个窗体文件。这个窗体是主启动窗体,当程序运行的时候会先运行这个窗体,如果需要修改,可以在创建项目时默认生成的Program.cs文件中进行更改。

一个桌面应用程序中往往会有多个窗体。我们可以右键点击项目名称,在“添加”选项中,选择“新建项”来添加窗体。注意不要选错,否则会进行其它操作。

在弹出的对话框中,在左侧的已安装的模板中选择Visual C#,然后在右侧列出的选项中选择Windows窗体,这里第三项就是。然后点击添加按钮即可增加新的窗体。可以在文本框中改变窗体的名称。

有了窗体,我们就可以在窗体上放置各种各样的控件。左边的工具箱中有各式各样的控件,按钮、文本框、复选框等。用鼠标按住工具箱中的某个控件,把它拖放到窗体上,便可以往窗体内添加控件。也可以直接双击工具箱内的某个控件,将控件添加到窗体上。

可以用鼠标对窗体上的控件进行拖动操作,来改变控件在窗体上的位置。当鼠标移动到窗体中的控件上时,鼠标的指针会变成十字形状,左键点住,就可以进行拖动。

右键点击窗体中的控件,在上下文菜单中选择“属性”,右侧就会出现这个控件的属性设置栏。在属性设置栏中,可以设置控件的各种属性。有显示文本、颜色等。

双击某个控件,就会跳到对应的代码编辑页面,进行相对应的操作响应事件代码的编写。比如,双击按钮,就会跳到代码编写页面,进行按钮点击响应事件代码的编写。这里可以编写各种各样的事件。

基本的控件和代码完成之后,就需要进行调试运行。点击上方的调试按钮,就可以就行窗体应用程序的生成、运行和调试。如果没有报错,就说明编译成功了,能够运行。

END

注意事项

winform程序一样是从main方法开始运行的,它的main方法也在新建项目时默认生成的Program.cs文件中

打开软件vs2010后,点击左上角的“新建项目......”,会弹出一个窗口,之后

接下来开始制作窗体:

?相同的步骤制作出以下几个小窗体,接下来实现点击第一个“显示新窗体”出现另一个新的窗体

之后,,制作出Form2窗体

然后,双击Form1中的“显示新窗体”,弹出一个写代码的页面,补充代码

??第一个小窗体制作已完成,其余小窗体可按照相同的步骤制作。

接下来制作第5个小窗体“错误提示符”。首先双击Form1中的“错误提示符”小窗体,如下:

?

演示Windows窗体应用程序的基本用法已全部完成。