MFC 重新定义窗口函数的代码

安装vs2019时没有安装MFC,如何重新配置MFC 1,点击进入vs2019安装向导 2,选择x86 & x64的应该就可以 3,等待安装,大概10分钟能成功下载安装完成 4,新建mfc项目 在应用程序类型这一项选择基于对话框。其他的别动,点击完成 5,直接点击Ctrl+F5,或者在调试窗口中点击开始执行选项。若未报错直接弹出最后一图对话框则安装成功 6,出现报错了 原因如下图 7,上网搜索是说,要“安装MFC类库”,可是刚刚不... 阅读详情

最近在看游戏传奇2的源代码,发现里面的很多方法值得借鉴,特此分享一下

有时候我们需要使用MFC内置的窗口类来创建一个窗口,但是窗口类是MFC提前注册的,不是自己定义的窗口类,因此不能指定窗口函数来自己处理窗口消息。但是下面的代码就可以在创建好窗口后,重新指定窗口函数:

    m_hChatEdit = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), "", WS_POPUP | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL,
                                 nX, nY, nXsize, nYSize,
                                 hWndParent, NULL, hInstance, NULL);      
    m_WndProcChatEdit = (WNDPROC)SetWindowLong(m_hChatEdit, GWL_WNDPROC, (LONG)ChatEditDlgProc);

上面的代码调用API函数CreateWindowEx创建一个窗口,其中的窗口类“EDIT”是MFC内置的窗口类,MFC所有的编辑框控件都是由这个窗口类来创建的。

在窗口创建成功后,只要调用SetWindowLong函数重新设置窗口属性,其中参数m_hChatEdit为创建好的窗口句柄,GWL_WNDPROC为重新指定窗口函数的标志,ChatEditDlgProc就是窗口函数名,该函数如果执行成功,返回的是原窗口函数的指针。

其中,自定义的窗口函数如下:

INT_PTR CALLBACK ChatEditDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    return 0L;
}

这样就可以在该窗口函数中自己处理所有的窗口消息了。

MFC之MFC的初始化过程 当你创建好一个MFC程序时,你可能要去找程序的入口,然后各种编辑,各种搞。若你是第一次接触MFC,则会发现怎么也找不到WinMain函数或main函数,一个程序不可能没有程序入口的,这就是接下来要讲的MFC初始化过程。 MFC将WinMain函数封装起来了,还做了一系列的初始化过程。 MFC的组成(MFC的初始化过程): 1.必须有一个CwinApp的派生类 2.必须用派生类在全局定义一个 阅读详情

相关推荐

MFC 工具栏 Toolbar 自定义 位图 Bitmap

根据MSDN以及个人实践总结如下: MFC中 Toolbar的两种创建方式1.创建工具栏资源(toolbar resource)2.构造CToolBar对象3.调用CToolBar对象的成员方法Create或CreateEx来创建工具栏4.调用LoadToolBar来载入工具栏资源或者1.构造CToolBar对象2.调用CToolBar对象的成员方法Create或CreateE

newcamer的专栏 8097

MFC之重写WindowProc的方式实现消息处理

#include <afxwin.h> //这是通过重写windowproc函数的形式实现消息的处理 //定义自己的框架类 class CMyFrameWnd:public CFrameWnd { public: virtual LRESULT windowProc(UINT msgID,WPARAM wParam,LPARAM lParam); LRESULT OnCreate(WPARAM wParam,LPARAM lParam); }; LRESULT CMyFrameWnd::

qq_42798939的博客 1192

使用VC6.0对MFC源代码挖掘

     在VC6.0中,我们在浏览别人代码时,遇到一个函数,想查看这个函数的具体,我们最常用的是右键点击弹出的菜单中选中“转到XXX的定义”然后就转到了XXX函数的具体实现(这个功能很方便,不仅能跳转函数,还能跳转类,能看到类的层次结构).....讲到这,聪明的你应该可以想到根据Wizard产生代码我们可以跟踪进MFC的源代码中(嗯嗯,是的,很对)但是当你试了你就会发现这些是不能够直接跳到MFC

iwknow的专栏 3150

谈非模态窗口的销毁过程

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文:When   you   implement   a   modeless   dialog   box,   always   override   the   OnCancel   member   function   and   call   DestroyWindow   from   wi

面朝大海 春暖花开 988

用MFC打造自定义屏幕右下角弹出窗口

MFC(Microsoft Foundation Classes)是一个为简化Windows程序开发而设计的C++类库。在MFC中,弹出窗口是一种常见的用户界面元素,用于显示额外信息或进行交互,如消息框、文件对话框等。MFC通过封装Windows API,简化了弹出窗口的创建、管理等操作,使其与应用程序的其他部分集成更加自然。当标准样式无法满足特定需求时,开发者可以使用自定义样式。自定义样式允许开发者通过修改窗口类的扩展样式和窗口过程函数来实现独特的界面设计和交互逻辑。

weixin_31715353的博客 1224

WinProc 重写

