对话框最大化时,使控件大小也随对话框窗口变化
给对话框添加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;
}