文档库 最新最全的文档下载
当前位置:文档库 › MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView

MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView

MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView
MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView

MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView)指针

在文档类中只要使用(多文档的,单文档的更简单一点儿)

POSITION pos=this->GetFirstViewPosition();//要写在文档类中,在其他类中把this换成文档指针就可以了

while(pos)

{

CView *pView=this->GetNextView(pos);

}

而在框架类中只要选取得文档对象,然后再使用上面的代码

以下是从一个对象得到另一个对象有方面(摘自MFC深入浅出)

从一个对象得到另一个对象的方法

本对象要得到的对象使用的成员函数

CDocument对象视列表 GetFirstViewPosition,GetNextView

文档模板 GetDocTemplate

CView 对象文档对象 GetDocument

边框窗口 GetParentFrame

CMDIChildWnd或

CFrameWnd 对象活动视 GetActiveView

活动视的文档 GetActiveDocument

CMDIFrameWnd对象活动文档边框窗口 MDIGetActive

在框架类中使用 GetActiveView();

在文档类中(CMainFrame*)(AfxGetApp()->m_pMainWnd))->GetActiveView();

MFC中怎么在CMainFrame下获得View类的指针

使用GetActiveView()函数

MFC中普通类如何获取view类的指针?

在普通类(Generic class)中怎么得到view类的指针?我试过这样:

CMainFrame *p=(CMainFrame*)AfxGetMainWnd();

CView *pv=p->GetActiveView();

按照你的用法应该就是可以的!

是不是在这样用时,View还没有创建完成啊,所以pv才是空的。

CMainFrame *m_pfm = (CMainFrame*)AfxGetApp()->m_pMainWnd;

...*m_pView = (...*)m_pfm->GetActiveView();

少一句:AfxGetApp()

CMainFrame *p=(CMainFrame*)AfxGetApp()->m_pMainWnd;

CView *pv = (CView*)p->GetActiveView();

楼上的分析在理,楼主理一下函数调用顺序, 别是什么PreCreateWindow或是CXXXApp,CXXXFrame的构造函数,InitInstance里,模板主窗口都没建完就准备操纵这个CView了

asdfasdf

怎样在MFC中返回类的指针,比如cwin,view类等等!

在CView类中,调用this->GetDocument()得到doc。

在CDocument类中,调用GetFirstViewPosition()和GetNextView()得到所有的view。

在其它类中,一种方法先是把指针传进去,以备调用的时候使用。另外就要用AfxGetApp()得到CWinApp,然后再用GetFirstDocTemplatePosition()和GetNextDocTemplate()得到doc template,然后调用GetFirstDocPosition()和GetNextDoc()得到doc。

如何在OnDraw函数或***Dlg函数中获得View类的指针(this)或整个对话框的指针?

在单文档中你可以采用如下方法:

现在要获得指针的文件开始处包含两个文件:

视图的主框架类头文件,即#include "MainFrm.h"

视图类头文件,即#include "XXView.h"

然后在要访问m_pSet处添加如下语句

CMainFrame* frm=(CMainFrame*)AfxGetApp()->m_pMainWnd;

CXXView* pView=(CXXView*)frm->GetActiveView();

pView即View类指针

不过你用this不是更简单吗?

mfc的单文档中从一个视图的treeview类中获取Ctestview产生的视图窗口句柄?

获取单文档框架中的那个视图的窗口句柄。求一段代码。网上查了一下,没弄出来。哪位兄弟有时间写一段。

你说的不明不白的。方法可谓多矣。

可以通过全局对象theApp获得视图指针,然后

视图指针->GetSafeHwnd();获得句柄。

还可以发送自定义消息把句柄发送到指定窗口类。

还可以在你的stdafx.h中定义一个Cview指针,在程序初始化过程使之指向View类,在你的treeview中使用。

还可以自己为treeview类定义方法接收句柄,在调用的时候传入。

注意处理好创建顺序问题,否则debug下会出断言错误。

方法真的很多。

如果你没有用到文档/视图结构,单文档是在创框架窗口中创建的。有一个变量m_wndView。这个就是那个句柄了。他是CWnd派生的。