SetWindowLong GetWindowLong CallWindowProc GWL_WNDPROC

重载WndProc

用SetWindowLong 设一个你自己的 WinPorc 函数,那么所有的消息都会进你自己的 WinPorc去处理,就像直接用API一样了. 定义一个 WndProcEx 函数与一个函数指针 LRESULT CALLBACK WndProcEx(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { //像API那样写 }

zqf_office的专栏 1269

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 406

MFC两种重载控件消息响应的方法

方法一:重载主函数的PreTranslateMessage(MSG* pMsg) 函数,通过message确定是哪个控件收到的消息。 if(WM_RBUTTONDOWN==pMsg->message) if(pMsg->hwnd==m_clbPathShow.m_hWnd) { DWORD dwPos=GetMessagePos();

tandyky的专栏 4098

Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体

这是包括我们在内的一些厂商探索的一个新方向,这种方式先由大模型将自然语言转化为对指标语义层的查询请求(MQL,Metrics Query Language),再由指标平台将指标和维度的查询与计算逻辑转化为准确的 SQL 查询语句。用户查询经大模型语义解析后,将其转换为指标、维度及筛选条件的组合表达,并生成面向指标平台的 MQL,Aloudata CAN 指标平台的语义引擎将 MQL 转换为准确和可执行的查询 SQL,语义引擎内置函数体系与 SQL 解析器,确保语义转换的 100% 准确性。

Aloudata的博客 1664

WinForm实战:如何用C#和PdfiumViewer打造一个功能齐全的PDF阅读器(含源码)

本文详细介绍了如何使用C#和PdfiumViewer库从零开始构建一个功能齐全的WinForm PDF阅读器。内容涵盖项目环境搭建、核心组件解析、基于命令模式的工具栏与UI架构设计,并深入讲解了智能缩放、页面导航、打印功能等核心交互的实现,以及内存管理和性能优化等高级话题,为开发者提供了一套完整的实战解决方案。

docker8compose的博客 503

深入浅出MFC:MFC的消息机制

对与这一部分如果有不理解,请先学习设计模式中的观察者模式与命令模式(手动微笑) 对于一个Windows程序,在进行完基本的初始化工作之后,则就将开始进行最最重要也是难以理解的部分:消息循环与消息映射 最简单的消息循环不过如下: while (GetMessage(&msg, ...)) { TranslateMessage(&msg); //转换键盘消息 DispatchMessage

qq_30168505的博客 3058

基于STM32H750的便携式双通道示波器与信号发生器AFE设计

示波器和信号发生器是电子测量与嵌入式系统调试的基础仪器,其核心在于模拟前端(AFE)对宽动态范围、高精度采样与低失真输出的协同实现。原理上需兼顾输入信号调理(衰减/放大/偏置)、ADC/DAC接口匹配、触发同步及电源完整性设计。技术价值体现在以低成本器件达成±15V输入/±10V输出、16位等效采样精度与85kHz带宽的工程平衡。典型应用场景包括电机驱动波形观测、传感器信号验证、电源环路测试及通信电平分析。本方案聚焦STM32H750平台,深度融合硬件拓扑与片上资源特性,为嵌入式教学与原型开发提供可复现、易

weixin_35755188的博客 110

【第25节】MFC编程:MFC入门的第一课

MFC 即 Microsoft Foundation Classes,是微软公司提供的一个类库。它以 C++ 类的形式封装了 Windows API,并且包含了大量的代码来简化 Windows 应用程序的开发过程。借助 MFC,开发人员能够更便捷地创建具有图形用户界面(GUI)的 Windows 应用程序,减少了直接使用 Windows API 进行编程的复杂性和工作量。学习 MFC,C++ 面向对象编程和 Windows SDK 是必备基础。当下,MFC 在客户端界面开发中热度减退。

攻城狮7号的博客 3181

gtsam官方文档: The new IMU Factor学习笔记

gtsam官方文档:The new IMU Factor 本文为gtsam imu预积分文档学习笔记,为gtsam基于切向量实现的imu预积分的理论基础。 导航状态 定义导航状态为 Xbn={Rbn,Pbn,Vbn}X^n_b=\{R^n_b,P^n_b,V^n_b\}Xbn​={Rbn​,Pbn​,Vbn​} 上角标n:导航(navigation)坐标系 下角标b:载体(body)坐标系 下文均省略上下标 矢量场与微分方程 对于导航问题我们用如下微分方程描述 X˙(t)=F(t,X)\dot X(t)

南柯一梦的博客 1609

PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!

你好,这里是网络技术联盟站,我是瑞哥。PNETLab是一个强大的网络仿真工具平台,全称Packet Network Emulator Tool Lab。它不仅允许用户进行深入的网络实验,还支持社区成员之间的实验室共享。PNETLab致力于为学习者、教师以及网络工程师提供一个全面的实验环境,以便于他们能够在实际部署前测试和验证网络配置和协议。和。这两个部分相辅相成,共同构成了一个全面且灵活的网络仿真生态系统。

网络技术联盟站 4479

简易入门MFC

工作需要用到MFC,需要能快速上手,中间碰到不懂的简单的看了下源码,参考了些资料。目标:做一个简单的计算器,代码就不考虑了,主要强调如何上手MFC,和简单了解MFC的框架。1.如何创建一个MFC工程项目创建MFC的过程如下:(visual studio 2012)1&gt;.新建-&gt;项目:选择MFC应用程序,名称这里用test(随意,和后面代码那里一致)。然后点确定。2&gt;.出现MFC生...

忧愁的awe的博客 11万+

190、LLC谐振变换器的样机调试实战(问题定位)

这篇实战笔记总结了LLC谐振变换器样机调试中的五大典型问题及解决方案:1)空载炸机源于谐振电容纹波电流能力不足;2)轻载啸叫因控制环路不稳定,需调整突发模式阈值;3)MOSFET过热由死区时间不当导致,需精确优化实现ZVS;4)输出纹波大由PCB布局耦合引起,需优化共模抑制;5)启动过冲需延长软启动时间。作者强调调试需结合示波器、热成像仪等工具,理论计算与实测并重,并详细记录每次参数调整。文章指出LLC调试是不断试错的过程,关键是通过现象分析本质原因。

