Win32+MFC
windowsbalabalabala...
若歌
仰望星空,脚踏实地
展开
-
CString字符串分割 AfxExtractSubString _tcstok
第一种:AfxExtractSubString函数原型:BOOL AFXAPI AfxExtractSubString ( CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = '\n');转载 2021-06-01 15:05:08 · 1680 阅读 · 0 评论 -
FFmpeg-AVFrame RGB32转BMP
先用ffmpeg将图像进行翻转,得到RGB32的AVFrame,然后将RGB32图像转为BMP。翻转过程:https://blog.csdn.net/qq_36568418/article/details/113563986BMP格式详解:https://blog.csdn.net/nicholas_duan/article/details/90717599转换过程代码:// bpp->BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32// 例 RGB32原创 2021-02-02 16:58:35 · 748 阅读 · 0 评论 -
window 编程 -- Beep函数之祝你生日快乐!
#include <Windows.h>int main(){ MessageBeep(MB_ICONHAND); MessageBeep(MB_ICONEXCLAMATION); MessageBeep(MB_ICONASTERISK); //system("pause"); while (1) {#if 1 Beep(523, 200); Beep(523, 200); Beep(578, 400); Beep(523, 400); Beep(698,.转载 2020-05-14 11:07:36 · 1933 阅读 · 0 评论 -
MFC-CListCtrl重绘,修复局部刷新,按钮位置不更新问题
接上一篇文章,发现当list的条目数达到30以上,即超出当前可视范围时,按钮会出现部分不更新问题,从而导致当窗体大小发生变化时,不可见部分按钮位置不更新,从而出现位置覆盖单元格问题。还有就是当滑动鼠标滚轮进行控件条目滚动时,按钮列,部分按钮会消失,再次点击此行才会重新刷新,显然这个也是刷新问题,解决这个两个问题,首先要重载 Onsize 与 OnNcCalcSize 以及OnMouseWhe...原创 2019-11-07 10:41:09 · 1679 阅读 · 12 评论 -
MFC-CListCtrl重绘,添加按钮到单元格
MFC Listctrl 不支持单元格颜色设置,以及单击其中某一单元格时高亮显示,要想达成自己的目的,就只能对其重绘。关于单元格中按钮的添加,说一下思路,首先要重写CButton类,将其单击事件接口进行重写,这里就是发送自定义消息,到主窗口界面进行响应,然后在要生添加按钮的单元格中生成新的按钮,加入链表中进行存放,同时记录对应的单元格的行列信息,然后在单元格进行重绘时,改变button 位置即...原创 2019-11-05 19:14:08 · 3422 阅读 · 28 评论 -
MFC—ClistBox控件重绘,实现扁平单元风格
MFC ClistBox控件,本身不支持设置单元格颜色,以及每个box之间的间距设置。但是我们可以通过对ClistBox进行重载,重写其DrawItem函数进行重绘。首先添加一个ListBox控件,将其Owner Draw 设置为 variable,然后添加类继承ClistBox,对其DrawItem进行重写。头文件:class CMyListBox :public CListBo...原创 2019-11-05 18:45:26 · 1616 阅读 · 8 评论 -
MFC关于Menu菜单事件不响应问题
首先说一下添加菜单事件:1.资源视图添加Menu 菜单,添加菜单按钮,更改按钮ID ==》ID_LOGOUTDEV;2.绑定消息响应函数 ON_COMMAND(ID_LOGOUTDEV, &CThermometryDlg::OnLogoutDev)3.OnLogoutDev() 函数实现。4.在需要弹出菜单的地方加入如下代码: ...原创 2019-05-24 11:34:10 · 3033 阅读 · 3 评论 -
MFC配置文件读写
获取当前文件路径:函数原型: DWORD GetCurrentDirectory(DWORD nBufferLength,LPWSTR lpBuffer)函数返回值: 返回0表示失败,当函数调用成功将返回写入缓冲区的字符串长度和以前一样我们有两种方法来确定缓冲区长度: 1、使用已定义的常量MAX_PATH(260); 2、使用给函数传入NULL的方法获得缓冲区长度。例:// TODO:加载配置文件...原创 2018-05-28 10:33:29 · 1395 阅读 · 0 评论 -
使用RegisterWindowMessage实现进程间通信
进程间通信的方法有很多,比如使用注册消息,内存映射,WM_COPYDATA等,下面先讲使用注册消息实现的方法。使用注册消息比较简单,核心是消息的接收端和消息的发送端(接收端和发送端在两个不同的进程)必须注册相同的消息,这样发送消息才能识别。、具体实现:1, 在发送消息程序A注册消息:static UINT const WM_TASKBARCREATED = RegisterWindowMessag...转载 2018-05-21 14:24:33 · 1164 阅读 · 0 评论 -
MFC 主界面函数中线程等待避免界面卡死的处理方法
实用场景:例如在MFC主界面某个Button Click事件中起一个线程去做处理一些事情,在起的线程运行完毕后,接着跑Click起线程后的代码,已达到按顺序执行,保证时许正确的目的。问题:通常处理一个线程等待用 WaitForSingleObject,这个放在主界面线程成中会造成主界面“卡死”,其原因是它将主界面的消息循环给阻塞了,即等不到线程结束的时候界面上的消息循环无法正常工作,从而造成界面“...转载 2018-05-21 10:38:09 · 957 阅读 · 0 评论 -
MFC获取当前控件句柄,并创建BMP位图文件保存
void CTest_PicShotDlg::ScreenShot(CWnd*m_hwnd){ CRect rc; m_hwnd->GetClientRect(&rc); CClientDC dc(m_hwnd); //m_hwnd 创建客户区绘制内存 int iBitPerPixel = dc.GetDeviceCaps(BITSPIXEL);/...原创 2018-04-21 10:19:59 · 988 阅读 · 0 评论