MFC中如何定义CBitmap类

2024-05-18 13:30

1. MFC中如何定义CBitmap类

1.从视图类获得文档类的指针在视图类中需要引用文档类的地方之前,使用以下语句:CTextDoc*pDoc=(CTestDoc*)GetDocument();以后便可使用pDoc指针访问文档类。可以在Test.cpp中的Initstance()方法中看到以下语句:CSingleDocTemplate*pDocTemplate;pDocTemplate=newCSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CTestDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CTestView));AddDocTemplate(pDocTemplate);以及TestView.h中的线上定义:inlineCTestDoc*CTestView::GetDocument(){return(CTestDoc*)m_pDocument;}2.从文档类取得视图类的指针CDocument类提供了两个函数用于视图类的定位:GetFirstViewPosition()和GetNextView(),具体语法如下:virtualPOSITIONGetFirstViewPosition()const;virtualCView*GetNextView(POSITION&rPosition)const;注意:GetNextView()括号中的参数用的是引用方式,因此执行后值可能改变。需将这两个函数调用一次即可得到CTestView的指针如下(需定义一个POSITION结构变量来辅助操作):CTestView*pTestView;POSITIONpos=GetFirstViewPosition();pTestView=GetNextView(pos);这样,便可到了CTestView类的指针pTestView.执行完成几句后,变量pos=NULL,因为没有下一个视图类,自然也没有下一个视图类的POSITION.判断一个类指针指向的是否某个类的实例时,可用IsKindOf()成员函数时行检查,如:pView->IsKindOf(RUNTIME_CLASS(CTestView));即可检查pView所指是否是CTestView类。

MFC中如何定义CBitmap类

2. 如何传递复杂数据类型,如C++中的map怎么传递

一般分2种,按值传递和按引用传递。
比如一个函数 void foo(map x) 就是按值传递的,每次这个map会被整个拷贝一遍传入函数内,函数内对x的操作不会影响原来的那个map。
如果按引用则是 void foo(map& x),传进函数的是引用,不发生拷贝,函数内外的map其实是一个。
因为map往往比较大,拷贝成本比较高,除非必要,还是以引用传递为主。

3. VC++的MFC中关于消息映射,BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间的宏的作用是什么,如下

BEGIN_MESSAGE_MAP和END_MESSAGE_MAP
这两个宏表示这个类的消息映射开始和结束,中间的宏定义定义了此类的所有的消息映射。
前面的afx_msg void OnPaint();只是声明OnPaint()函数是一个消息处理函数,然后是OnPaint()函数的定义,但是函数定义在那儿是不会自己去执行的,ON_WM_PAINT()宏是一个系统消息映射,告诉系统当有WM_PAINT消息的时候,调用OnPaint()函数进行处理,如果没有这句话,消息队列收到WM_PAINT消息的时候不会调用你的OnPaint()函数的,即使你申明和定义了OnPaint(),现在明白它的作用了么,你可以把ON_WM_PAINT()去掉再执行看有没有执行OnPaint()函数。
而ON_WM_LBUTTONDOWN()也是一样的道理,建立起消息与消息处理函数的映射关系~

VC++的MFC中关于消息映射,BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间的宏的作用是什么,如下

4. bitmap作为mfc显示需要哪个类

"自己定义一个类",是不是在一个新的cpp文件中,这个文件没有包含必要的头文件。
参照其它类cpp文件头文件包含,加上两个:


   
#include "stdafx.h"#include "YourApp.h" //你程序APP类头文件,后面一行再加上你自定义类头文件。

5. MFC中有没有BitmapData类?为什么一直找不到这个类?

SDK中的类。MFC中可能封装成别的类了。

MFC中有没有BitmapData类?为什么一直找不到这个类?

6. MFC中常用的绘图类是什么?

CDC本身也是一个类;差不多这些常用类,结合他们的成员函数,就够用了。
 CDC BufferDC;
 CBitmap BufferImage;
 BufferDC.CreateCompatibleDC(&dc);
 BufferImage.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
 BufferDC.SelectObject(&BufferImage);

7. c++MFC中,怎么删除 map<CString, vector<CString>> vector中某一个元素

for (std::map>::iterator iter=m_mapName.begin();iter!=m_mapName.end();)

{
    std::vector & vec = iter->second;

    // 对vec可以进行任意的操作,删除一个元素自然不在话下

}

c++MFC中,怎么删除 map<CString, vector<CString>> vector中某一个元素

8. 在mfc中pDoc到底是什么?

如果是标准框架代码(不是自己增加的代码)的pDoc,是文档类(CDocument)的指针。
这个指针通常用于视图(View)类,通过系统函数GetDocument()获取,可以在视图类之间操作文档类数据。