MFC
jota
这个作者很懒,什么都没留下…
展开
-
使用SkinH实现MFC换肤 102种皮肤
说明 使用SkinH.dll和*.she后缀的皮肤库进行动态换肤。效果关键逻辑void CSkinDemoDlg::OnCbnSelchangeComboSkinStyle(){ int nIndex = m_combSkin.GetCurSel(); if (nIndex < 0) { return; } string strSkinName = m_vctFiles[nIndex]; std::stri...原创 2020-08-10 11:30:23 · 1811 阅读 · 0 评论 -
系统服务用CreateProcessAsUser实现创建界面进程
一、需求 有一个带界面的GUI程序需要一直保持运行状态,但是操作系统有时会自动更新重启,虽然已经通过注册表的方式设置为自启动,但是必须登录操纵系统才能启动,所以需要一种不登录也能让该程序运行的实现方法。 又因为这个程序是GUI程序,无法直接注册为系统服务(系统服务可以开机后不登录也在后台运行),所以考虑通过把一个控制台程序注册成系统服务,然后通过这个控制台程序调用GUI程序。下面代码是控制台程序调用GUI程序的关键逻辑。 经测试,在Win10 和 window...原创 2020-07-17 14:25:32 · 3196 阅读 · 1 评论 -
MFC 用Gdiplus画曲线和直线
一、效果二、关键逻辑 Gdiplus::Pen m_pen; Gdiplus::Pen m_penSolid; REAL dashVals[4] = { 1, // 短划长为2 3, // 间隔为2 1, // 短划长为15 3 }; // 间隔为2 m_pen.SetDashPattern(dashVals, 4); m_penSolid.SetDashStyle(DashStyleDot); CPaintDC dc(this); // 用于绘制的原创 2020-05-11 09:08:37 · 769 阅读 · 0 评论 -
MFC CComboBox下拉框长度根据内容变化
一、效果二、关键逻辑继承CComboBox,在OnCbnDropdown里实现根据下拉框内容调整下拉框高度void CComboBoxDropEx::OnCbnDropdown(){ // TODO: 在此添加控件通知处理程序代码 CDC* pDC = GetDC(); if (pDC != NULL) { CString strText; CRect rc; GetClientRect(rc); int nMaxWidth = rc.Width(); co原创 2020-05-11 08:56:45 · 1787 阅读 · 0 评论 -
CTreeCtrl 收起某个节点并判断是否已收起
框架:MFC需求:收起某个节点,然后判断改节点是否已收起问题:收起节点后判断节点是否收起无效m_treeDev.Expand(m_hTreeItemLowLevel, TVE_COLLAPSE);UINT nState = m_treeDev.GetItemState(m_hTreeItemLowLevel, TVIF_STATE);bRet = nState & TV...原创 2019-12-04 16:32:38 · 202 阅读 · 0 评论 -
获取当前系统登录用户名(包括以管理员权限启动也能获取到)
当程序以管理员权限启动后,如果需要获取当前系统登录非管理员用户名,大部分方法(如 GetUserName)获取到的都是管理员的用户名,以下是获取当前登录用户方法。直接上代码:#include <windows.h>#include <WtsApi32.h>#pragma comment(lib, "WtsApi32.lib")#include <str...原创 2019-01-24 14:56:03 · 11179 阅读 · 1 评论 -
CMFCTabCtrl 设置选项页的高度
1. 添加类CMFCTabCtrlEx,继承CMFCTabCtrl,然后添加如下方法:void CMFCTabCtrlEx::SetTabsHeight(int nHeight){ m_nTabsHeight = nHeight;}2. 调用SetTabsHeight(30);3. 效果参考:MFC之CMFCTabCtrl 控件的一些消息处理...原创 2019-08-28 17:59:07 · 1032 阅读 · 0 评论 -
CMFCTabCtrl 使用示例
继承CMFCTabCtrl实现了一些常用的效果,包括官方未实现的每个Tab的关闭功能原创 2019-08-29 09:52:53 · 5425 阅读 · 2 评论 -
WIN32 根据进程名称关闭进程
#include <windows.h>#include <Tlhelp32.h>#include <sstream>// 根据进程名称获取进程IDDWORD GetProcessIDByName(const TCHAR* pName){ HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNA...原创 2019-09-17 16:17:56 · 844 阅读 · 0 评论 -
基于MFC实现分栏Splitter
1.效果2.主要代码主界面类:// SplitterDemoDlg.h : 头文件//#pragma once#include "FormViewLeft.h"#include "FormViewRight.h"// CSplitterDemoDlg 对话框class CSplitterDemoDlg : public CDialogEx{// 构造pu...原创 2019-09-19 16:35:42 · 1081 阅读 · 0 评论 -
根据进程ID获取进程绝对路径
参考:http://www.bubuko.com/infodetail-1727473.htmlhttps://blog.csdn.net/weixin_33751566/article/details/93942450// 获取进程路径CString CMFCApplication1Dlg::GetProcessPath(DWORD dwProcessID){ CStr...原创 2019-10-09 16:28:08 · 1086 阅读 · 0 评论 -
EnumChildWindows枚举所有子窗口缺漏的问题
EnumChildProc callback functionAn application-defined callback function used with the EnumChildWindows function. It receives the child window handles. The WNDENUMPROC type defines a pointer to this ...转载 2019-01-10 14:03:26 · 1202 阅读 · 0 评论 -
动态设置Dialog窗口风格
enum { Border_None = 0, Border_Dialog_Frame= 1, Border_Thin = 2, Border_Resizing = 3, }; void CMyDlg::SetBorder(UINT nBorder ){ Se...转载 2018-09-10 14:22:37 · 984 阅读 · 0 评论 -
MFC下托盘图标的实现和托盘菜单
MFC下托盘图标的实现和托盘菜单转载 2016-07-14 17:01:35 · 709 阅读 · 0 评论 -
MFC CBrush设置窗口背景色
开发笔记:BOOL CPanelWnd::OnEraseBkgnd(CDC* pDC){ // TODO: 在此添加消息处理程序代码和/或调用默认值 //return CDialog::OnEraseBkgnd(pDC); // 设置背景色为黑色 // 方法一// CBrush newBrush;// newBrush.CreateSolidBrush(RGB(原创 2017-03-15 10:21:34 · 1393 阅读 · 0 评论 -
Gdiplus::Pen的使用
转载来源:未知画笔是用来绘制各种直线和曲线的一种图形工具,GDI+的Pen类为画笔提供了丰富的方法。一般来说,我们可以通过其构造函数来指定画笔的颜色和宽度,其定义如下:Pen( const Color& color, REAL width ); 其中,color是用来指定画笔颜色,width用来指定画笔宽度。REAL是一个float类型定义,而Color是GDI+的一转载 2017-03-19 16:39:46 · 3256 阅读 · 0 评论 -
MFC UpdateData(TRUE)和UpdateData(FALSE)的区别
UpdateData(FALSE): 把变量的内容更新到控件UpdateData(TRUE): 把控件的内容更新到变量原创 2017-08-23 08:58:16 · 1923 阅读 · 0 评论 -
MFC 激活已在运行实例
进程的互斥运行:CreateMutex函数实现只运行一个程序实例 正常情况下,一个进程的运行一般是不会影响到其他正在运行的进程的。但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的,而且此类程序通常也不允许运行同一个程序的多个实例。这就引出了进程互斥的问题。 实现进程互斥的核心思想比较简单:进程在启动时首转载 2017-09-07 17:43:42 · 616 阅读 · 0 评论 -
MFC 用Picture Conctrol显示图片
void ShowLocalImage(CString strImage, CStatic* pImageCtrl){ int cx, cy; CImage image; CRect rect; //根据路径载入图片 image.Load(strImage); //获取图片的宽 高度 cx = image.GetWidth(); cy ...原创 2018-07-09 09:05:27 · 530 阅读 · 0 评论 -
串口和TCP测试工具
一、简介 基于MFC用VS2015开发的一个测试工具,支持串口通信和TCP通信。串口通信是系统自带的API,TCP通信是基于开源网络库libuv,不多说直接上图。 亮点1:支持通过配置文件order.txt配置发送内容,当然也可以在编辑框进行编辑 亮点2:支持串口和TCP两种发送方式 a. 下载exe b. 下载源码二、程序截图三、代码...原创 2018-07-09 10:05:50 · 4884 阅读 · 0 评论 -
MFC设置窗口透明
SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED);SetLayeredWindowAttributes(RGB(1,1,1), 0, LWA_COLORKEY);如果VC SDK版本过低,则使用: typedef BOOL (WINAPI*LAYE...原创 2018-06-20 16:46:16 · 715 阅读 · 0 评论 -
获取系统各种目录
1、简介BOOL SHGetSpecialFolderPath( HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate);功能: 获取指定的系统路径。参数: HWND hwndOwner, 窗口所有者的句柄。可用GetDesktopWindow API取一个窗...原创 2018-08-22 16:31:09 · 614 阅读 · 0 评论 -
MFC嵌入CEF谷歌浏览器项目源码
简介:这是一个在VS2010平台开发内嵌浏览器内核MFC客户端。运行就来占用内存和一般浏览器差别不大。 目前CEF最新的版本已经更新到CEF3,本项目所使用的是CEF1。下载源码设置依赖的cef库 libcef.lib、libcef_dll_wrapper.lib 代码实现WebClient.h/*******************************************...原创 2018-08-27 17:30:22 · 1525 阅读 · 1 评论 -
MFC Edit实现换行
1、设置属性 MultiLine = TRUE (必须设置) Want Return = FALSE (选择设置) Horizontal Scrollbar = FALSE (必须设置) Vertical Scrollbar = TRUE (必须设置) Auto HScroll = FALSE (必须设置) Auto VScroll = TRUE (选择设置)原创 2017-10-28 14:00:10 · 1270 阅读 · 0 评论