程序为你定义了一个命名空间HelloWorld,命名空间可以简单的理解为完成相似功能的类的集合。在这里,就是该空间里的类共同为程序"HelloWorld"“卖力气”。之后的一些using namespace xxx;语句表示将要使用到System空间里的这些类,都是已定义好的。之后的代码
public __gc class frmMain : public System::Windows::Forms::Form
{
public:
frmMain(void)
{
InitializeComponent();
}
protected:
void Dispose(Boolean disposing)
{
if (disposing && components)
{
components->Dispose();
}
__super::Dispose(disposing);
}
private: System::Windows::Forms::Button * btnSay;
private: System::Windows::Forms::Label * lblShow;
private:
///
/// Required designer variable.
///
System::ComponentModel::Container * components;
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
void InitializeComponent(void)
{
this->btnSay = new System::Windows::Forms::Button();
this->lblShow = new System::Windows::Forms::Label();
this->SuspendLayout();
//
// btnSay
//
this->btnSay->Location = System::Drawing::Point(72, 152);
this->btnSay->Name = S"btnSay";
this->btnSay->Size = System::Drawing::Size(144, 24);
this->btnSay->TabIndex = 0;
this->btnSay->Text = S"Say Hello";
this->btnSay->Click += new System::EventHandler(this, button1_Click);
//
// lblShow
//
this->lblShow->Font = new System::Drawing::Font(S"SimSun", 15, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, (System::Byte)134);
this->lblShow->ForeColor = System::Drawing::SystemColors::Desktop;
this->lblShow->Location = System::Drawing::Point(48, 56);
this->lblShow->Name = S"lblShow";
this->lblShow->Size = System::Drawing::Size(192, 24);
this->lblShow->TabIndex = 1;
//
// frmMain
//
this->AutoScaleBaseSize = System::Drawing::Size(6, 14);
this->ClientSize = System::Drawing::Size(292, 273);
this->Controls->Add(this->lblShow);
this->Controls->Add(this->btnSay);
this->Name = S"frmMain";
this->Text = S"Form1";
this->ResumeLayout(false);
}
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
this->lblShow->Text = "Hello,the World!";
}
};
是对Form1类的完整定以及实现。可以看到,我们向窗体加进来的控件成为了它的成员变量,类型就是相应控件类的指针。因此在代码中引用控件时,要指明“this->”。窗体的构造函数中调用了void InitializeComponent(void),负责初始化所有的控件和主窗体。这些赋值语句就对应着设计界面上你在属性列表里做的修改动作,实际上这种在初始化时给属性赋值的做法同以往完全一样。你可以在这里直接修改某某控减的某某值。注意
this->btnSay->Click += new System::EventHandler(this, button1_Click);
btnSay->Click是指按钮的Click事件,button1_Click就是后面那个处理单击事件的成员函数的指针。这就如同传统的WindowProc()函数一样,系统截获事件后,会调用你指定的函数处理。这一行就是将该函数与系统预留的回调函数绑定。要处理控件的其他事件,以同样的方式将你的事件处理函数指针赋给Ctrl->Event(Ctrl代表任意控件,Event代表任意事件)。你会发现,当我们在设计界面双击某一控件时,会自动加入类似上面的代码,并等待你添加它的函数体,也就是事件处理过程,而自动添加的都是其默认事件,如按钮的Click,窗体的Load等。这样很类似于VB的工作方式。
上面笔者简单地将代码和设计联系了起来,下面说说更有意思的。有两件事一直是实现VC++窗体很头疼的,就是图片和菜单。现在有了熟悉的PictureBox控件,图形变得简单了一些。菜单的编辑更加简单。向窗体添加一个MainMenu控件,点击那个灰色的"TYPE HERE"输入菜单项,双击已编辑好的项目就可以编写菜单事件了,比起原来作为资源来添加,既直观又不容易错。我想你会大声高呼:“这就是个VB!”的确,我也这么想。
说了这么多,你会猜到程序设计变得如此方便的同时就会有什么东西作为代价了,对,那一定就是性能。C++在同类语言中一向是以性能著称的,正是因为C++程序员能够对整个程序进行灵活的控制,才使其具有高性能,不管是在类的设计、程序流程还是内存管理等等方面。因此有时候繁重的工作量是必需的。现在代码被封装了,方便的同时也存在降低性能的可能性。但对于一般的应用程序来说,这倒是不算什么问题。毕竟高效率的开发方式是很容易让人接受的。
查看本文来源