对话框图片控件
在基于对话框的界面中有两个图片子控件A和B,A和B上分别有一个按钮,当点击图片A上的按钮a时,图片A充满整个对话框(即图片B隐藏),同理,当点击 图片B上的按钮b时,图片B充满整个对话框(即此时图片A隐藏)
请大家帮我设计整个界面,最好能给出代码的思想,或者能给出详细的代码!
不甚感激!
谢谢谢谢!
[解决办法]
图片子控件A.ShowWindow(SW_SHOW);图片子控件A.ShowWindow(SW_HIDE);
[解决办法]
就是自绘对话框的背景呀。
搞个变量(m_bgPath)保存背景图片的路径或资源ID。
点击按钮A时,将m_bgPath设为img1,再调用Invalidate()刷新背景。
点击按钮B时,将m_bgPath设为img2,再调用Invalidate()刷新背景。
具体刷新背景的操作就是主对话框的WM_PAINT消息处理了。
为对话框画背景图片:http://blog.csdn.net/joeblackzqq/article/details/7260467
[解决办法]
CBitmap只能加载bmp,ico,cur图片格式。如果要加载如jpg,gif,png等格式,可以采用CImage类。
参考:http://blog.csdn.net/joeblackzqq/article/details/7267873
// 定义全局变量和全局函数WNDPROC oldProc_PIC1 = 0; // 保存IDC_PIC1控件默认的消息处理函数地址CString imgPath; // 保存背景图片地址BOOL DrawPic(HWND hWnd) // 在指定的控件上画图{ CImage img; if(SUCCEEDED(img.Load(imgPath))) { CWnd *pWnd = CWnd::FromHandle(hWnd); CPaintDC dc(pWnd); // dc必须用指定的控件窗口来初始化,否则将看不到绘图结果 CRect rect; pWnd->GetClientRect(rect); // 获取控件的大小 img.Draw(dc.m_hDC, rect); return TRUE; } return FALSE; // 绘图失败}LRESULT NewProc_PIC1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) // IDC_PIC1控件对应的新的消息函数{ switch (message) { case WM_PAINT: if(DrawPic(hWnd)) return S_OK; else break; default: break; } return CallWindowProc(oldProc_PIC1, hWnd, message, wParam, lParam); // 调用默认的消息函数}