如果你用到了文档/视图结构,直接GetActiveView就可以。

还有一种情况,如果你用了切分窗口。。。。。。。

忘了哪个函数了。Get***Pane好像。。查一下便知。

mfc单文档Ctestview产生的视图窗口初始标题如何获取?

你可以在资源文件里修改字符窜,具体怎么修改上网查,

另外一个方法是在view类的PreCreateWindow函数里return之前加入

m_strTitle = "单文档标题";

启动了另一个线程CMyApp,如何在CMyApp中访问我的 View类呢?

如果我是重新生成了一个WinApp类,并且调用AfxBeginThread((RUNTIME_CLASS)CMyApp)启动了另一个线程,那么我又如何在CMyApp中访问我的 View类呢?

这个问题我早上就问了,可是没有人给我答案。有哪位高手能赐教啊

1。你可以把该View的类作为参数传入进去,这是最简单的解决方法

2。你可以用如下方法得到

CWinApp * pA=AfxGetApp();

POSITION pos=pA->GetFirstDocTemplatePosition();

CDocTemplate * pDT=pA->GetNextDocTemplate(pos);

pos=pDT->GetFirstDocPosition();

CDocument * pD=pDT->GetNextDoc(pos);

pos=pD->GetFirstViewPosition();

CView * pV=pD->GetNextView(pos);

当然,原理是这样,如果你有多个View,或者有Doc,甚至有多个DocTemplate,可以适当调整

源代码我试过了,应该没什么问题了吧

mfc单文档中如何获取View视图(CmyView类实例产生的窗口)窗口的句柄?在另一个视图类中

通过App类来获取.

头文件定义:CmyView *GetmyView();

实现:

CmyView *CmyApp::GetmyView()

{

if(m_pDocManager)

{

POSITION pos1 = m_pDocManager->GetFirstDocTemplatePosition();

while (pos1)

{

CDocTemplate *pDocTemplate = m_pDocManager->GetNextDocTemplate(pos1);

if(pDocTemplate)

{

POSITION pos2 = pDocTemplate->GetFirstDocPosition();

while (pos2)

{

CDocument *pDoc = pDocTemplate->GetNextDoc(pos2);

if(pDoc)

{

POSITION pos3 = pDoc->GetFirstViewPosition();

while (pos3)

{

CView *pView = pDoc->GetNextView(pos3);

if(pView)

{

if(pView->IsKindOf(RUNTIME_CLASS(CmyView)))

return (CmyView*)pView;

}

}

}

}

}

}

}

return NULL;

}

补充一点,如果你是用静态分割产生的分割视图,可以充分利用CSplitterWnd的GetPane 函数,比如,在CmylView中去获取CmyView的窗口句柄(假设CmyView在分割的0行0列):CSplitterWnd *ps = (CSplitterWnd *)GetParent();

CmyView *pView = (CmyView *)(ps->GetPane(0,0));

pView - >m_hWnd即可获得该视图窗体的句柄

简单的很:因为你的view类不止一个,只有当你的view类活动时获取View视图(CmyView 类实例产生的窗口)窗口的句柄才有意义!只要一个函数就可以解决。

CView* GetActiveView( ) const;

GetActiveView( )获得当前活动view类窗口句柄.

MFC经典绘图方法总结

