MFC(PC端)
开发速度最快,网上几乎能查到所有问题的解决方案,但是UI最难做
大树学长
多年专业音响、乐器行业经验,PC端、MAC端、安卓端软件开发,精通上位机软件制作。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WIN32开发之判断字符串像素宽度
使用GDI+的MeasureString函数来实现这个功能1、初始化GDI+#include <gdiplus.h> using namespace Gdiplus;#pragma comment(lib, "gdiplus") 2、判断长度等下面这个是判断字符串长度超过240像素后,先获取字符串在240以内部分,然后超出的部分加"..."显示Graphics gra(hdcBuffer); //首先创建字体相关 FontFamily fontFamily原创 2020-11-16 15:17:55 · 657 阅读 · 0 评论 -
MFC之数据库
关系型数据库利用ADO访问数据库:StdAfx.h添加:#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","reEOF")然后在Debug中可用看到msado15.tlh和msado15.tli文件,h 看成头文件 i 看成源文件原创 2017-05-24 17:10:38 · 659 阅读 · 0 评论 -
【关于MFC操作Excel表格的一些经验】
关于MFC操作excel的方法原创 2014-10-30 19:43:19 · 4214 阅读 · 0 评论 -
【MFC之小知识点】
1、判断焦点当前所在控件2、动态移动控件位置3、GDI+绘制文字4、编辑框跳变显示5、最大化显示6、Uint uFormat常用值7、获取菜单个数8、添加气泡提示9、编辑框输入时响应函数10、隐藏菜单11、修改标题栏标题12、动态加载标题栏图标13、动态改变菜单不可用14、使主窗口可用/不可用15、使关闭按钮不可用16、listContr...原创 2015-07-29 09:13:39 · 1929 阅读 · 0 评论 -
MFC之DLL
MFC中DLL使用原创 2017-05-08 17:17:00 · 354 阅读 · 0 评论 -
MFC开发之从快捷方式获取路径
1、要注意不同的计算机登录用户名不一样,需要获取用户名DWORD dwNameLen = 255; wchar_t szBuffer[255]; memset(szBuffer, 0, sizeof(szBuffer)); GetUserName(szBuffer, &dwNameLen);//获取电脑当前登录的用户名szBuffer2、不能获取所有快捷方式的路径,可能和3...原创 2019-06-10 16:01:00 · 436 阅读 · 0 评论 -
MFC开发之设置菜单项为不可用(ListControl右键菜单其中某项不可用)
EnableMenuItem(ID,常数标志)函数MF_BYCOMMAND 指定参数给出已存在的菜单项的命令ID号。此为缺省值。MF_BYPOSITION 指定参数给出已存在菜单项的位置。第一项所在的位置是0。MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。MF_GRAYED ...原创 2019-06-20 10:36:32 · 1797 阅读 · 0 评论 -
MFC开发CString和_T("")、L、TEXT("")相加的问题
编译器VS2013CString add = TEXT("123");CString add1;正确方法:add1.Format(TEXT("789%s456"),add);//当add有很多种可能,为L或者别的方式相加会出现错误原创 2019-06-11 18:03:37 · 2056 阅读 · 1 评论 -
MFC之解压zip文件
zip和unzip类下载地址:https://download.youkuaiyun.com/download/bigtree_mfc/11244981先将zip.h、zip.cpp、unzip.h、unzip.cpp放入工程使用下面的函数就可以了// 返回True表示没有错误,返回False表示有错误发生,//strDstPath,目标文件夹,strZipName解压的文件名(含绝对...原创 2019-06-17 14:35:38 · 2499 阅读 · 0 评论 -
MFC开发之文件夹操作
1、判断目录是否存在PathIsDirectory(路径文件)2、创建文件夹CreateDirectory(路径文件, NULL);3、删除文件夹DeleteDirectory(路径文件);//删除目录模块bool 工程名::DeleteDirectory(CString DirName){ //AfxMessageBox(TEXT("执行删除文件夹:") + Di...原创 2019-06-17 14:40:22 · 377 阅读 · 0 评论 -
MFC开发之CListCtrl
1、上移或者下移static intFind = 0;//为当前选中行,设置为哪一行就为上下移动m_ListCtrl.SetItemState(m_ListCtrl.GetSelectionMark(), 0 ,LVIS_SELECTED);m_ListCtrl.SetItemState(Find, LVIS_SELECTED ,LVIS_SELECTED);m_ListCtrl.S...原创 2019-06-25 16:16:00 · 412 阅读 · 0 评论 -
MFC开发之URLDownloadToFile下载文件时添加进度条
URLDownloadToFile的第五个参数就是用来设置进度的。下载文件:这个放在主类中用来下载文件时测试用,当文件没有下载完时会卡主主线程,真正使用时创建一个线程放在里面使用添加头文件://清除缓存函数使用#include <wininet.h>#pragma comment(lib, "wininet.lib")CCallback callback;//用来设...原创 2019-06-18 14:04:39 · 1558 阅读 · 0 评论 -
MFC开发之各种笔记
1、问题:获取CString长度时使用GetLength获取的都为0解决办法:在取长度之前用GetBuffer()了如果用了,就在用后ReleaseBuffer()一下2、从一个类调用另一个类的函数(函数中有控件操作)一般的从一个类调用另一个类的函数、变量一般就是:A、B两个类,在B类中添加就可以CMyA a;a.变量或者函数;但如果调用A中的函数有控件操作就会程序错...原创 2019-07-01 18:05:10 · 426 阅读 · 0 评论 -
MFC开发之显示网页
基于对话框1、在资源rc添加控件的界面,右键添加activex控件2、选择:microsoft web broser3、类向导中为activex控件添加关联变量m_Web;4、初始化函数中VARIANT variant;m_Web.Navigate(TEXT("http://www.baidu.com"),&variant,&variant,&am...原创 2019-06-18 17:39:48 · 1046 阅读 · 0 评论 -
MFC开发之ListControl自绘相关
自绘继承基类CListCtrl1、去掉选中时系统那种蓝色背景重载OnCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)添加NMLVCUSTOMDRAW* lplvcd = (NMLVCUSTOMDRAW*)(pNMHDR); int nRow = (int)lplvcd->nmcd.dwItemSpec; switch (lplvcd...原创 2019-07-03 09:30:51 · 994 阅读 · 0 评论 -
MFC开发之URLDownloadToFile开线程添加进度条
1、MFC中创建多线程,MyThread为静态函数AfxBeginThread(MyThread, this);//2、URLDownloadToFile中使用进度条需要调用进度条这个控件,这个需要用到类对象在主线程使用直接用this就可以了,但是多线程中就不行了,会提示this只能用户非静态成员函数内部这个时候可以使用静态函数MyThread(LPVOID pParam)中pPa...原创 2019-07-08 18:33:33 · 594 阅读 · 0 评论 -
MFC开发之自绘进度条
继承基类CProgressCtrl重载OnPaint()//CPaintDC dc(this); // device context for painting CBrush BackgroundBrush; BackgroundBrush.CreateSolidBrush(RGB(95, 93, 93));//背景 CBrush ForeBrush; ForeBrush...原创 2019-07-03 15:57:16 · 589 阅读 · 0 评论 -
MFC开发之关闭正在运行的其它程序
//需要关闭运行的上位机HWND hwnd = ::FindWindow(NULL, TEXT("要关闭的程序窗口名称"));::SendMessage(hwnd, WM_CLOSE, 0, 0);//发送WM_CLOSE关闭1、有些程序可能没有设置标题栏名称,随意放在哪都可以AfxGetMainWnd()->SetWindowText(TEXT("标题栏名称"));//vs2...原创 2019-07-30 17:35:40 · 580 阅读 · 0 评论 -
MFC开发之对话框背景贴图对控件刷新闪烁问题的解决办法
CPaintDC dc(this); CDC memdc; memdc.CreateCompatibleDC(&dc);//创建兼容DC CBitmap bkg; bkg.LoadBitmap(IDB_BITMAP1);//载入位图 BITMAP bkginfo; bkg.GetBitmap(&bkginfo);//获取位图信息 memdc.Sel...原创 2019-07-26 11:34:32 · 1111 阅读 · 0 评论 -
MFC开发之图片控件Picture Control显示图片并随对话框大小伸缩
在基于对话框的工程中,使用图片控件,并平铺整个对话框大小图片控件申明和静态文本框一样放在初始化函数OnInitDialog中CRect rt_this;GetWindowRect(&rt_this);CRect rc; GetDlgItem(IDC_STATIC10)->GetClientRect(&rc); CDC* pdcpic = GetDlgIt...原创 2019-07-26 11:41:13 · 1489 阅读 · 0 评论 -
【转载】PreTranslateMessage 、CWND & HWND & 控件ID之间的巧妙转换方法
利用PreTranslateMessage,响应按钮控件的按下(WM_LBUTTONDOWN)和松开(WM_LBUTTONUP)VC的button控制只有两个事件:单击事件,双击事件。1...关于PreTranslateMessagePreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里。...原创 2019-08-05 16:09:56 · 533 阅读 · 0 评论 -
MFC开发之气泡提示
使用MFC自带的CToolTipCtrl实现起来非常方便。1、在 XXXDlg.h 中virtual BOOL PreTranslateMessage(MSG* pMsg); //响应的按键消息CToolTipCtrl m_tooltip;2、XXXDlg.cpp 中初始化函数BOOL XXXDlg::OnInitDialog()中:m_tooltip.Create(this...原创 2019-08-01 14:37:50 · 1258 阅读 · 0 评论 -
【MFC开发之静态文本框响应滚轮消息】
滚轮消息响应函数OnMouseWheel不适用这个函数的原因是,当有多个静态文本框需要判断时这个无法查找ID号,实际上使用PreTranslateMessage获取ID号,判断滚轮方向UINT btnID;//由窗口句柄获得控件ID号,GetWindowLong为获得窗口的ID号。 btnID = GetWindowLong(pMsg->hwnd, GWL_ID);//...原创 2019-08-07 09:52:01 · 582 阅读 · 0 评论 -
MFC开发之设置窗口最大化、最小化和默认大小
当没有标题栏后自己写最大化、最小化和默认大小最大化按钮:static BOOL bMaximum = FALSE;Invalidate(); if (bMaximum){ ShowWindow(SW_RESTORE); bMaximum = false; //添加}else{ ShowWindow(SW_MAXIMIZE); bMaximum = tr...原创 2019-08-07 15:00:48 · 6763 阅读 · 0 评论 -
MFC开发之自绘Group Box控件
基类是CStatic在OnPaint()函数中绘制矩形设置颜色//获取矩形范围 CRect rcClient; GetClientRect(&rcClient); //创建画笔 CPen pen; pen.CreatePen(PS_SOLID, 1, RGB(255,0,0));//边框设置为红色边框 //选入画笔 ...原创 2019-08-15 17:09:02 · 1880 阅读 · 2 评论 -
MFC开发之exe避免多开,只能打开一个exe方法
在InitInstance()函数中添加:CreateMutex(NULL, TRUE, TEXT("主界面标题名称")); //避免程序的多开 xxxx为信号量的名字 可随意 if (GetLastError() == ERROR_ALREADY_EXISTS) { CWnd* cwnd = CWnd::FindWindow(NULL, TEXT("主界面标题名称"));//wi...原创 2019-08-23 11:46:33 · 1181 阅读 · 0 评论 -
MFC开发判断某个程序是否正常运行
添加头文件:#include "tlhelp32.h"szExeName//为程序名称+exe或者进程BRunning//为返回值(false:未运行,true:正在运行) BOOL BRunning = FALSE; PROCESSENTRY32 processEntry32; HANDLE toolHelp32Snapshot = CreateToolhelp32Snapsh...原创 2019-08-28 17:23:17 · 1181 阅读 · 0 评论 -
MFC开发之多exe时,操作别的exe
A.exe和B.exeA.exe不能通过双击或者别的方式主动打开,只能通过B.exe调用才能打开B中STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&pi, sizeof(pi)); ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si);...原创 2019-08-29 10:04:19 · 283 阅读 · 0 评论 -
MFC开发之静态文本框实现编辑框滚动显示文字效果
效果:1、通过滚轮拖动进行滚动显示2、通过鼠标滚轮显示3、保证滚动每行和字实际高度一致4、滚轮行数和需要滚动的字行数一致正文:需要自绘静态文本框一、使用滚轮和滚动条在PreTranslateMessage函数中判断滚轮消息UINT btnID;//由窗口句柄获得控件ID号,GetWindowLong为获得窗口的ID号。 btnID = GetWindowLo...原创 2019-08-29 18:32:37 · 2982 阅读 · 0 评论 -
MFC开发之给生成的exe添加管理员权限运行
在C盘中需要管理员权限才能写入数据,这就需要管理器权限1、右键项目->属性->配置属性->链接器->清单文件->UAC执行级别->requireAdministrator (/level='requireAdministrator')给生成的exe添加管理员权限...原创 2019-08-30 14:24:50 · 1096 阅读 · 1 评论 -
MFC选择文件对话框、选择目录对话框、获取指定目录下文件名和个数
1、选择目录对话框:szPath为选择目录路径char szPath[MAX_PATH]; //存放选择的目录路径 CString str; ZeroMemory(szPath, sizeof(szPath)); BROWSEINFO bi; bi.hwndOwner = m_hWnd; bi.pidlRoot = NUL原创 2016-08-12 09:22:57 · 2086 阅读 · 0 评论 -
【删除菜单项或者菜单项中的子菜单】
这个不是真的删除,只是效果上看上去是这样的。第一步:在主函数中重载OnCreate(LPCREATESTRUCT lpcreatestryct)函数第二步:OnCreate(LPCREATESTRUCT lpcreatestryct)中添加GetMenu()->GetSubMenu(0/*表示第一个菜单项*/)->EnableMenuItem(1/*从0开始,第二个子菜单*/,原创 2014-12-08 11:46:43 · 1156 阅读 · 0 评论 -
【MFC动态创建按钮,并在按钮上实现位图的切换显示】
这是从我百度空间复制过来的动态创建按钮,并在按钮中添加位图,通过单击按钮显示不同的位图,可设置为显示按钮按下和弹起两种状态。只要判断a值从而输入不同的响应代码。1、在头文件中添加: CButton *pBtn;2、在初始化函数中添加: pBtn = new CButton(); pBtn->Cre原创 2014-10-30 19:38:08 · 2633 阅读 · 3 评论 -
【CreateEvent与SetEvent/ResetEvent】
CreateEvent:创建Window事件,创建或打开一个命名的或无名的事件对象.创建的事件有两种状态:发送信号和不发送信号;SetEvent:将事件设置为发送信号ResetEvent:将事件设置为不发信号原创 2015-04-04 14:17:10 · 897 阅读 · 0 评论 -
【自绘控件之按钮类】
准备制作自己的控件类,按钮是第一个,我会将我在其中遇到困难和大家分享一些,只要实现下面的功能,按钮类就可以满足大部分的需求按钮类功能:1、正常这个状态可以设置为光离开按钮,需要添加变量,然后在OnMouseLeave中获取状态2、光标在按钮区域上光标在按钮上OnMouseMove和OnMouseHover3、按下4、当前按钮为活动按钮5、按钮不可用...原创 2014-12-30 18:02:00 · 1040 阅读 · 0 评论 -
【关于Rect类中的inflaterect和deflaterect函数】
简单的说就是左(left) 上(top) 右(right) 下(bottom) 下面列出其全部重载函数 CRect::InflateRectvoid InflateRect( int x, int y ); void InflateRect( SIZE size ); void InflateRect( LPCRECT lpRect ); void InflateR原创 2015-01-09 09:25:37 · 1918 阅读 · 0 评论 -
【MFC中关于插入位图失真的解决办法】
MFC中插入位图到控件不失真的方法。原创 2015-05-18 11:40:16 · 1503 阅读 · 0 评论 -
【vs2005学习】
1、子窗口最大化PreCreateWindow()函数中添加:cs.style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU| FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;ps原创 2015-06-01 13:42:38 · 480 阅读 · 0 评论 -
【MFC设置静态文本框背景为透明】
视图类中添加OnCtlColor()函数:IDC_STATIC1为静态文本框ID HBRUSH CAngleView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); if((pWnd->GetD原创 2015-07-02 10:37:10 · 3100 阅读 · 1 评论 -
【MFC添加XP风格】
给MFC控件添加XP风格。原创 2015-06-01 10:30:09 · 1107 阅读 · 0 评论
分享