博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WTL改变对话框大小
阅读量:4974 次
发布时间:2019-06-12

本文共 3020 字,大约阅读时间需要 10 分钟。

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

// MainDlg.h : interface of the CMainDlg class///#pragma once#include 
class CMainDlg : public CDialogImpl
, public CDoubleBufferImpl
, public CDialogResize
{public: enum { IDD = IDD_MAINDLG }; BEGIN_MSG_MAP(CMainDlg) CHAIN_MSG_MAP(CDialogResize
) CHAIN_MSG_MAP(CDoubleBufferImpl
) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) END_MSG_MAP() 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()// Handler prototypes (uncomment arguments if needed):// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/) LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); void DoPaint(CDCHandle dc);private: Gdiplus::GdiplusStartupInput gGdiInput; ULONG token;};
MainDlg.cpp

// MainDlg.cpp : implementation of the CMainDlg class///#include "stdafx.h"#include "resource.h"#include "MainDlg.h"#pragma comment(lib, "GdiPlus.lib")LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/){	// center the dialog on the screen	CenterWindow();	// set icons	HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));	SetIcon(hIcon, TRUE);	HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));	SetIcon(hIconSmall, FALSE);	GdiplusStartup(&token, &gGdiInput, NULL);	DlgResize_Init();	return TRUE;}void CMainDlg::DoPaint(CDCHandle dc){	RECT rect;	GetClientRect(&rect);		Gdiplus::Graphics g(dc);	Gdiplus::Image im(_T("res/green.jpg"));	g.DrawImage(&im, 0, 0, rect.right - rect.left, rect.bottom - rect.top);}LRESULT CMainDlg::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/){	Gdiplus::GdiplusShutdown(token);	EndDialog(wID);	return 0;}

转载于:https://www.cnblogs.com/lgh1992314/p/6616317.html

你可能感兴趣的文章
C 编译程序步骤
查看>>
页面抓取匹配时,万恶的\r,\n,\t 要先替换掉为空,出现匹配有问题,都是这个引起的...
查看>>
利用Node.js调用Elasticsearch
查看>>
构造函数
查看>>
LeetCode N-Queens
查看>>
jstat 命令
查看>>
leetcode[155]Min Stack
查看>>
《代码不朽:编写可维护软件的10大要则(C#版)》读后感
查看>>
04、我的.net Core的学习 - 网页版Hello World
查看>>
分块学习
查看>>
UIWebView 屏蔽或者修改 alert警告框
查看>>
Qt-第一个QML程序-3-自定义一个按钮
查看>>
分布式系统事务一致性解决方案
查看>>
树梅派中文输入法支持
查看>>
[Git] 005 初识 Git 与 GitHub 之分支
查看>>
使用Analyze 和Instruments-Leaks分析解决iOS内存泄露
查看>>
Vue.js的入门
查看>>
【自定义异常】
查看>>
pip install 后 importError no module named "*"
查看>>
一些疑惑
查看>>