Visual C++ 2012 Express也可以写WinForm程序 (二)

2014-11-24 08:43:13 · 作者: · 浏览: 1
System::Object^ sender, System::EventArgs^ e) {
System::Windows::Forms::MessageBox::Show(
L"你选择的日期是:" + this->dateTimePicker1->Value.ToString(L"yyyy年MM月dd日"),
L"提示信息",
System::Windows::Forms::MessageBoxButtons::OK,
System::Windows::Forms::MessageBoxIcon::Information);
}
到了现在,窗口做好了,不过啊,还不能运行,我们还有关键的一步,对,入口点。
右击项目节点,从弹出来的菜单中选择【添加】-【新建项】,在 代码 节点下选择C++文件 *.cpp,随便给个名字,确定,我们在这里面写入口点函数。
注意了,我们要的是Windows应用程序,不是DOS控制台,所以我们写的是WinMain函数。首先,要包含Windows.h头文件。
看看,入口点函数如下:
[cpp]
#include
int WINAPI wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd
)
{
// ..........
return 0;
}
#include
int WINAPI wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd
)
{
// ..........
return 0;
}
这里为什么我用wWinMain而不是WinMain呢?我们来看看WinBase.h中的定义吧。
\
我们的程序是中文的,应属于Unicode的,所以,最好使用wWinMain函数,它是一个宏,无论如何定义,它最终都是指向WinMain函数。
刚才我们做了一个MainFom窗体,我们要把它所在的头文件包含进来。
[cpp]
#include
#include "MainForm.h"
#include
#include "MainForm.h"
接着我们在入口点中显示主窗体。完整的代码如下:
[cpp]
#include
#include "MainForm.h"
using namespace System::Windows::Forms;
int WINAPI wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd
)
{
Application::Run(gcnew MyWindowsFormApp::MainForm());
return 0;
}
#include
#include "MainForm.h"
using namespace System::Windows::Forms;
int WINAPI wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd
)
{
Application::Run(gcnew MyWindowsFormApp::MainForm());
return 0;
}
注意,创建新实例的时候,在托管C++中要用gcnew。
现在,运行一下,是不是没有了DOS窗口了。
\
好了,看不到DOS窗口了,这样就解决问题了。
一些建议:
我们不应该为了用某种语言而用某种语言,WinForm其实也是封装了Win32控件的,所以,有时候应考虑用VB.NET或C#,至少可以提高开发效率,而UI布局也方便了很多,C++可以用于编写一些类库之类的。
在.NET 4之后,许多类库被重写,性能有了本质提升,你看看.NET 4.0 连Logo都换了,这是走向成熟的标志。所以,我建议大家,学到的知识要灵活去应用,不必要为了使用而使用某个语言,最重要的是高效快捷地解决问题就行了,有了技术还得加上技巧的配合才能发挥作用。