MFC经典绘图方法总结 Windows 绘图的实质就是利用windows提供的图形设备接口GDI(Graphics Device Interface)将图形会制在显示器上。 为了支持GDI绘图,MFC提供了两种重要的类: 设备上下文DC(Device Context)类,用于设置绘图属性和绘制图形; 绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。 CDC类介绍: 在MFC中,CDC是设备上下文类的基类,派生类包括:CClientDC, CPaintDC, CWindowDC, CMetaFileDC类 CClientDC 客户区设备上下文,绘制客户区时 CPaintDC 一般发生在窗口需要重绘时 CWindwDC 可以绘制整个窗口,通常在窗口WM_NCPAINT消息的响应函数CWnd::OnNCPaint()中使用 CMetaFileDC 专门用于图元文件的绘制,图元文件记录一组GDI命令,重建图形输出。 CDC包含m_hDC和m_hAttribDC二个设备上下文。CDC指导所有对m_hDC的输出GDI调用(SetTextColor)以及对m_hAttribDC的大部分属性GDI调用(GetTextColor)。 CDC对象的重要函数如下: 1、为指定设备创建上下文virtual BOOL CreateDC(...) 比如创建一个为屏幕的设备上下文 CDC dc; dc.CreateDC("DISPLAY", NULL, NULL,NULL); 2、创建内存设备上下文,与指定设备上下文兼容virtual BOOL CreateCompatibleDC( CDC * pDC) 3、删除CDC对象对应的Windows设备上下文, 通常不调用该函数而是使用析构程序virtual BOOL DeleteDC(); 4、将HDC句柄转化为设备上下文的句柄: CDC *pDC=CDC::FromHandle( hDC ) 5、选择GDI对象入选到设备上下文中,一共有五种形式: CPen * SelectObject( CPen * pPen) ; CBrush * SelectObject( CBrush * pBrush) ; virtual CFont * SelectObject( CFont * pFont) ; CBitmap * SelectObject( CBitmap * pBitmap) ; int SelectObject( CRgn * pRgn) ;

MFC程序结构分析

MFC程序结构分析2008-11-08 16:39 分类:VC\MFC 字号:大中小 1 Windows程序工作原理 WINDOWS 程序设计是一种完全不同于传统的DOS 方式的程序设计方法,它是一种事件驱动方式的程序设计模式。在程序提供给用户的界面中有许多可操作的可视对象。用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的事件,这些事件发生后的结果是向程序中的某些对象发出消息,然后这些对象调用相应的消息处理函数来完成特定的操作。WINDOWS 应用程序最大的特点就是程序没有固定的流程,而只是针对某个事件的处理有特定的子流程,WINDOWS 应用程序就是由许多这样的子流程构成的。 从上面的讨论中可以看出,WINDOWS 应用程序在本质上是面向对象的。程序提供给用户界面的可视对象在程序的内部一般也是一个对象,用户对可视对象的操作通过事件驱动模式触发相应对象的可用方法。程序的运行过程就是用户的外部操作不断产生事件,这些事件又被相应的对象处理的过程。下面是WINDOWS 程序工作原理的示意图。 2 建立应用程序 在介绍AppWizard 的时候,我们已经建立了一个名字为TEST 的工程,事实上这个框

架程序已经可以编译运行了。在BUILD 菜单中选择REBUILD ALL 菜单项,系统开始编译由 APPWIZARD 自动生成的程序框架中所有文件中的源代码,并且链接生成可执行的应用程 序。在BUILD 菜单中选择EXECUTE 菜单项,应用程序就开始开始运行了,虽然我们没有编 写一行代码,但是可以看出由系统自动生成的应用程序的界面已经有了一个标准WINDOWS 应用程序所需的几个组成部分,我们要做的事情是往这个应用程序添加必要的代码以完成 我们所需要的功能。 接下来将要对WINDOWS 自动生成的这个应用程序框架作详细的介绍,让你对MFC 方式的 WINDOWS 应用程序的工作原理有全面的认识,只有这样你才会知道应该如何往程序框架当 中添加需要的代码。 3 程序结构剖析 为了让您对MFC 方式的程序的框架有一个总体的认识,这里设计了一个表示程序中的 主要类之间的关系的图表:

MFC程序结构分析

主题: MFC深入浅出 1.MFC深入浅出 MFC概述 2. 3. 1.MFC是一个编程框架 2. 3.MFC (Microsoft Foundation Class Library) 中的各种类结 合起来构成了一个应用程序框架,它的目的就是让程序员在此基础 上来建立Windows下的应用程序,这是一种相对SDK来说更为简单 的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了 用户接口的标准实现方法,程序员所要做的就是通过预定义的接口 把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++ 提供了相应的工具来完成这个工作:AppWizard可以用来生成初步 的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用 户接口;ClassWizard用来协助添加代码到框架文件;最后,编译, 则通过类库实现了应用程序特定的逻辑。 4. 5. 6. 7. 1.封装 2. 3.构成MFC框架的是MFC类库。MFC类库是C++类库。这 些类或者封装了Win32应用程序编程接口,或者封装了应用 程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO 数据访问的功能,等等,分述如下。 4. 5.(1)对Win32应用程序编程接口的封装 6. 7.用一个C++ Object来包装一个Windows Object。例 如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就 是前者的窗口句柄。 8. 9.(2)对应用程序概念的封装

