1、让对话框从CdialogResize类继承过来:

class CMainDlg : public CDialogImpl<CMainDlg>,

public CDoubleBufferImpl<CMainDlg>,

public CDialogResize<CMainDlg>

2、添加消息路由

BEGIN_MSG_MAP(CMainDlg)

CHAIN_MSG_MAP(CDialogResize<CMainDlg>)

CHAIN_MSG_MAP(CDoubleBufferImpl<CMainDlg>)

MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)

COMMAND_ID_HANDLER(IDCANCEL, OnCancel)

END_MSG_MAP()

3、添加消息映射

BEGIN_DLGRESIZE_MAP(CMainDlg)

DLGRESIZE_CONTROL(IDC_STATIC_INPUT,  DLSZ_SIZE_X)

DLGRESIZE_CONTROL(IDC_STATIC_SEARCH, DLSZ_SIZE_X | DLSZ_SIZE_Y)

END_DLGRESIZE_MAP()

4、在OnInitDialog()中调用DlgResize_Init();

当对话框存在GroupBox的话,需要将GroupBox设置为透明背影

Transparent:true

测试代码:

MainDlg.h

  1. // MainDlg.h : interface of the CMainDlg class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4.  
  5. #pragma once
  6. #include <gdiplus.h>
  7.  
  8. class CMainDlg : public CDialogImpl<CMainDlg>,
  9. public CDoubleBufferImpl<CMainDlg>,
  10. public CDialogResize<CMainDlg>
  11. {
  12. public:
  13. enum { IDD = IDD_MAINDLG };
  14.  
  15. BEGIN_MSG_MAP(CMainDlg)
  16. CHAIN_MSG_MAP(CDialogResize<CMainDlg>)
  17. CHAIN_MSG_MAP(CDoubleBufferImpl<CMainDlg>)
  18. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  19. COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
  20. END_MSG_MAP()
  21.  
  22. BEGIN_DLGRESIZE_MAP(CMainDlg)
  23. DLGRESIZE_CONTROL(IDC_STATIC_INPUT, DLSZ_SIZE_X)
  24. DLGRESIZE_CONTROL(IDC_STATIC_SEARCH, DLSZ_SIZE_X | DLSZ_SIZE_Y)
  25. END_DLGRESIZE_MAP()
  26.  
  27. // Handler prototypes (uncomment arguments if needed):
  28. // LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
  29. // LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  30. // LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
  31.  
  32. LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
  33. LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  34. void DoPaint(CDCHandle dc);
  35. private:
  36. Gdiplus::GdiplusStartupInput gGdiInput;
  37. ULONG token;
  38. };

MainDlg.cpp

  1. // MainDlg.cpp : implementation of the CMainDlg class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4.  
  5. #include "stdafx.h"
  6. #include "resource.h"
  7.  
  8. #include "MainDlg.h"
  9. #pragma comment(lib, "GdiPlus.lib")
  10.  
  11. LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
  12. {
  13. // center the dialog on the screen
  14. CenterWindow();
  15.  
  16. // set icons
  17. HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));
  18. SetIcon(hIcon, TRUE);
  19. HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));
  20. SetIcon(hIconSmall, FALSE);
  21.  
  22. GdiplusStartup(&token, &gGdiInput, NULL);
  23.  
  24. DlgResize_Init();
  25. return TRUE;
  26. }
  27.  
  28. void CMainDlg::DoPaint(CDCHandle dc)
  29. {
  30. RECT rect;
  31. GetClientRect(&rect);
  32.  
  33. Gdiplus::Graphics g(dc);
  34. Gdiplus::Image im(_T("res/green.jpg"));
  35. g.DrawImage(&im, 0, 0, rect.right - rect.left, rect.bottom - rect.top);
  36. }
  37.  
  38. LRESULT CMainDlg::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  39. {
  40. Gdiplus::GdiplusShutdown(token);
  41. EndDialog(wID);
  42. return 0;
  43. }

