
MFC
文章平均质量分 50
宇龍_
有些白嫖党连个赞都不点甚至直接抄走了说原创,新发布的都写到专栏里吧,哎。
私聊给群号,可进Q群咨询问题。
展开
-
Windows编程之事件对象(2)
在Windows编程之事件对象(1)的基础之上再实现一个例子:两个进程交替打印0和1,这里用到了另个一APIHANDLE WINAPI OpenEvent( __in DWORD dwDesiredAccess, __in BOOL bInheritHandle, __in LPCTSTR lpName);参数dwDesiredAccess [in]对事件对象的访问标志。如果指定对象的安全描述符不允许调用进程请求访问,则函数失败。bInheritHandle[.原创 2022-04-14 23:36:43 · 393 阅读 · 0 评论 -
Windows编程之事件对象(1)
事件对象是Windows的内核对象,常见用途:1、用于线程同步2、用于保证应用程序单实例运行。一、创建事件对象HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes,// 安全属性 BOOL bManualReset,// 复位方式 BOOL bInitialState,// 初始状态 LPCTSTR lpName // 对象名称);第一个参数 lpEventAttributes 为指向安全属...原创 2022-04-14 09:00:00 · 658 阅读 · 0 评论 -
调用OpenProcess失败解决方案
服务程序,程序的创建者为SYSTEM用户;非SYSTEM用户调用OpenProcess访问该服务程序时,调用失败,GetLastError返回5调用以下函数提权:void enableDebugPriv(){ HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES |原创 2020-08-28 10:39:41 · 3353 阅读 · 1 评论 -
mfc窗口最大化导致任务栏被遮盖
//最大化显示int cxScreen = ::GetSystemMetrics(SM_CXSCREEN);CRect rt;SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0);MoveWindow(0, 0, cxScreen, rt.Height());原创 2020-08-28 10:35:27 · 700 阅读 · 0 评论 -
MFC托盘图标
1,首先我们用AppWizard创建一个基于对话框的应用程序CUserDlg。m_nid为类成员变量NOTIFYICONDATA m_nid;2,实现CUserDlg的成员函数:void ToTray(){ m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); m_nid.hWnd = this->m_hWnd; m_nid.uID = IDR_MAINFRAME; m_nid.uFlags = NIF_ICON|NIF_M.........原创 2020-08-28 10:34:12 · 481 阅读 · 0 评论 -
MFC窗口最大化导致遮住任务栏的问题
添加WM_GETMINMAXINFO消息处理函数,函数体如下:void CTabDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI){ // TODO: Add your message handler lpMMI-> ptMaxSize.y = GetSystemMetrics(SM_CYFULLSCREEN)+GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYDLGFRAME); CDial原创 2020-07-17 16:24:42 · 906 阅读 · 0 评论 -
1、MFC无边框窗口点击任务栏不能最小化的问题。
在OnInitDialog方法中加入下面代码就可以了:LONG dwStyle = ::GetWindowLong(m_hWnd,GWL_STYLE);::SetWindowLong(m_hWnd,GWL_STYLE,dwStyle | WS_MINIMIZEBOX);原创 2020-07-03 14:40:51 · 833 阅读 · 0 评论 -
MFC WebBrowser去掉滚动条、右键菜单、缩放、边框等。
直接在网页中处理即可,不用在MFC中纠结。网页可以达到以上所有效果!原创 2020-06-24 15:44:42 · 625 阅读 · 0 评论 -
线程的消息循环举例
线程的消息循环如下:DWORD WINAPI ThreadProc(LPVOID lpParam){ if (!lpParam) return 0; HWND hWnd = (HWND)(lpParam); bool bRet = false; MSG msg; while ((bRet = GetMessage(&msg, ...原创 2020-03-26 20:52:03 · 534 阅读 · 0 评论 -
VC/MFC 强制结束当前进程
最近接手一个MFC老项目,Bug太多,主线程退出的时候,也不管子线程死活,直接退出,导致子线程又去访问那些被释放的资源,结果程序无法关闭,或者导致进程在后台驻留了。这里提供一种简单粗暴的方法://强行结束自己void TerminateApp(){ HANDLE hself = GetCurrentProcess(); TerminateProcess(hself, 0...原创 2020-03-14 10:27:25 · 2694 阅读 · 0 评论 -
MFC程序生成dmp文件
#include <dbghelp.h>int GenerateMiniDump(PEXCEPTION_POINTERS pExceptionPointers){ // 定义函数指针 typedef BOOL(WINAPI * MiniDumpWriteDumpT)( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMIN...原创 2020-03-12 20:03:33 · 1235 阅读 · 0 评论 -
MFC radio button多选
也就是radio button的分组:每一组radio button的序号必须要连续(在界面按 Ctrl+D即可调整序号),且每一组的第一个radio button的Group属性要置为true。这样每一组按钮都可以选一个。...原创 2019-10-23 20:58:05 · 915 阅读 · 0 评论 -
CEdit自动换行
修改控件属性1、Multiline为true;2、AutoVScroll为true;3、Virticalscroll为true;4、Auto HScroll为false;原创 2019-10-17 20:19:24 · 1130 阅读 · 1 评论 -
SendMessage导致的死锁问题
前言:试想这样一种场景:子线程通过SendMessage同步消息到主线程,假设子线程的结束是通过标志位来控制的。当主线程想要尝试结束子线程的时候一般是这样操作的,bFlag = false;WaitForSingleObject(hThread,INFINITE); //阻塞等待CloseHandle(hThread);将标志位置为false后,在子线程的主循环中肯定会判...原创 2019-09-28 20:33:54 · 11167 阅读 · 0 评论 -
MFC窗口实现最小化到托盘
以下为实现代码#define WM_SHOWTASK (WM_USER +1)//消息映射BEGIN_MESSAGE_MAP(Test, CDialog) ON_MESSAGE(WM_SHOWTASK,&Test::OnShowTask)END_MESSAGE_MAP()void Test::ShowTray(bool bShow){ NOTIFYICONDATA...原创 2019-09-26 19:39:56 · 9849 阅读 · 0 评论 -
动态库静态库动态链接与静态链接详解
这里以Windows程序开发作为参考来讲解:首先DLL大家应该都知道,动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),不知道的网上搜一下,稍微开发过Windows程序的小白都应该比较清楚,具体的概念不是本文的重点。动态链接是指一个项目A链接了一个动态链接库的项目B(项目B编译后生成的是DLL以及lib文件)。项目A...原创 2019-08-15 22:54:25 · 11158 阅读 · 2 评论 -
ActiveX键盘失效
有时候在IE中运行ActiveX控件,但是有些版本回退键会失效,导致文本框之类的内容无法删除的情况,给用户带来的体验感极差。这里通过消息钩子的方法在VC6以及VS其他版本中解决了该问题。如果是在vc6中需要在stdafx.h最开头加入以下代码,这是因为win98不能这样做,但是现在开发的程序基本都不会在Win98上运行了吧。vs2005以及以上就不用加了。////////////////...原创 2019-08-08 22:32:45 · 9547 阅读 · 0 评论 -
DLL中使用FindResource时需要注意的事项
有时候我们需要把一些图片、语言包等各种各样的资源文件打包到DLL中,程序初次运行的时候,我们可以将那些文件释放出来,这样非常方便。当然也可以打包到exe文件中,原理都是一样的,利用FindResource相关函数即可。但是需要注意的是,DLL中使用该系列函数和exe中执行该函数是有区别的: HMODULE ghmodule = GetModuleHandle(L"test.dll"); ...原创 2019-08-08 22:24:18 · 18164 阅读 · 0 评论 -
mfc获取控件在对话框上的位置
注意:控件的GetWindowRect方法是获取控件相对于屏幕的位置,而对于子控件的MoveWindow方法参数坐标则是相对于父窗口的位置。我们不能直接将GetWindowRect获取到的值直接传递给MoveWindow,而需要一种转换。该方法就是ScreenToClient。具体使用方法如下:CRect rect;GetDlgItem(控件ID)->GetWindowR...原创 2019-07-22 22:33:33 · 3230 阅读 · 6 评论 -
MFC鼠标移入移出事件
MFC中鼠标的移入移出事件是需要在mousemove事件中做处理才会出现的。参考代码如下:##################################鼠标的移入消息,可以使用mousemove就可以知道了。//定义一个变量m_bTracking,初始化为false.public:BOOL m_bTracking;//在mousemove中加上下面代码。......原创 2019-07-21 18:01:55 · 2680 阅读 · 0 评论 -
MFC中使用PNG,JPG等格式的图片
在MFC中,一般我们使用图片的时候是用CImage来加载,当我们把图片添加到资源中后,发现通过CImage的LoadFromResource方法来加载bmp格式是没有问题的,但是其他格式就不行了,程序运行会报错。通用解决办法:文件依然需要添加到资源中,但是我们需要通过CImage的Load方法来加载资源。而Load方法的参数是流对象,所以我们需要先获取流对象。具体加载图片的代码参考...原创 2019-07-21 15:57:42 · 2993 阅读 · 0 评论 -
MFC控件入门到精炼-速查手册值得收藏
MFC入门到精练使用Windows标准控件我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。在Visual C++中,可以使用的控件分成三类:(1) Windows标准控件Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。所有这些控件对象都是可编程的,我们可以使用VisualC++提供...转载 2019-07-21 00:17:04 · 1094 阅读 · 0 评论