Jack010169的博客 49

MFC自定义消息发送和界面挂载

实现窗口拆分后MFC自定义消息发送和界面挂载 有部分类的定义在MFC静态拆分窗口中:https://blog.youkuaiyun.com/u014151564/article/details/109667552 1、在 CMainFrame.h 中,添加自定义消息宏 //WM_USER 是用户自定义消息的一个起始值 //WM_USER+100是为了区分系统消息和用户消息,避免冲突 #define NM_A (WM_USER + 100) #define NM_B (WM_USER + 101) #define N

学Java的LC的博客 1478

【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤

Windows 11 安装 WSL2 和 Ubuntu 22.04 指南 本文详细介绍在 Windows 11 上安装 WSL2 和 Ubuntu 22.04 的完整步骤,包括: WSL2 与 VirtualBox 的性能对比优势 系统版本检查与升级方法 两种安装方式(一键安装和手动安装) Ubuntu 22.04 的安装与配置 存储位置管理及迁移技巧 常用 WSL2 命令速查表 文章还提供了性能优化建议和常见问题解决方案,适合开发者和 Linux 爱好者快速搭建高效的开发环境。

No8g攻城狮的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

老MFC项目升级,重新定义Windows版本

错误根源是WINVER宏值低于 MFC 要求的 0x0501;解决方式是通过项目属性或预编译头文件,将WINVER和均定义为 0x0501;宏定义必须放在所有头文件包含之前,否则无法生效。

211

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++学习| MFC简单入门

MFC、WIN32和QT的区别,MFC文件结构的解读,MFC实现简单的加法器。

qq_40306845的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深入浅出MFC

最近一两年都在搞Java,C++逐渐生疏了。现在换工作又重新搞起了C++。其实学了多种语言后,就会发现语言真的没那么重要。基础的东西,如算法、数据结构、文件操作、进程、线程、同步机制,都是超出语言而存在的。即便具体到实现代码,也是相差无几。 最近忧心忡忡,工作多年,接触太多技术,可都没有深入和系统。一定要横刀立马,誓要作出成绩。 MFC早已是弃子,但《深入浅出MFC》仍旧是如此经典,以至于超出MF...

月寒日暖的博客 1万+

[MFC]单文档 DockPane()未定义问题

[MFC]单文档 DockPane()未定义问题 近期要在一个老项目中加上几个停靠窗口,MainFram的OnCreate()中调用DockPane()时始终显示未定义,主要原因就是CMainFrame类的继承问题,由于DockPane()函数是包含在CFrameWndEx类中的,而老项目的CMainFrame继承于CFrameWnd类 class CMainFrame : public CFrameWnd{ ...... } 大多数解决方案都是重新创建一个MFC应用程序 而对于老项目而言,移植的工

qq_45192744的博客 1015

MFC学习笔记(一)MFC基本知识介绍、建立MFC应用程序

MFC学习笔记(一)MFC基本知识介绍建立MFC应用程序 MFC基本知识介绍 1.API 为方便开发Windows应用程序,操作系统提供了各种各样的函数,作为给应用程序编程的接口,(Application Programming Interface),简称为API函数,也就是指系统提供的函数。 例如,Windows中播放声音的API函数,函数原型如下: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound) pszSound就是你要播放的文

weixin_44074560的博客 1万+

非MFC程序如何显示内存泄漏的代码行

在调试MFC程序时,程序退出时,如果有内存泄漏,Debug窗口会输出类似下面的信息 Detected memory leaks! Dumping objects -> E:\StaticLib\MFCTest\MFC...

176
上一篇: 【转】CClientDC、CPaintDC、CWindowDC的区别及基本的绘图方法
下一篇: windows下ini配置文件的读写
hacker_lpy
博客等级 码龄12年 130粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值