WTL改变对话框大小的更多相关文章

  1. pygame “音乐盒”---- 播放一首歌& 点击对话框后背景以及对话框大小改变

    有时,你用pygame写的游戏也许需要播放一些背景音乐,该怎么做呢,直接上代码: 下面的代码,有关于: 1>设置对话框图标.大小.标题 2>播放音乐 3>设置背景图片,以及获取背景图 ...

  2. BCGcontrolBar(五) 对话框大小改变控件自动适应

    改变控件大小 首先在 构造函数中加入 EnableLayout(); 在OnInitDialog()函数中加入 CBCGPStaticLayout* pLayout = (CBCGPStaticLay ...

  3. 【MFC】MFC改变对话框中静态文本的字体大小

    MFC改变对话框中静态文本的字体大小 2010/08/09 11:30 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体.对于你的问题,需要首先用CreateFont来建立一个 ...

  4. MFC设置对话框大小

    设置对话框大小不可改变 1.在类的头文件中加入函数申明 (.h文件) afx_msg void OnGetMinMaxInfo(MINMAXINFO *lpMMI); 2.在消息映射中添加 (.cpp ...

  5. 贴近浏览器窗口右侧的jqueryui dialog快速从左侧调整大小时对话框大小设置不准确的问题

    之前在做两个相同的页面的事件同步时发现了这个问题,现在把它记录下来. 一.问题描述 页面中的jqueryui对话框,如果把它拖动到靠近浏览器窗口右侧边缘,并快速从对话框左侧调整对话框窗口大小时,对话框 ...

  6. pycharm设置用滑轮改变字体大小

    在电脑第一次安装pycharm之后,发现每次调整代码界面的字体,总是需要到setting里面调整,这样非常不方便,特别是对于代码量很多的时候,我们有时候需要把目光聚焦到某一句代码,这个时候就需要放大, ...

  7. JavaScript动画-拖拽改变元素大小

    ▓▓▓▓▓▓ 大致介绍 拖拽改变元素大小是在模拟拖拽上增加了一些功能 效果:拖拽改变元素大小 ▓▓▓▓▓▓ 拖拽改变元素大小原理 首先这个方块得知道我们想要改变这个它的大小,所以我给它设定一个范围,当 ...

  8. javascript动画系列第四篇——拖拽改变元素大小

    × 目录 [1]原理简介 [2]范围圈定 [3]大小改变[4]代码优化 前面的话 拖拽可以让元素移动,也可以改变元素大小.本文将详细介绍拖拽改变元素大小的效果实现 原理简介 拖拽让元素移动,是改变定位 ...

  9. WPF实现无边框窗体拖拽右下角▲ 改变窗体大小【framwork4.0】 谢谢大家关注

    效果图:(右下角拖拽改变窗体大小) 第一步:添加xaml代码: <Border Name="ResizeBottomRight" MouseMove="Resize ...

随机推荐

  1. Java锁对象和条件对象的使用

    锁对象 临界区:临界区是一个特殊的代码段,该代码段访问某种特殊的公共资源,该资源同一时间只允许一个线程使用. Java中可以使用锁对象创造一个临界区: myLock.lock(); try { 关键代 ...

  2. 1091 N-自守数 (15 分)C语言

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为"N-自守数".例如 3×92^​2​​ =25392,而 25392 的末尾两位正好是 92,所以 ...

  3. C Primer Plus(二)

    重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 分支和跳转 1.ctype.h头文件里包含了一些列用于字符判断的函数,包括判断数字.大 ...

  4. mui选择器和软键盘冲突解决

    只需要让此节点失焦即可: onfocus="this.blur();"

  5. 从0开发3D引擎(六):函数式反应式编程及其在引擎中的应用

    目录 上一篇博文 介绍函数式反应式编程 函数式反应式编程学习资料 函数式反应式编程的优点与缺点 优点 缺点 异步处理的其它方法 为什么使用Most库 引擎中相关的函数式反应式编程知识点 参考资料 大家 ...

  6. 简单快速破解IDEA

    ====================================2019.09.16更新==================================== 可以直接去掉第三步,直接在激活 ...

  7. 【Spark 内核】 Spark 内核解析-下

    Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更 ...

  8. TensorFlow——TensorBoard可视化

    TensorFlow提供了一个可视化工具TensorBoard,它能够将训练过程中的各种绘制数据进行展示出来,包括标量,图片,音频,计算图,数据分布,直方图等,通过网页来观察模型的结构和训练过程中各个 ...

  9. Android通过子线程更新UI的几种方式

    一般情况下,UI的更新都少不了Handler,首先我们先了解一下Handler机制: Handler消息机制 定义 Message 线程间通信的数据单元,可通过message携带需要的数据创建对象:M ...

  10. 七种武器:JavaScript 新特性闪亮登场

    JavaScript(或ECMA Script) 是一门不断发展的语言,有许多关于如何前进的建议和想法.TC39(技术委员会39)是负责定义JS标准和特性的委员会,今年他们非常活跃.以下是目前处于&q ...