MFC界面布局、效果
最近两天用MFC做了一个界面,用到了一些关于界面上控件的效果,记录一下,分享给大家。
第一:无边框的情况下,拖拽对话框界面
响应消息函数OnNcHitTest()方法,如下:
LRESULT CLogonUINew::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
UINT nResult = CBaseDialog::OnNcHitTest(point);
return nResult == HTCLIENT ? HTCAPTION : nResult;
return CBaseDialog::OnNcHitTest(point);
}
第二:MFC不支持编辑框灰色提示的属性,需要我们通过鼠标键盘的方式监听事件,做一些业务处理,重写PreTranslateMessage()方法,如下:
BOOL CLogonUINew::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
{
if (pMsg->hwnd == ((CEdit*)GetDlgItem(IDC_EDIT_PIN))->m_hWnd &&
GetFocus() == GetDlgItem(IDC_EDIT_PIN))
{
((CEdit*)GetDlgItem(IDC_EDIT_PIN))->SetWindowText(_T(""));
((CEdit*)GetDlgItem(IDC_EDIT_PIN))->SetPasswordChar('*'); //NULL表示明文显示
}
}
}
第三:设置静态文本框的颜色,文字大小,和字体。响应消息函数OnCtlColor(),如下:
HBRUSH CLogonUINew::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CBaseDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
static CFont font;
font.CreatePointFont(85, _T("微软雅黑"));
((CStatic*)GetDlgItem(IDC_TIP))->SetFont(&font);
pDC->SetBkColor(RGB(255, 255, 255));
pDC->SetTextColor(RGB(153, 153, 153));
if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == IDC_MSG_TIP) //更改静态文本
{
pDC->SetTextColor(RGB(237, 286, 32));
}
HBRUSH b = CreateSolidBrush(RGB(255, 255, 255));
return b;
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
第四:Button按钮的三种状态(QT很简单,设置qss样式就可以了),MFC的框架太复杂了,需要重绘(需要源码可以私信我)
如下:
m_btn_login.SetImages(_T("res/login_btn.bmp"), _T("res/login_btn_press.bmp"), _T("res/login_btn_hover.bmp")); //暂不支持从资源文件里读取。
(值得注意的是,在对话框创建之前一定要初始化一些画刷属性)如下:
//加载GDI绘图对象
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
(头文件和库也需要引用)如下:
#include <gdiplus.h>
#include <afxdhtml.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
第五:MFC的windows升级版风格样式,需要在预处理头文件里新增,如下:
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
MFC界面布局、效果相关推荐
- visual studio mfc 界面 布局调整
11 资源视图 ---- 工具栏 22 资源视图 ---- 属性
- 浅谈Winform程序的界面布局设计
DevExpress v20.2完整版下载 DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.DevExpress WinF ...
- duilib 子窗口位置_Duilib学习笔记《02》— 界面布局
2. 简单空白窗体界面 此处以创建一个简单的空白的灰色背景窗体为例.对应的XML布局文件对应的也就很简单.如下: 1<?xml version="1.0" encoding= ...
- duilib 子窗口位置_duilib入门简明教程 -- 界面布局(9)
上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayout,这样 ...
- duilib教程之duilib入门简明教程9.界面布局
上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayout,这样 ...
- duilib教程之duilib入门简明教程 -- 界面布局(9)
上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayout,这样 ...
- 2013 duilib入门简明教程 -- 界面布局(9)
上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayout,这样 ...
- 一步一步学Silverlight 2系列(3):界面布局
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 使用Apache Tiles3.x构建界面布局(一)
Tiles是一个免费的开源模板Java应用程序的框架.基于复合模式简化的用户界面的构建.对于复杂的网站仍是最简单.最优雅的方式与任何MVC技术一起工作.Struts2对Tiles提供了支持,如今Til ...
最新文章
- 在Ubuntu17.04中遇到无法清空回收站解决方法
- 如何配置html prettify,[HTML] Prettify 代码高亮使用总结
- [分享]Host文件的原理解释及应用说明
- HDU2896(病毒侵袭--AC自动机)
- oracle 各种日期函数格式和操作
- pku2777 Count Color
- 洛天依官方原版mmd模型_【MMD模型】天羽音官方MMD模型配布
- 逆向基础——软件手动脱壳技术入门
- rca接口_新手小白必读 1分钟看懂同轴和光纤音频接口
- 9 个出色的 JavaScript 库推荐【云图智联】
- Java新特性(一 · JDK1.5)
- [一直更新中]WerKeyTom的口胡
- 【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)
- flask--虚拟环境
- oracle冷备修改数据文件位置,Oracle冷备迁移脚本(文件系统)
- 基于OpenStack Ironic与DPU的网易数帆裸金属方案实践
- Java中文生僻字排序
- 不务正业系列7:老照片去除斑点手法
- 【制作】基于金沙滩51单片机的电子密码锁程序
- 服务器被抓“肉鸡”后怎么办?怎么避免被抓“肉鸡“