打印

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

[复制链接]
1989|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 | 只看该作者
UP...

使用特权

评论回复
板凳
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

粉丝