请教一个父窗口设置问题,一个d出窗口的父窗口设置失败,调试发现父窗口总是为CMainFrame,请问是怎么回

请教一个父窗口设置问题,一个d出窗口的父窗口设置失败,调试发现父窗口总是为CMainFrame,请问是怎么回,第1张

WS_POPUP 表示d出窗口,不是泊位在父窗口的范围内(WS_CHILD)。MessageBox就是这个样子。

你用WS_POPUP样式,又加了父亲窗口,表示在任务栏上,将此d出窗口限制在父窗口所在位置。

而这个 pParent 为WS_CHILD窗口,没有任务栏泊位的权限,所以就转移给其祖父窗口了。

——这点我没试过,我这样理解的。

1) 在View中获得Doc指针

CYouDoc pDoc=GetDocument();一个视只能有一个文档

2) 在App中获得MainFrame指针 CWinApp 中的 m_pMainWnd变量就是MainFrame的指针 也可以:

CMainFrame pMain =(CMainFrame )AfxGetMainWnd();

3) 在View中获得MainFrame指针

CMainFrame pMain=(CMainFrame)AfxGetApp()->m_pMainWnd;

4) 获得View(已建立)指针

CMainFrame pMain=(CmaimFrame )AfxGetApp()->m_pMainWnd;

CYouView pView=(CYouView )pMain->GetActiveView();

m_wndStatusBarSetPaneText(0,dlgGetPathName());

5) 获得当前文档指针

CYouDoc pDoc=(CYouDoc )pMain->GetActiveDocument();

6) 获得状态栏与工具栏指针

CStatusBar pStatusBar=(CStatusBar )AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);

CToolBar pToolBar=(CtoolBar )AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);

7) 如果框架中加入工具栏和状态栏变量还可以这样

(CMainFrame )GetParent()->m_wndToolBar;

(CMainFrame )GetParent()->m_wndStatusBar;

8) 在Mainframe获得菜单指针

CMenu pMenu=m_pMainWnd->GetMenu();

9) 在任何类中获得应用程序类 用MFC全局函数AfxGetApp()获得。

注意You是你自己类的名字,希望对你有所帮助

CMainFrame是从CFrameWnd派生来的。CMainFrame和CView的关系是MFC内部实现的。在APP类的InitInstance方法中有类似的语句

CSingleDocTemplate pDocTemplate;

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CWQ1Doc),

RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CWQ1View));

AddDocTemplate(pDocTemplate);

将文档,框架,视类关联在一起,在这里三言两语也说不清呀

首先从对话框的按钮处理函数中获得mainframe指针

cmainframe

pmain=(cmaimframe

)afxgetapp()->m_pmainwnd;

然后获得相应视图指针cyourview

pview=(cyourview

)pmain->getactiveview();

最后获得视图对应的当前文档指针

cdocument

pcurrentdoc

=(cframewnd

)m_pmainwnd->getactivedocument();

以上需要注意在对话框类中包含mainfrmh和相应的视图类的头文件

基于对话框的当然没有

如果不是,那么在"FileView"中找到MainFrameh, 打开后将

class CMainFrame : public CFrameWnd 中的CMainFrame 随便改个名字保存,然后再改回来,一般来说这个时候在classview中就能看到CMainFram了

要想联系成员变量,得先得到CMainFrame CView的指针

MFC应用程序中指针的使用

1) 在View中获得Doc指针

2) 在App中获得MainFrame指针

3) 在View中获得MainFrame指针

4) 获得View(已建立)指针

5) 获得当前文档指针

6) 获得状态栏与工具栏指针

7) 获得状态栏与工具栏变量

8) 在Mainframe获得菜单指针

9) 在任何类中获得应用程序类

10) 从文档类取得视图类的指针(1)

11) 在App中获得文档模板指针

12) 从文档模板获得文档类指针

13) 在文档类中获得文档模板指针

14) 从文档类取得视图类的指针(2)

15) 从一个视图类取得另一视图类的指针

VC中编程对于刚刚开始学习的同学,最大的障碍和问题就是消息机制和指针获取与

*** 作。其实这些内容基本上是每本VC学习工具书上必讲的内容,而且通过MSDN很多

问题都能解决。下面文字主要是个人在编程中指针使用的一些体会,说的不当的地

方请指正。一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,

无论是多文档还是单文档,都存在指针获取和 *** 作问题。下面这节内容主要是一般

的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。首先

一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通

过类中的函数向其他类或者函数中发指针,以便于在非本类中 *** 作和使用本类中的

功能。

1) 在View中获得Doc指针 CYouSDIDoc pDoc=GetDocument();一个视只能有一个文

档。

2) 在App中获得MainFrame指针

CWinApp 中的 m_pMainWnd变量就是MainFrame的指针

也可以: CMainFrame pMain =(CMainFrame )AfxGetMainWnd();

3) 在View中获得MainFrame指针 CMainFrame pMain=(CmaimFrame )AfxGetApp()->m_pMainWnd;

4) 获得View(已建立)指针CyouView pView=(CyouView )pMain->GetActiveView();

5) 获得当前文档指针 CDocument pCurrentDoc =(CFrameWnd )m_pMainWnd->GetActiveDocument();

6) 获得状态栏与工具栏指针 CStatusBar pStatusBar=(CStatusBar )AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);

CToolBar pToolBar=(CtoolBar )AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);

7) 如果框架中加入工具栏和状态栏变量还可以这样

(CMainFrame )GetParent()->m_wndToolBar;

(CMainFrame )GetParent()->m_wndStatusBar;

8) 在Mainframe获得菜单指针 CMenu pMenu=m_pMainWnd->GetMenu();

9) 在任何类中获得应用程序类

用MFC全局函数AfxGetApp()获得。

使用AfxGetApp()->GetMainWnd()获取到的不是view的指针,而是main frame的指针。需要再调用main frame的GetActiveView()函数来获取当前活动的view的指针。

CMainFrame pMain=(CMainFrame )AfxGetApp()->GetMainWnd();

CXXXView pView=(CXXXView )pMain->GetActiveView();

CXXXDoc pDoc = (CXXXDoc )pView->GetDocument();

别忘了#include相应的main frame, view和doc的头文件。

以上就是关于请教一个父窗口设置问题,一个d出窗口的父窗口设置失败,调试发现父窗口总是为CMainFrame,请问是怎么回全部的内容,包括:请教一个父窗口设置问题,一个d出窗口的父窗口设置失败,调试发现父窗口总是为CMainFrame,请问是怎么回、MFC 中下面的语句是什么意思 CMainFrame* pMain= (CMainFrame*) AfxGetApp()->m_pMainWnd;、关于CMainFrame的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9339511.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存