MFC原理结构说明

JEI
N.
MFC 原理結構說明
捷胤工業有限公司 總合研究所 (JISC)
CO .
LT D
捷胤工業有限公司 NEW JEIN Corp. Corp.

JEI
? 質流控制器(Mass?Flow?Controller)簡稱 MFC。簡 易的詮釋 MFC 是一種流量與控制閥組的精密組機 電組合,其測量方式與一般流量計最大的差別, 是在於它是利用熱感溫差 非接觸方式測量氣體 是在於它是利用熱感溫差、非接觸方式測量氣體 之質量流速。
N.
MFC 簡介
? MFC 應用於I C 工業、真空工業、食品工業、化 學工業以及醫療儀器等行業,需要求高精確度、 高穩定度及高品質等氣體流量控制,如:蝕刻、 物理 化學氣相沉積 高穩定度來達成 其應用 物理、化學氣相沉積、高穩定度來達成,其應用 之層面乃遍佈高科技產業。
CO .
LT D
捷胤工業有限公司 NEW JEIN Corp. Corp.

JEI
Intel
Connector
N.
MFC 主要結構
Mass flow sensor
CO .
Bypass
Zero switch
LT D
Control valve Outlet Block
PCB
捷胤工業有限公司 NEW JEIN Corp. Corp.

JEI
? 製程氣體中許多是有腐蝕性或容易液
化的氣體,其與氣體接觸的部份均是 化的氣體 其與氣體接觸的部份均是 以抗腐蝕性強的 SUS‐316L 做為材質, 整顆鑄造而成。
N.
MFC 本體 (Block)
CO .
LT D
捷胤工業有限公司 NEW JEIN Corp. Corp.

MFC视图结构框架分析

