请教ARM中ADS用了类似VC的东西

[复制链接]
2807|3
 楼主| husion 发表于 2011-4-1 18:14 | 显示全部楼层 |阅读模式
WIN_RESULT CMainFrame::OnCreate()
{
   if( CWnd::OnCreate()!=SUCCESS)
   {
       this->MessageBox((char*)"Init Not OK", 0);
       while(0);
       return WIN_FAILURE;
   }
   return WIN_SUCCESS;
}
这段代码用在GUI中
问题:
1.this->是什么意思
2. CWnd::OnCreate(),MessageBox又是做什么用的
3.第一次看到在ADS这样用,网络搜索了一下好像没什么资料,请问我应该如何获取相关资料

请教了,盼您的回复,谢谢
 楼主| husion 发表于 2011-4-2 08:54 | 显示全部楼层
yan2005 发表于 2011-4-2 12:59 | 显示全部楼层
这应该是C++开发的GUI程序,类似于MFC。ADS我用来编过汇编和C,但是从来没有编过C++。楼主真牛。我来试试看能不能说清楚。如下。

在代码的某个文件中,定义了一个类,这个类叫CMainFrame类。从你的代码看来,OnCreate()
和MessageBox(),都是CMainFrame类的成员函数。按照C++的语法,要在程序中调用MessageBox()的时候,要在前面加一个CMainFrame类的指针。this指针指向的就是当前的CMainFrame类的指针。

进一步说明下。CMainFrame只是相当于C语言里面的一个结构体的定义。比如
Struct CMainFrame_struct
{
     int a;
     int b;
}
具体在使用的时候,还是需要定义变量的,如下:
Struct CMainFrame_struct cmf_struct;
你要访问变量a, 必须通过cmf_struct.a或者是(&cmf_struct)->a的方式来访问。

对于CMainFrame类来说,也一样,需要有一个实例变量,如下:
class CMainFrame myFrame;

你要调用一个函数,首先要知道这个函数的入口地址。比如说,你要去调用MessageBox()成员函数,那必须要通过myFrame.MessageBox()的方式来调用。前面的myFrame.是必需的,否则这个入口地址没法定位。或者写成指针的方式也行,(&myFrame)->MessageBox()。

myFrame.OnCreate()自己的代码里面如果要调用myFrame.MessageBox(), 可以使用(&myFrame)->MessageBox()。this指针就相当于(&myFrame),指向成员函数所属的类的实例变量,使用this->MessageBox()的作用和(&myFrame)->MessageBox()是一样的。但是如果下次,类的实例变量名字变了,改成yourFrame的,那么代码this->MessageBox()就不用再改了,多方便。

这些其实都是基本的C++语法。看看C++资料就可以了。
OnCreate()一般在窗口框架生成的时候被调用,MessageBox()就是在界面上弹出一个消息对话框。在MFC里面都是常见常用的函数。
 楼主| husion 发表于 2011-4-2 13:44 | 显示全部楼层
非常感谢 yan2005的详细讲解.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

70

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部