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 · 459 阅读 · 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 · 485 阅读 · 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 · 940 阅读 · 0 评论 -
MFC开发之各种笔记
1、问题:获取CString长度时使用GetLength获取的都为0解决办法:在取长度之前用GetBuffer()了如果用了,就在用后ReleaseBuffer()一下2、从一个类调用另一个类的函数(函数中有控件操作)一般的从一个类调用另一个类的函数、变量一般就是:A、B两个类,在B类中添加就可以CMyA a;a.变量或者函数;但如果调用A中的函数有控件操作就会程序错...原创 2019-07-01 18:05:10 · 297 阅读 · 0 评论 -
MFC开发之URLDownloadToFile下载文件时添加进度条
URLDownloadToFile的第五个参数就是用来设置进度的。下载文件:这个放在主类中用来下载文件时测试用,当文件没有下载完时会卡主主线程,真正使用时创建一个线程放在里面使用添加头文件://清除缓存函数使用#include <wininet.h>#pragma comment(lib, "wininet.lib")CCallback callback;//用来设...原创 2019-06-18 14:04:39 · 1355 阅读 · 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 · 279 阅读 · 0 评论 -
MFC开发之文件夹操作
1、判断目录是否存在PathIsDirectory(路径文件)2、创建文件夹CreateDirectory(路径文件, NULL);3、删除文件夹DeleteDirectory(路径文件);//删除目录模块bool 工程名::DeleteDirectory(CString DirName){ //AfxMessageBox(TEXT("执行删除文件夹:") + Di...原创 2019-06-17 14:40:22 · 304 阅读 · 0 评论 -
MFC之解压zip文件
zip和unzip类下载地址:https://download.csdn.net/download/bigtree_mfc/11244981先将zip.h、zip.cpp、unzip.h、unzip.cpp放入工程使用下面的函数就可以了// 返回True表示没有错误,返回False表示有错误发生,//strDstPath,目标文件夹,strZipName解压的文件名(含绝对...原创 2019-06-17 14:35:38 · 2166 阅读 · 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 · 1938 阅读 · 1 评论 -
MFC开发之设置菜单项为不可用(ListControl右键菜单其中某项不可用)
EnableMenuItem(ID,常数标志)函数MF_BYCOMMAND 指定参数给出已存在的菜单项的命令ID号。此为缺省值。MF_BYPOSITION 指定参数给出已存在菜单项的位置。第一项所在的位置是0。MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。MF_GRAYED ...原创 2019-06-20 10:36:32 · 1596 阅读 · 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 · 338 阅读 · 0 评论 -
MFC之DLL
MFC中DLL使用原创 2017-05-08 17:17:00 · 289 阅读 · 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 · 1752 阅读 · 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 · 588 阅读 · 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 · 881 阅读 · 0 评论 -
MFC开发之URLDownloadToFile开线程添加进度条
1、MFC中创建多线程,MyThread为静态函数AfxBeginThread(MyThread, this);//2、URLDownloadToFile中使用进度条需要调用进度条这个控件,这个需要用到类对象在主线程使用直接用this就可以了,但是多线程中就不行了,会提示this只能用户非静态成员函数内部这个时候可以使用静态函数MyThread(LPVOID pParam)中pPa...原创 2019-07-08 18:33:33 · 489 阅读 · 0 评论 -
MFC开发之给生成的exe添加管理员权限运行
在C盘中需要管理员权限才能写入数据,这就需要管理器权限1、右键项目->属性->配置属性->链接器->清单文件->UAC执行级别->requireAdministrator (/level='requireAdministrator')给生成的exe添加管理员权限...原创 2019-08-30 14:24:50 · 842 阅读 · 1 评论 -
MFC开发之静态文本框实现编辑框滚动显示文字效果
效果:1、通过滚轮拖动进行滚动显示2、通过鼠标滚轮显示3、保证滚动每行和字实际高度一致4、滚轮行数和需要滚动的字行数一致正文:需要自绘静态文本框一、使用滚轮和滚动条在PreTranslateMessage函数中判断滚轮消息UINT btnID;//由窗口句柄获得控件ID号,GetWindowLong为获得窗口的ID号。 btnID = GetWindowLo...原创 2019-08-29 18:32:37 · 2686 阅读 · 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 · 217 阅读 · 0 评论 -
MFC开发判断某个程序是否正常运行
添加头文件:#include "tlhelp32.h"szExeName//为程序名称+exe或者进程BRunning//为返回值(false:未运行,true:正在运行) BOOL BRunning = FALSE; PROCESSENTRY32 processEntry32; HANDLE toolHelp32Snapshot = CreateToolhelp32Snapsh...原创 2019-08-28 17:23:17 · 962 阅读 · 0 评论 -
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 · 982 阅读 · 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 · 1659 阅读 · 2 评论 -
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 · 5797 阅读 · 0 评论 -
【MFC开发之静态文本框响应滚轮消息】
滚轮消息响应函数OnMouseWheel不适用这个函数的原因是,当有多个静态文本框需要判断时这个无法查找ID号,实际上使用PreTranslateMessage获取ID号,判断滚轮方向UINT btnID;//由窗口句柄获得控件ID号,GetWindowLong为获得窗口的ID号。 btnID = GetWindowLong(pMsg->hwnd, GWL_ID);//...原创 2019-08-07 09:52:01 · 488 阅读 · 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 · 1114 阅读 · 0 评论 -
【转载】PreTranslateMessage 、CWND & HWND & 控件ID之间的巧妙转换方法
利用PreTranslateMessage,响应按钮控件的按下(WM_LBUTTONDOWN)和松开(WM_LBUTTONUP)VC的button控制只有两个事件:单击事件,双击事件。1...关于PreTranslateMessagePreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里。...原创 2019-08-05 16:09:56 · 407 阅读 · 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 · 1245 阅读 · 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 · 988 阅读 · 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 · 467 阅读 · 0 评论 -
【关于MFC操作Excel表格的一些经验】
关于MFC操作excel的方法原创 2014-10-30 19:43:19 · 3945 阅读 · 0 评论 -
孙鑫VC++深入详解笔记
前言:最近感觉技术提升提来很吃力,主要还是因为以前的基础没有打牢,特别是多线程和数据库方面,所有准备重新学习一下基础。如下文章转载自:http://www.cnblogs.com/gaojun/archive/2010/08/15/1800099.html#_Toc269652900Lesson1: Windows程序运行原理及程序编写流程窗口产生过程,句柄原理,消息队列,回调函数,窗口转载 2017-04-20 09:07:08 · 2602 阅读 · 0 评论 -
MFC关于ini文件的操作方法
今天准备写个软件,忘了怎么弄的了,以前没有记录,今天记录一下。ini文件操作包括文件的写入和读取:写入数据使用WritePrivateProfileStringvoid CCountView::OnButton2() { for( i = 0; i < 10; i++) { CString strCount; strCount.Format("Name%d",...原创 2016-04-21 19:59:46 · 753 阅读 · 0 评论 -
MFC中文件保存中默认添加扩展名
如下:”保存“对话框CFileDialog fileDlg(FALSE, _T("cfj"), "新建数据文档(1).cfj", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "文件(*.cfj)|*.cfj||", NULL);fileDlg.m_ofn.lpstrTitle = "保存";if (fileDlg.DoModal() ==原创 2016-01-04 17:20:51 · 995 阅读 · 0 评论 -
MFC光标移到到控件上设置为手形
函数:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { switch(pWnd->GetDlgCtrlID()) // 得到鼠标所在位置的控件的ID号 { case IDC_BUTTON1: // 鼠标位于按钮空间区域内 { // 设置鼠标指针为"手"形指针 SetCursor(AfxGetApp()->L原创 2015-12-15 10:30:32 · 1905 阅读 · 0 评论 -
【MFC中解决滚轮滚动一次的值过大的问题】
提示:一般Slider Control控件中,设置的范围值大于100或更多者时,每次滚动滚轮会出现滑块一次走2个值或者更多值的情况,导致不够精确表示滑块每一个值。滚轮的响应函数:OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)其中zDelta的值就是滚动滚动的值,zDelta/120 = 1向上滚动,zDelta/120原创 2015-12-09 15:23:10 · 1539 阅读 · 0 评论 -
【MFC添加XP风格】
给MFC控件添加XP风格。原创 2015-06-01 10:30:09 · 1011 阅读 · 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 · 2967 阅读 · 1 评论 -
【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 · 423 阅读 · 0 评论 -
【MFC中关于插入位图失真的解决办法】
MFC中插入位图到控件不失真的方法。原创 2015-05-18 11:40:16 · 1410 阅读 · 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 · 1688 阅读 · 0 评论