CFormView继承自CScrollView, 在CScrollView中有一个方法GetTotalSize()
MFC Library Reference
CScrollView::GetTotalSize
Call GetTotalSize to retrieve the current horizontal and vertical sizes of the scroll view
CSize GetTotalSize( ) const;
Return Value
The total size of the scroll view in logical units The horizontal size is in the cx member of the CSize return value The vertical size is in the cy member
不知道行不行
还有一个笨方法, 从EXE中提取对话框(利用IDD_FORMVIEW_XXXX 和资源API)的资源, 然后得到在设计时的对话框的原始尺寸
void CView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
/ 加入你要的初始化代码/
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
在CFormView中,通过跟踪可发现程序不会去调用CDialog::OnInitDialog(),在CFormView::Create()中有如下语句CreateDlg(m_lpszTemplateName, pParentWnd),既对话框通过非模态创建,创建期间会发送WM_CREATE消息,但初始化代码不能写在OnCreate函数里面,因为此时对话框还没创建完毕,在所有的创建工作结束后,既CFormView::Create()执行完毕后系统会调用OnInitialUpdate(),这时候就可以加入你的初始化代码了
void CSimpleView::OnPrepareDC(CDC pDC, CPrintInfo pInfo)
{
// TODO: Add your specialized code here and/or call the base class
pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式
//pDC->SetMapMode(MM_TEXT);
CSize size = CSize(800, 560);
pDC->SetWindowExt(size);
//确定窗口大小 //得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
long xExt = (long)sizecx xLogPixPerInch/96 ;
long yExt = (long)sizecy yLogPixPerInch/96 ;
pDC->SetViewportExt((int)xExt, (int)yExt);
//确定视口大小
CFormView::OnPrepareDC(pDC, pInfo);
}
--------------------------
用建立类向导可以添加
要我就重做算了,VIEW类选择不同自动生成的文件的函数等等也大不相同,不是改个什么地方就行的,菜单做好了想重做也很简单啊,可先重建一个工程,选择CFORMVIEW类其他按相应要求生成工程,弄好以后,复制rc文件内容,具体方法可以在 edit->find in files里面查找ID_FILE_SAVE(其它的ID也行吧,只要是在rc文件中有定义的都行)下面列出的查找结果里面打开rc结尾的文件双击->确定就打开了rc文件,然后打开你原来工程里的rc文件copy过来,接下来把菜单编辑成你原来工程的样子,如果有响应函数也只是点点鼠标然后复制粘贴的工作了。其实这样的选错基类的事情有过一两次经历以后就不会再犯了,如果你找到更好的方法也贴来看下啊
给那个按钮添加一个command消息BN_CLICKED,然后编辑这个command对应的函数,(系统会自动创建),加入:
CMyDialog dlg;//创建一个对话框实例
dlgDoModal();//是对话框显示
即可
CFormView 没有带参(ID)的构造函数,Dialog 调View的构造函数做什么? 你乱改别人基类,也不知道这个基类与原来的基类的一些函数名参数是不是一样的就改。。。。
Cmfc2View 是继承CFormView?如果不是,CFormView::CFormView(IDDD) ; 函数的调法也不对,
以上就是关于怎么获取CFormView类对应dialog的原始尺寸全部的内容,包括:怎么获取CFormView类对应dialog的原始尺寸、vs2017MFC没有可以添加的CFormView这个类怎么办或者有的话在哪里添加呢这一个东西找了很长时间,求助、MFC程序如何实现打印视图区等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)