
MFC
此生辽阔
这个作者很懒,什么都没留下…
展开
-
23|VS2017 基于MFC 做一个音乐播放器,带音量调节,切换歌曲
最近接到个小任务,用MFC做一个音乐播放器,不过这也是一直想尝试的,于是今天早上9点到下午16:00,总算是完成了需要的功能开门见山,先展示一下整体界面下面按照功能模块介绍我做这个播放器的过程预加载歌曲我是在一个txt文件里面记录了我的本地音乐的路径,然后程序启动的时候就读取这个txt,根据路径去查找音乐vector<CString>preLoadMusicPath;vector<CString>preLoadMusicName;CListBox listBox;/原创 2021-05-30 09:34:34 · 6454 阅读 · 12 评论 -
MFC:自动关闭抛出异常而自动弹出的AfxMessageBox框,自动关闭弹出的MessageBox框
VC自动关闭弹出的MessageBox对话框的总结首先,创建定时器和弹出MessageBox:void CAutoCloseMessageBoxDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 //MessageBox(_T("未找到D:\\test.txt"), _T("提示"),MB_ICONEXCLAMATION); SetTimer(1, 10, NULL); int ret = MessageBox(_T("未找到D:\\test.转载 2020-11-26 10:07:56 · 1625 阅读 · 0 评论 -
MFC:用Format函数连接多种类型的变量,如CString,int,float
如下代码_T(",%.2f ")里面的逗号是因为我写入的是csv文件,逗号作为分隔符,写入csv文件就没有逗号了 tempWrite.Format(_T("%s") _T(",%.2f ") _T(",%s") _T(", %.2f ") _T(",%s") _T(", %.2f") _T(",%s") _T(", %.2f") _T(", %.2f")原创 2020-11-07 10:34:15 · 449 阅读 · 0 评论 -
用CStdioFile作为函数参数,出现错误--尝试引用已删除的函数
下面的代码就会报错–尝试引用已删除的函数void computeAllChoices(CStdioFile file,std::vector<CString> data, int n, int outLen, int startIndex, int m, CString *arr[], int arrIndex);于是把代码中file改成了引用CStdioFile &filevoid computeAllChoices(CStdioFile &file,std::vec原创 2020-11-07 09:34:57 · 462 阅读 · 0 评论 -
MFC操作csv文件写入数据,获取当前系统时间给文件命名
MFC操作csv文件类似于操作txt文件,但是操作csv的优势是生成的csv文件可以excel表格一样进行数据统计,包括排序,求和,求均值等,MFC操作csv文件写入时以逗号分割,对应csv文件中的每一个小格。利用MFC生成txt并写入数据CTime tm; tm = CTime::GetCurrentTime(); CString str1; str1 = tm.Format("%Y_%m_%d_%X"); str1 = _T("./Four_") + str1 + _T(".csv");原创 2020-11-06 23:22:29 · 1419 阅读 · 5 评论 -
MFC:字符串打印到控制台输出是一串地址,不是字符串值,但是取值出来也不能打印值
std::cout <<*arr[i] << "\t";如图,下边那些类似地址的东西我本来是想输出上边的哪些字符串的排列组合的修改方法_ftprintf(stdout, *arr[i]); cout << "\t";问题解决推荐一篇输出排列组合的文章递归实现 从n个数中选取m个数的所有组合...原创 2020-11-01 20:10:36 · 280 阅读 · 0 评论 -
MFC编辑框自动换行
必须设置Vertical Scrollbar = TRUE必须设置MultiLine = TRUE必须设置Horizontal Scrollbar = FALSE必须设置Auto HScroll = FALSE可选设置Want Return = FALSE可选设置Auto VScroll = TRUE转载 2020-08-24 11:07:58 · 1189 阅读 · 0 评论 -
MFC:把登录界面的用户信息传回主界面
首先,登陆界面肯定是写在主界面的初始化中的,登陆界面用模态对话框,这样具有阻塞功能,在登录框没有注销之前,是不会运行主界面其他程序的,当用户名和密码匹配时,销毁登录对话框主界面OnInitDialog()函数LOGIN dlg_login; //建立登陆对话框对象 dlg_login.DoModal();usernameTrans = dlg_login.usernameTrans;//usernameTrans 是主界面类的一个属性,用于接收登录对话框传进来的dlg_login.usern原创 2020-08-23 17:33:12 · 611 阅读 · 1 评论 -
按照分号分割字符串
CString temp; vector<CString>v1 str.Replace(_T(";"), _T(";"));//防止中英文分号混淆,统一把英文分号替换成中文分号 int bj = 0; int ej = 0; while (ej = str.Find(_T(";"), bj)) { if (ej < 1) { if (bj <= str.GetLength())//排除末尾没加分号的情况 { .原创 2020-08-23 17:25:11 · 1719 阅读 · 0 评论 -
MFC操作word文档,向word文档写入文字
.h文件,需要先包含头文件,头文件见附件#include "msword9.h"#include "CTables0.h"#include "CnlineShapes.h"#include "CnlineShape.h"#include "CPageSetup.h"#include "CFont0.h"#include "CParagraphFormat.h".cpp文件void XXXDlg::OnBnClickedBtn(){ COleVariant vTrue((short原创 2020-08-23 16:43:10 · 1398 阅读 · 0 评论 -
MFC给密码编辑框设置输入文字符号,比如输入显示*******
首先把编辑框的密码格式设置为true然后给编辑框绑定变量CEdit mn_adpwd;然后在初始化中加入以下代码 mn_adpwd.SetPasswordChar('*');原创 2020-08-19 15:18:37 · 1615 阅读 · 2 评论 -
MFC:给编辑框设置字体颜色大小
首先,给编辑框定义CEdit变量 CEdit mn_adname;然后,在头文件添加变量CFont m_fontEdit;在初始化函数中添加一下代码 CFont* pFont = mn_adname.GetFont(); LOGFONT lf; if (pFont) { pFont->GetLogFont(&lf); lf.lfHeight = 20;//改变字体高度 wcscpy_s(lf.lfFaceName, _T("宋体"));原创 2020-08-19 15:14:26 · 1109 阅读 · 0 评论 -
MFC:给静态文本设置字体和颜色
首先我们引入CCaption类CCaption.h#pragma once#include <afxwin.h>class CCaption : public CStatic{public: CCaption(); ~CCaption(); DECLARE_MESSAGE_MAP() afx_msg HBRUSH CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/);public: void Init(int nX, int nY, in原创 2020-08-19 14:58:20 · 1681 阅读 · 0 评论 -
对话框边框设置成None之后不能拖动怎么办
重写OnNcHitTestLRESULT LOGIN::OnNcHitTest(CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 LRESULT ret = CDialog::OnNcHitTest(point); return (ret == HTCLIENT) ? HTCAPTION : ret;}原创 2020-08-19 14:34:23 · 283 阅读 · 0 评论 -
MFC:给对话框添加图片背景
首先需要准备好背景图片,需要bmp格式的然后,导入bmp到工程,修改位图ID(右键位图->属性),最好预先把bmp图片存到工程目录下之后,在对话框类添加消息OnEraseBkgnd(CDC* pDC)CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap Cbp; Cbp.LoadBitmap(IDB_BITMAP2); MemDC.SelectObject(&Cbp); BITMAP Bp; Cbp.GetBitmap(&a原创 2020-08-19 14:20:24 · 1237 阅读 · 0 评论 -
MFC手动添加窗口 最大化 最小化 还原 关闭
MFC手动添加窗口 最大化 最小化 还原 关闭转载 2020-08-19 12:51:02 · 683 阅读 · 0 评论 -
MFC给界面设置颜色渐变
top和bottom颜色可以自己选CRect rect; GetClientRect(&rect); CBitmap m_pBmp; CDC dcMem; CBitmap* pOldBmp; COLORREF top = RGB(217, 236, 235); COLORREF bottom = RGB(130, 182, 235); m_pBmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height()); dcMem.C原创 2020-08-18 08:42:33 · 1881 阅读 · 0 评论 -
MFC给按钮添加位图
记得把按钮的bitmap属性设置为trueCBitmap bitmap;HBITMAP hbmp;bitmap.LoadBitmap(IDB_BT_BITMAP);hbmp = (HBITMAP)bitmap.Detach();((CButton*)GetDlgItem(IDC_BUTTON1))->SetBitmap(hbmp);DeleteObject(hbmp);原创 2020-08-18 08:35:49 · 745 阅读 · 0 评论 -
Transparent ListBox
Transparent ListBox转载 2020-08-17 09:02:08 · 150 阅读 · 0 评论 -
MFC窗口的缩放
MFC总结(2)—MFC窗口的缩放MFC窗口和控件大小等比例缩放转载 2020-08-16 15:49:31 · 725 阅读 · 0 评论 -
推荐一种MFC调试方法:调用控制台输出变量
1、#include <conio.h> 2、在需要开启控制台窗口的地方调用AllocConsole();//注意检查返回值 3、在需要输出调试的时候调用_cprintf等函数如_cprintf("i=%d\n", i); 4、关闭控制台的时候调用FreeConsole(); 注意:上述方法在输出中文时会出现乱码,如果需要输出中文,请使用下面的方法:AllocConsole();freopen( "CONOUT$","w",stdout);printf("i的值为%d转载 2020-08-15 18:14:02 · 1265 阅读 · 0 评论 -
把int,double,float等数据类型转成CString用MessageBox弹出提示
因为我写MFC的时候想要监控变量的值时,喜欢用消息框弹出,当然也可以用断点,这里写几个函数记录一下,以后写程序好直接用①int 转CStringvoid intToCString(int data){ CString tempStr; tempStr.Format(_T("%d"), data); MessageBox(tempStr);}CString转intint a=_ttoi(str);②double转CStringvoid doubleToCString(double d原创 2020-08-14 20:09:46 · 807 阅读 · 0 评论 -
创建非模态对话框,并在下次调用之前销毁对话框,重新创建对话框
我的需求是点击按钮就调用显示非模态对话框,但是如果再次点击按钮,还是会弹出一个一样的非模态对话框,所以在弹出之前,需要先销毁 ,再创建.h文件pie1Dlg *pie1;按钮事件if (NULL != pie1) { delete pie1; }UpdateData(TRUE);pie1 = new pie1Dlg();pie1->Create(IDD_pie1, this); //创建一个非模态对话框pie1->ShowWindow(SW_SHOWNORMAL);原创 2020-08-13 22:34:27 · 159 阅读 · 0 评论 -
MFC:ListCtrl不显示内容?
改控件属性把view属性改成Report原创 2020-08-13 09:56:15 · 1797 阅读 · 2 评论 -
VS2017MFC使用Teechart绘制图表
添加TeeChart控件,右击控件,选择添加变量,vs会自动给我们引入CTchart1这个类,但是只有这个类,我们是远远不够的,需要添加teechart其他相关的类找到报错的地方 ,注释掉就好了原创 2020-08-11 16:24:40 · 2829 阅读 · 3 评论 -
VS2017的TypeLib中的MFC类在哪里
兄弟这你算问对人了为什么是兄弟呢不会有女生做这个吧?打开MFC工程,搜索类向导原创 2020-08-11 10:35:08 · 934 阅读 · 0 评论 -
MFC:把一行数据在表格中分成多行显示
如下图,我有Q1-Q145一共145个指标需要算均值方差,但是用一行显示的话表格太长,所以我分了 3行显示,每行59个数据,第一行Q1-Q59,第二行Q60-Q118, 剩下的放第三行整体思路是先确定每一行放多少个数据,再算需要放多少行QArray就是存放的Q1-Q145Grid_Class是表格对象int nRowNum = 0; int nColNum = 0; int dealer =0;//商 int remainder = 0;//余数 int Qsize = QArray.s原创 2020-08-10 18:50:54 · 497 阅读 · 1 评论 -
MFC:怎么让静态文本控件上的文字动态变化
Cstring str;str.Format(L"共%d张,当前%d/%d页", filenames.size(), nowpage, pages);GetDlgItem(IDC_TEXT)->SetWindowText((str));原创 2020-08-09 08:53:26 · 735 阅读 · 0 评论 -
用MFC做一个图片浏览器
首先我的图片都是以数字命名的,所以查找起来有规律打开文件夹路径,并显示前2张图片void CAnnotationDlg::OnBnClickedPicpath(){ // TODO: 在此添加控件通知处理程序代码 CString m_strFileOut = _T(""); //初始化适应Unicode TCHAR szSelected[MAX_PATH];//用来存放文件夹路径 BROWSEINFO bi; LPITEMIDLIST pidl; bi.hwndOwner原创 2020-08-08 21:56:38 · 1041 阅读 · 0 评论 -
MFC:把Mat图像显示到picture control控件 /清除picture control控件上的图片
把Mat图像显示到picture control控件void CAnnotationDlg::ShowMatImage(Mat& src,int ID){ try { if (src.empty())//没有图像时推出 { return; } BITMAPINFO *pBmpInfo1 = NULL; if (src.channels() == 1)//灰度图像显示 { pBmpInfo1 = (BITMAPINFO *)new char[siz原创 2020-08-08 21:43:45 · 1611 阅读 · 3 评论 -
MFC:dlg窗口编辑框按回车(Enter)键和ESC键会退出解决方法
.选择PreTranslateMessage()方法,重写BOOL dlg类名::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_RETURN: return TRUE; case VK.原创 2020-08-08 21:38:18 · 1138 阅读 · 0 评论 -
怎么看字符串能不能转int ,区分一个字符串中的数字,字母,空格
我现在的需求是把表格的单元格中的字符串取出来,如果是数字就转为int ,如果是中文后者其他的就置0 。我的解决思路是先取出字符串,再一个字符一个字符地匹配ASCII码CString sf = _T(" 柳 / 1A2A3B!4c5】我+6爱7中8国9a0"); /*string sd; sd.matches("-?\\d+");*/ int length = sf.GetLength(); for (int j = 0; j < length; j++) { if (sf[j] &l原创 2020-08-08 09:14:46 · 379 阅读 · 0 评论 -
CCheckListBox全选,反选,全不选
//全选void Mean_VarianceDlg::OnBnClickedSelectall(){ int CheckListObject = TesterSelect.GetCount(); for (int i = 0; i < CheckListObject; i++) { if (0 == TesterSelect.GetCheck(i)) { TesterSelect.SetCheck(i,1); } }}//反选void Mean_Varianc原创 2020-08-07 18:50:47 · 537 阅读 · 0 评论 -
如何动态创建vector数组,且支持后续的访问
我的需求是,比如现在有100个对象,这100个对象都有自己所属的类,可以有其中几个对象是属于同一个类,那么假设这100个对象是属于30个类的,现在想要把属于同一类的对象归到一个数组里面,也就是说我需要创建30个数组。在不知道有多少个类的情况下,我们无法预先创建数组,所以我的思路是先创建一个vector用来存放类的名称,先遍历所有对象,找到它的所属类,这个类第一次出现把这个类名称存入vector,同时动态创建一个vector用来存放属于这一个类的对象,如果遍历到下一个对象也属于这个类,就不用重复压栈这个类名称原创 2020-08-06 19:24:17 · 488 阅读 · 0 评论 -
MFC清空listBox的内容
int Count = listBox.GetCount(); for (int i = Count; i >= 0; i--) listBox.DeleteString(i);原创 2020-08-06 18:46:30 · 2540 阅读 · 0 评论 -
MFC中Listbox控件加了值但是不显示值
解决方法我调整了属性就好了原创 2020-08-06 17:34:00 · 1285 阅读 · 0 评论 -
MFC中MessageBox的多种使用方法
MessageBox用法详解CString str=_T("HelloWorld"); MessageBox(str, _T("提示!"))CString str=_T("HelloWorld");MessageBox(str, _T("提示"), MB_ICONINFORMATION);或者MessageBox(NULL,str, _T("提示") ,MB_ICONINFORMATION); MessageBox(str, _T("提示"), MB_ICONHAND);Mess原创 2020-08-05 19:51:29 · 3433 阅读 · 0 评论 -
MFC对TXT文档进行加密解密
EncodeAndDecode.h#pragma once#include "afxdialogex.h"class EncodeAndDecode{public: EncodeAndDecode(); ~EncodeAndDecode(); void EncodeFile(); void DecodeFile(); };EncodeAndDecode.cpp#include "stdafx.h"#include "EncodeAndDecode.h"#include "af转载 2020-08-05 18:47:54 · 1425 阅读 · 0 评论 -
把MFC的listCtrl表格中的数据导出到Excel表格中
void CMFCExcel1Dlg::OnSaveData(){ // TODO: 在此添加命令处理程序代码 // TODO: 在此添加控件通知处理程序代码 CHeaderCtrl *pmyHeaderCtrl = m_wndPath.GetHeaderCtrl(); //获取表头 int m_cols = pmyHeaderCtrl->GetItemCount(); //获取列数 int m_rows = m_wndPath.GetItemCount(); /原创 2020-08-05 18:42:12 · 1182 阅读 · 0 评论 -
MFC怎么给应用程序换图标
资源视图->ICON->添加资源->导入,选择你已经做好的ico格式的图标,不知道怎么做可以找到喜欢的图片在线做成icon在线生成图标的网站http://www.ico51.cn/http://www.xwidea.cn/找到新导入的图标的ID,在这里改ID就行了CXXXXDlg::CXXXDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_XXX_XXXX_DIALOG, pParent){ m_hIcon = AfxGet原创 2020-07-12 15:28:21 · 272 阅读 · 0 评论