在对话框的控件上显示图片的问题
我想做一个类似于向导的对话框,就是点“下一步”,“上一步”,“确定”,“取消”那种。
我的想法是这样的:
有一个主对话框就叫CDlg_Main,这个是个非模态对话框,在这个对话框上就只有三个区域,顶端用来显示图片,中间用来显示模态的子对话框,最底下四个按钮(“下一步”,“上一步”,“确定”,“取消”)。
然后有n个子对话框,例如有CDlg_Child1、CDlg_Child2、CDlg_Child3、CDlg_Child4、CDlg_Child5
一开始在CDlg_Main上显示CDlg_Child1,点下一步后隐藏其他的显示CDlg_Child2,以此类推。
现在我的问题是在我想把这个软件美化一下,加个图片啊神马的,结果问题就出来了。
首先在CDlg_Main最顶上加一张图片,做修饰用,我是在OnPaint里如下:
在CDlg_Main上有个图片控件,ID为IDC_STATIC_top,用GDI+把一张PNG图片显示在这个图片控件里
m_pImage是定义的成员变量Image *m_pImage;,已经加载了图片资源
void CDlg_Main::OnPaint() { CPaintDC dc(this); CDC *pDC; pDC = ((CStatic*)GetDlgItem(IDC_STATIC_top))->GetDC(); CRect rect; GetDlgItem(IDC_STATIC_top)->GetWindowRect(&rect); Graphics graphics(pDC->m_hDC); // Create a GDI+ graphics object graphics.DrawImage(m_pImage, 0, 0, rect.Width(), rect.Height()); }void CDlg_Child1::OnPaint(){ CPaintDC dc(this); // device context for painting CDC *pDC; pDC = ((CStatic*)GetDlgItem(IDC_STATIC_PIC))->GetDC(); CRect rect; GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rect); Graphics graphics(pDC->m_hDC); // Create a GDI+ graphics object graphics.DrawImage(m_pImage, 0, 0, rect.Width(), rect.Height());}bool CDlg_Main::ShowDlgPage(int nPage){ HideAllDlg();//这个是先把所以对话框隐藏掉 switch (nPage) { case 0: m_pDlg_Child1->ShowWindow(SW_NORMAL); break; case 1://显示第一页 m_pDlg_Child2->ShowWindow(SW_NORMAL); break; case 2:……//同上 default://默认显示第一页 m_pDlg_Child1->ShowWindow(SW_NORMAL); break; } UpdateWindow(); return true;}BOOL CDlg_Wizard::OnInitDialog(){ CDC *pDC; pDC = ((CStatic*)GetDlgItem(IDC_STATIC_top))->GetDC(); CRect rect; GetDlgItem(IDC_STATIC_top)->GetWindowRect(&rect); Graphics graphics(pDC->m_hDC); // Create a GDI+ graphics object graphics.DrawImage(m_pImage, 0, 0, rect.Width(), rect.Height());}