📄 通过类实例改变类成员变量的值.txt
字号:
首先在对话框的构造函数中初始化其成员变量test的值为0;
视图类中:void CMyView::OnMyTest()
{
// TODO: Add your command handler code here
MYTESTDLG AA;
AA.test=11;
AA.DoModal();
}
点击弹出对话框中的TEST按键,响应函数为
void MYTESTDLG::OnTest()
{
// TODO: Add your control notification handler code here
int bb=test;
}
这时对话框类的成员变量test值已经被改变为11
另有一例是在视图类中初始化非模态对话框中的一些设定值,而后进行对话框显示,
于是调用对话框类的显示函数OnPaint(),这样就能进行图像显示。
如下:
void CWAVELETView::OnBmpShow()
{
CWAVELETDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// CString fName= pDoc->GetFilePathTwo();
CString fName= pDoc->firstname;
IMAGE_SHOWDLG *myimage= new IMAGE_SHOWDLG();
//Check if new succeeded and we got a valid pointer to a dialog object
if(myimage != NULL)
{
BOOL ret = myimage->Create(IDD_IMAGE,NULL);
if(!ret) //Create failed.
AfxMessageBox("Error creating Dialog");
};
......
myimage->name=fName;
myimage->m_palDIB=pDoc->GetDocPalette();
myimage->MoveWindow(0, 0, myRect.Width(), myRect.Height());
myimage->ShowWindow(SW_SHOW);
}
于是调用对话框类中OnPaint();
void IMAGE_SHOWDLG::OnPaint()
{
CPaintDC dc(this); // device context for painting
CFile cf;
CFileException ex;
if (!cf.Open(name,
CFile::modeRead|CFile::modeReadWrite|CFile::shareDenyRead,&ex))
{
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
AfxMessageBox(szError);
return;
}
HDIB m_hDIB =::ReadDIBFile(cf);
// 判断DIB是否为空
if (m_hDIB != NULL)
{
LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) m_hDIB);
// 获取DIB宽度
int cxDIB = (int) ::DIBWidth(lpDIB);
// 获取DIB高度
int cyDIB = (int) ::DIBHeight(lpDIB);
::GlobalUnlock((HGLOBAL) m_hDIB);
CRect rcDIB;
rcDIB.top = rcDIB.left = 0;
rcDIB.right = cxDIB;
rcDIB.bottom = cyDIB;
CRect rcDest;
// 判断是否是打印
if (dc.IsPrinting())
{
// 是打印,计算输出图像的位置和大小,以便符合页面
// 获取打印页面的水平宽度(象素)
int cxPage = dc.GetDeviceCaps(HORZRES);
// 获取打印页面的垂直高度(象素)
int cyPage = dc.GetDeviceCaps(VERTRES);
// 获取打印机每英寸象素数
int cxInch = dc.GetDeviceCaps(LOGPIXELSX);
int cyInch = dc.GetDeviceCaps(LOGPIXELSY);
// 计算打印图像大小(缩放,根据页面宽度调整图像大小)
rcDest.top = rcDest.left = 0;
rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch)
/ ((double)cxDIB * cxInch));
rcDest.right = cxPage;
// 计算打印图像位置(垂直居中)
int temp = cyPage - (rcDest.bottom - rcDest.top);
rcDest.bottom += temp/2;
rcDest.top += temp/2;
}
else
// 非打印
{
CWAVELETApp *pApp=(CWAVELETApp *)AfxGetApp();
int aa=pApp->mysize+1;
rcDest.top = rcDest.left = 0;
rcDest.right = cxDIB/aa;
rcDest.bottom = cyDIB/aa;
}
// 输出DIB
::PaintDIB(dc.m_hDC, &rcDest, m_hDIB,
&rcDIB, m_palDIB);
}
// 恢复正常光标
EndWaitCursor();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -