首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

对话框图片控件解决思路

2012-05-01 
对话框图片控件在基于对话框的界面中有两个图片子控件A和B,A和B上分别有一个按钮,当点击图片A上的按钮a时,

对话框图片控件
在基于对话框的界面中有两个图片子控件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

C/C++ code
// 定义全局变量和全局函数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);        // 调用默认的消息函数} 

热点排行