MFC-没饭吃
文章平均质量分 65
MFC相关知识
清水迎朝阳
多年windows下c++客户端开发,或多或少踩了很多坑,积累了一些经验
展开
-
有声小说书屋阅读软件 功能及技术分析
左侧是树形列表, 代表着书籍、章节右侧是显示, 显示章节内容总体框架使用的VC的 SDI 单文档程序框架。原创 2022-09-26 11:47:25 · 625 阅读 · 0 评论 -
一种软件升级程序updata的 构造思路
主程序负责下载更新包,下载到系统download目录下,并解压其中的updata.exe 也是解压在系统download目录下,主程序,下载更新包时,将更新包的版本信息,以及主程序路径,存放在系统%appdata%中。之所以下载到系统download下,主要是考虑,若是安装在无写权限路径时,最起码系统download是可写的。1)、主程序负责下载更新包、并记录路径,及解压updata.exe程序。2)、更新程序updata.exe负责将zip包解压到 主程序目录下。下载到系统downloads目录下。...原创 2022-08-13 16:27:54 · 874 阅读 · 0 评论 -
内存 及硬盘检测
目录一、硬盘空间1、硬盘管理类1、C盘剩余空间2、程序所在盘剩余空间3、获得C盘和程序所在盘剩余空间信息4、文件保存路径,空间小于100M提示二、内存使用情况三、CPU信息一、硬盘空间1、硬盘管理类class CHardDiskManager{public: CHardDiskManager(); virtual ~CHardDiskManager(); bool CheckFreeSpace(LPCTSTR lpDirectoryName原创 2022-05-17 16:38:58 · 363 阅读 · 0 评论 -
窗口句柄拥有者ownner 和 父亲 parent 区别
1、获得ownner HWND hOldOwner = GetWindowOwner(m_hWnd);2、改变ownner ::SetWindowLong(m_hWnd, GWL_HWNDPARENT, (LONG)hwnd); HWND hOldOwner = GetWindowOwner(m_hWnd); if (hOldOwner != hwnd) { ::EnableWindow(hOldOwner, TRUE); ::SetWindowLong(..原创 2022-03-11 14:44:27 · 1369 阅读 · 0 评论 -
CFileFind 的坑
CFileFind::FindNextFileCall this member function to continue a file search from a previous call toFindFile.Return ValueNonzero if there are more files; zero if the file found is the last one in the directory or if an error occurred. To get e...原创 2022-03-03 18:31:03 · 384 阅读 · 0 评论 -
设置组合框字体的大小
示例1 设置组合框字体大小: 组合框由两部分组成 一部分为编辑框 一部分为列表框 为组合框捆绑一控件变量 m_comb_box 编辑框和列表框中的字体 通过重载ctrcolor函数,捕捉编辑框和列表框分别实现: 为编辑框设置字体 在对话框初始函数 OnInitDialo原创 2010-09-04 18:12:00 · 5039 阅读 · 0 评论 -
MFC 小知识总结四
1 PlaySound 播放WAV格式的音乐This function plays a sound specified by a file name, resource, or system event.BOOL WINAPI PlaySound( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound );头文件原创 2013-04-05 11:45:43 · 1273 阅读 · 0 评论 -
CStrollView 滚动条
OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ // TODO: 在此添加消息处理程序代码和/或调用默认值 int nMin,nMax,nCurPos,nDis; nDis=0; GetScrollRange(SB_VERT,&nMin,&nMax); nCurPos=GetScrollPos (SB_VERT);原创 2013-07-25 11:32:41 · 1089 阅读 · 0 评论 -
书画小说--创意电子书制作软件
原创 2014-05-12 14:58:02 · 1598 阅读 · 0 评论 -
发布一个文字界面库 解放文字显示 几分钟使你的对话框OR视图文字呈现多彩效果
解放文字显示 几分钟使你的对话框OR视图文字呈现多彩效果解放文字显示处理不要再将宝贵时间浪费在文字显示处理上,几分钟使您的文字显示呈现多彩效果示例 :在对话框CStatic控件上,显示一段文字信息:代码:shuhuaDLL使用说明:对话框程序中添加VIEW视图:对话框上放一个文本控件CStatic IDC_STATIC原创 2014-11-30 23:11:50 · 1182 阅读 · 0 评论 -
定时器非多线程
本文由 代码助手软件 整理发布 内容与本软件无关 更惬意的读、更舒心的写、更轻松的发布首先,要说明的是:定时器使用感觉像是一个线程,但其实并不是多线程。他是通过消息触发实现的,通过SetTimer函数设定定时器后,在规定的时间内向消息队列中加入WM_TIMER来触发事件,并且只有该消息返回后才处理下个消息。定时器是系统消息,如同左键按下消息一样,原创 2014-12-25 16:41:41 · 1750 阅读 · 0 评论 -
内存泄露
本文由 代码助手软件 整理发布 内容与本软件无关 更惬意的读、更舒心的写、更轻松的发布Detected memory leaks!Dumping objects ->有内存泄露。确定内存泄露的地方根据内存泄露的报告,有两种消除的方法:第一种比较简单,就是已经把内存泄露映射到源文件的,可以直接在"输出"窗口中双击包含文件名和行号的行原创 2014-12-25 16:49:58 · 750 阅读 · 0 评论 -
通过c++类创建对话框
本文由 书画小说软件 整理发布 内容与本软件无关 更惬意的读、更舒心的写、更轻松的发布对话框直接添加类,类向导添加时出现了问题。因此便想通过添加C++类的方式间接实现添加对话框类。第一步:添加C++类#pragma onceclass CWordCountDlg{public: CWordCountDlg(void);原创 2014-12-25 15:47:30 · 3715 阅读 · 0 评论 -
课堂提问软件
软件下载地址:2.6版本 本软件旨在: 辅助老师寓教于乐、帮助学生寓学于乐 在乐趣中教学,使得学生学得开心,自己教的也开心。 本软件功能: 本软件为绿色免安装版本,U盘随身携带即可。 通过击鼓传花、惊悚音乐两种方式提问学生,提升学生的注意力。 然后根据回答问题的情况,跳出不同的拟人化的魔法表情,并给予不同的分数,此分数,可以作为平时成绩进行考察原创 2011-05-27 13:13:00 · 3953 阅读 · 0 评论 -
CComboBox 使用总结
1 定义 CComboBox m_FontList;2 添加一个元素(默认添加在末尾)CString temp;temp=_T("elem");m_FontList.AddString(str)CString str;for (int i=0;i < 20;i++){ str.Format(_T("item string %d"), i); pm原创 2012-01-05 10:48:49 · 1329 阅读 · 0 评论 -
建立拆分窗口
在MFC导航中 选择了拆分窗口,但是运行时,还是单一窗口,这需要我们手动的重载函数OnCreateClient(LPCRETESTRUCT,CCreateContext * pContext)来实现拆分,当然前提已经建立了基于CView的视图 本例中为(CPathView),实例如下:首先在MainFrm.h中定义变量: CSplitterWnd m_wndSplitter;然原创 2011-09-19 09:18:43 · 1612 阅读 · 0 评论 -
小知识点总结三
1 加载资源位图1 获取程序实例HINSTANCE m_hInst; m_hInst=AfxGetInstanceHandle(); //获取程序实例原创 2012-07-31 08:56:23 · 1451 阅读 · 0 评论 -
ASCII 转换为UNICODE
方法一: 使用MultiByteToWideChar CFile file(strPath,CFile::modeRead|CFile::typeBinary); int num=file.GetLength(); // 得到的是文件字节(BYTE)的数目,而不是字数char *read;read=new char[num];file.R原创 2010-06-30 22:18:00 · 8512 阅读 · 0 评论 -
获取CRichEditCtrl控件中的格式信息,将格式保存在容器中
方法一: 一个字符一个字符的进行判断缺点:费时// 统计删除线位置 std::vector delPositionVector; CHARFORMAT2 cf; memset(&cf,0,sizeof(CHARFORMAT2)); int nStart=0; int nEnd=-1; BOOL bContinue=FALSE; //删除线或红字体是否处于连续中原创 2011-12-06 16:48:16 · 2038 阅读 · 0 评论 -
CString保存所有节点信息及读取CString中的节点信息
1 将信息保存在CString 变量中,以便以后保存到文档中CString 保存的信息格式如下:2_0_1_3_4其中2 表示有2个值 一个值为 另一个为 程序如下: struct Node{ int nStart; int nEnd; }; std::vector numInfoVector; Node node;原创 2011-12-06 15:27:44 · 1796 阅读 · 0 评论 -
遍历目录算法
算法实现的基本功能:遍历某一目录A,将改目录A下的子目录及文件按层次关系插入到树控件中(树控件以A为根节点)算法思想: 1初始化: 目录A的路径,遍历深度Depth, 树控件目录A的句柄H Vector 文件夹容器; Vector 文件容器;2 分类处理: 将目录A下的文件夹原创 2011-09-19 10:38:19 · 2923 阅读 · 0 评论 -
VS2005 使用SKIN皮肤库
预处理:破解版本SKIN 只支持ANSI 而现在的工程一般为UNICODE修改:将:SKINPPWTL_API BOOL skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);改成:SKINPPWTL_API BOOL skinppLoadSkin(CHAR* szSkinFile,BOOL原创 2012-10-30 17:25:32 · 2134 阅读 · 1 评论 -
设置窗口背景色
若要改变CView,CFrameWnd或CWnd对象的背景颜色需要处理WM_ERASEBKGND消息WM_ERASEBKGNDReturn ValuesAn application should return nonzero if it erases the background; otherwise, it should return zero.true表示已处理背景刷新原创 2013-03-29 10:24:49 · 5842 阅读 · 1 评论 -
vs2005 初始化GDI+环境
第一步:建立新的GdiNew.h头文件,并将其包含在stdafx.h中#define iterator _iterator#ifdef _DEBUGnamespace Gdiplus{ namespace DllExports {#include };#ifndef _GDIPLUSBASE_H#define _GDIPLUSBASE_H class Gdip原创 2011-07-21 17:32:39 · 2576 阅读 · 0 评论 -
MFC 小知识总结五
1 移动无标题对话框 响应WM_NCHITTEST 消息LRESULT CTimeJishiDlg::OnNcHitTest(CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 LRESULT res=CDialogEx::OnNcHitTest (point); if (res==HTCLIENT) //HT原创 2013-06-27 10:14:57 · 1440 阅读 · 0 评论 -
CFileDialog 打开目录文件 保存目录文件
格式说明:explicit CFileDialog( BOOL bOpenFileDialog, //TRUE 为打开, FALSE 为保存 LPCTSTR lpszDefExt = NULL,//默认文件扩展名 LPCTSTR lpszFile原创 2009-11-04 17:39:00 · 21099 阅读 · 1 评论 -
查找/替换对话框CFindReplaceDialog
class CFindReplaceDialog : public CCommonDialogCFindReplaceDialog objects are modeless, allowing users to interact with other windows while they are on screen. There are two kinds of CFindReplaceDialog objects: Find dialog boxes and Find/Replace dia原创 2010-07-03 17:09:00 · 4231 阅读 · 4 评论 -
注册热键及使用方法
作者:古典小说网头条:讨厌编程 、 古典古韵古典小说作品:快乐课堂软件、任性动图软件、古典小说大全定义 HACCEL m_hAccelerator;// 加速键结构体 int HotKeyID1; //热键事件ID,动态生成,如觉得没必要,可设置一固定整数。 LONG OnHotKey(WPARAM wParam, LPARAM lParam);原创 2017-11-20 11:17:26 · 3647 阅读 · 0 评论 -
MFC 小知识七 右键菜单
1 右键菜单 首先添加菜单资源,设置菜单选项 响应菜单消息OnRButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 rightPoint = point; if (pMenu == NULL) { pMenu = new CMenu(); if (!pMenu->Load原创 2015-12-12 17:10:27 · 700 阅读 · 0 评论 -
启动一线程,定时刷新窗口
作者:古典小说网 (gudianxiaoshuo.com)头条:讨厌编程 、 古典古韵古典小说作品:快乐课堂软件、任性动图软件、古典小说大全创建一事件,避免和主线程冲突 HANDLE g_hTic2 = CreateEvent(NULL, TRUE, TRUE, NULL); //手动复原 有信号启动线程AfxBeginThread(T原创 2017-11-20 11:44:56 · 663 阅读 · 0 评论 -
将图片转成带音乐背景的视频,调研的三种方式
图片转视频为什么想将图片转视频?是这样的,我打造的任性动图软件,在编辑制作GIF动图方面,已经基本完善。现在想加个生成视频的功能。其实以前,我加过这个功能,但是当时生成的视频太大,就取消了。现在动图功能基本完善,就再次研究起这个功能起来。调研了下,主要有三种方式1、直接用MFC的库,不加DLL 使用这个,可以实现将图片生成视频,原创 2017-11-16 14:26:54 · 2792 阅读 · 0 评论 -
解决光标闪烁问题
作者:古典小说网 (gudianxiaoshuo.com)头条:讨厌编程 、 古典古韵古典小说作品:快乐课堂软件、任性动图软件、古典小说大全任性动图V9.0版本发布了,之前面试的时候,向面试官演示过这个软件。面试官看到的往往是不足,果然,没有问我研究的重点,而是其它没有关注的东西,比如光标闪烁,以前没时间解决,现在,核心的都做完了,于是,就着手解决这个原创 2017-11-23 12:01:47 · 8140 阅读 · 0 评论 -
主线程,子线程资源冲突,解决方案
问题描述, 我开发的任性动图软件,曾经遇到过这样的问题: 任性动图有一个功能是涂鸦功能,就是将你的涂鸦过程生成动图,怎么实现的呢? 有一个主显示内存,用以显示界面图像 有一个辅显示内存,用以生成动图时,绘制动图 因为要绘制涂鸦,所以 开辟了一个涂鸦内存,将涂鸦绘制在这个内存上,然后再分别拷贝到主次内存上。 因原创 2017-11-23 19:12:45 · 1070 阅读 · 0 评论 -
开启一个线程,定时刷新窗口
一 开启线程//设置一个信号量,判断是否线程结束HANDLE g_hTic2 = CreateEvent(NULL, TRUE, TRUE, NULL);View::StartTick2(int nSeconds){ m_bStopTic2 = FALSE; AfxBeginThread(Tic2, this);}UINT Tic2(LPVO原创 2017-11-23 19:59:12 · 1136 阅读 · 0 评论 -
通过创建互斥量,只允许一个进程允许
最近,开发完了任性小视频这个简单方便的视频编辑软件。但是现在想让电脑上,只允许一个任性小视频软件,也就是你打开任性视频运行后,再次点击任性小视频EXE后,不会再运行,而只是将已经运行中的任性小视频软件显示出来。BOOL CImportApp::InitInstance(){ // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本原创 2017-12-14 11:45:40 · 996 阅读 · 0 评论 -
界面编程-写一个滑动条
//滑动条class SliderChunk:public ButtonChunk{public: short nSliderLeft; short nSliderRight; short nSliderWidth; short nSliderHeight; short nMin; short nMax; short nPos; float fRate;//表示范围与实际长原创 2017-10-03 10:53:53 · 934 阅读 · 0 评论 -
MFC 小知识六
一: 打开图片文件 CString strDefaluse, strFile; strDefaluse = "整体背景图"; strFile = "JPEG文件(*.jpg)|*.jpg|BMP文件(*.bmp)|*.bmp|PNG文件|*.png|所有格式(*.*)"; CFileDialog fDlg(TRUE, 0, strDefaluse, OFN_HIDEREAD...原创 2015-10-17 19:16:18 · 750 阅读 · 0 评论 -
发布古典界面库 界面设计简简单单 不再饱受界面之虐
作者:www.gudianxiaoshuo.com发布一个界面库 首先,使用可视化工具 任性动图 打造一个界面然后保存成XML第二步 使用古典界面库 导入工程中, 即可完成界面布局目前提供VC演示版本供测试 界面设计简简单单 不再饱受界面之虐希望能给有界面需求的,提供另一种实现方式详情参阅官网:www.gudianxi原创 2015-11-27 19:21:10 · 1032 阅读 · 2 评论 -
父子进程通信
主进程调用子进程后,启动子进程 if (g_hSubHwnd == 0) { CString exePath; exePath.Format(L"%scontrol\\SubExe.exe", g_Path); if (PathFileExists(exePath)) { STARTUPINFO si = { sizeof(si) }; PROCESS_INFO原创 2016-07-02 21:59:13 · 1673 阅读 · 0 评论 -
CFileDialog 线程中使用
CFileDialog使用过程中,总是出现卡住现在,阻塞了程序的运行,直接卡死,这真是要命的,因此,把它放在线程中执行INT FileDlg(LPVOID pTView){ CString strDefaluse, strFile; strDefaluse = "*"; strFile = "图片(*.jpg,*.bmp,*.png,*gif)|*.jpg;*bmp;*png;原创 2016-07-05 17:48:03 · 1190 阅读 · 0 评论