对话框最大化和打开文件

来源:互联网 发布:淘宝千里眼好用吗 编辑:程序博客网 时间:2024/04/30 00:10

对话框最大化时,使控件大小也随对话框窗口变化

给对话框添加WM_SIZE消息,生成函数中添加:

void CDataShowDlg::OnSize(UINT nType, int cx, int cy){CDialogEx::OnSize(nType, cx, cy);// TODO: 在此处添加消息处理程序代码CWnd *pWnd;pWnd = GetDlgItem(IDC_STATIC_VIEWSHOW); //获取控件句柄if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建{ CRect rect; //获取控件变化前大小 pWnd->GetWindowRect(&rect); ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标 // cx/m_rect.Width()为对话框在横向的变化比例 //rect.left=rect.left*cx/m_rect.Width();//调整控件大小 rect.right=rect.right*cx/m_rect.Width(); //rect.top=rect.top*cy/m_rect.Height(); rect.bottom=rect.bottom*cy/m_rect.Height(); pWnd->MoveWindow(rect);//设置控件大小m_pShowView->MoveWindow(rect);//设置视图大小} GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小Invalidate();}
m_pShowView是对话框中插入的视图通过IDC_STATIC_VIEWSHOW控件显示


打开文件

void CDataShowDlg::OnFileOpen(){// TODO: 在此添加命令处理程序代码CString strPathName = _T("");CString strFilter = _T("bin(*.*)|*.*||");CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, strFilter); dlg.m_ofn.lpstrTitle = _T("浏览文件");if(dlg.DoModal() == IDOK){strPathName = dlg.GetPathName();}m_pShowDoc->OnOpenDocument(strPathName);}
这样打开的文件数据就可以通过m_pShowDoc访问

BOOL CDataShowDoc::OnOpenDocument(LPCTSTR lpszPathName){if (!CDocument::OnOpenDocument(lpszPathName))return FALSE;// TODO:  在此添加您专用的创建代码ifstream ifs(lpszPathName, ios::binary);//二进制形式读文件<span style="white-space:pre"></span>//........添加读文件语句...........return TRUE;}




0 0
原创粉丝点击