MFC文档视图结构框架分析 1:程序的“导火索”---theApp CmyApp theApp; 在声明对象的同时,调用其构造函数。按C++的语法,首先要调用其基类Cwinapp的构造函数. 这个文件主要用于应用程序的一些初始化操作。 class CWinApp : public CWinThread { DECLARE_DYNAMIC(CWinApp) public: // Constructor CWinApp(LPCTSTR lpszAppName = NULL); ………… } CWinApp::CWinApp(LPCTSTR lpszAppName) { if (lpszAppName != NULL) m_pszAppName = _tcsdup(lpszAppName); else m_pszAppName = NULL; // initialize CWinThread state AFX_MODULE_STATE* pModuleState = _AFX_CMDTARGET_GETSTATE(); AFX_MODULE_THREAD_STATE* pThreadState = pModuleState->m_thread; ASSERT(AfxGetThread() == NULL); pThreadState->m_pCurrentWinThread = this; ASSERT(AfxGetThread() == this); m_hThread = ::GetCurrentThread(); m_nThreadID = ::GetCurrentThreadId();

《MFC》综合开发案例分析1

、八 前言 21 世纪最激烈的竞争当属人才的竞争,一个具有多学科知识的复合性人才或许是一个企业发展壮大所不可或缺的重要因素。因此,企业人事管理工作的好坏不但可以直接影响到企业的人力资源管理,而且会间接的影响到企业整体管理。随着社会的发展,科技的进步,计算机的应用在社会各领域中都得到了普及,越来越多的人都感受到利用计算机进行各类管理的科学和便捷;认识到管理信息系统对于管理工作的重要性。利用计算机对企业人事进行管理是必然趋势,人事管理系统是企业管理工作中不可缺少的。所以在这次课程设计中,我选择开发人事管理系统。人事管理系统的功能主要有增加记录,删除记录,筛选记录,排序记录。这就要求它应该能够为用户提供有好美观的窗口界面、充足可靠的信息数据、简单方便的维护手段和灵活多变的查询方式以及快捷而准确的查询结果。所以,对于人事管理系统的设计主要包括数据库的建立、维护以及应用程序的开发两个方面。对于前者而言要求建立起数据一致性及完整性强、数据安全性好的数据库。对于后者而言则要求具备应用程序功能全, 易使用等,运行稳定等特点。因此,拟选用的开发软件是Microsoft 公司出品的Visual C++6.0 MFC 平台进行系统的开发。

目录 1 课题综述 (1) 1.1 人事管理信息系统来源 (1) 1.2 人事管理系统的意义 (1) 1.3 预期目标 (2) 1.4 面对的问题 (2) 1.5 需解决的关键技术等 .............................................. 2 2 人事管理系统分析 (2) 2.1 涉及的基础知识 (3) 2.2 解决问题的基本思路 (11) 2.3 总体方案 (11) 2.4 功能模块框图 (11) 3.1 部署连接(图) (12) 3.2 算法描述 (12) 3.3 详细流程图 .................................................. 14 4 代码编写 4.1 增加记录的代码 . (15) 4.2 删除记录的代码 (16) 4.3 排序记录的代码 (17) 4.4 筛选记录的代码 ................................................ 17 5 运行与测试 3 人事管理系统设计 ....................... 12 15 18

MFC 通用控件祥解解析

CHeadCtrl 表头控制(CHeaderCtrl)通常应用在窗口中的文本或数据的列表之上。一般为数据列的标题,可以包括多个部分,用户可以拖动每个部分并可以控制每列的宽度。表头控制类提供了普通表头控制的基本方法,只有在WINDOWS95以后版本系统中才提供,其方法包含在afxcmn.h文件中,一般与标签控制(CTabCtrl)和列表控制(CListCtrl)组合使用。 (一)表头控制的对象结构 1、表头控制对象的建立方法 CHeaderCtrl &cheaderCtrl 建立表头控制对象 Create 建立表头并绑定对象 CHeaderCtrl::Create的格式如下:BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 其返回值非零时初始化成功,否则失败。 参数dwStyle用来确定表头控制类型;rect用来确定表头控制的大小和位置;ParentWnd 用来确定表头控制的父窗口;nID用来表示表头控制的标志。 表头控制风格包括: HDS_BUTTONS 表示表头控制外观类似按钮; HDS_HORZ 表示表头控制为水平排列; HDS_VERT 表示表头控制为垂直排列; HDS_HIDDEN 表示表头控制为隐藏模式。 它也可以使用普通类控制风格,包括: CCS_BOTTOM 设置控制位置在父窗口的底部并与父窗口同样宽度; CCS_NODIVIDER 在控制顶部形成两个像素的高亮区; CCS_NOHILITE 在控制顶部形成一个像素的高亮区; CCS_NOMOVEY 在响应WM_SIZE消息时重置大小并水平排列;

MFC9.0类别组织框架图

MFC Hierarchy Chart Part 1 of 3 Classes Derived From CObject

MFC Hierarchy Chart Part 2 of 3 Classes That Derive From CCmdTarget or CWnd

? Microsoft Corporation. All Rights Reserved. Structures Run-Time Object Model Support Synchronization/Thread Support OLE Type Wrappers DHTML Support OLE Automation Types Controls Helper Classes Frame Windows Support Helper Template Manager Support Memory Management State Support Managed Types MFC Hierarchy Chart Part 3 of 3 Classes Not Derived From CObject Legend The Version 9.0 Feature Pack adds new classes to the Microsoft Foundation Class Library. New classes are indicated with a star. Managers, Control Support and Helper classes all provide logical and data support for individual controls or groups of controls. Managers have the word “Manager” in their name. They typically aggregate and coordinate functionality that would otherwise be handled by individual classes. Control Support classes usually provide logical and data support for individual controls. Note: All MFC classes are native C++ classes, with the exception of CWin32Windows, a managed type.

相关文档