VC/MFC学习笔记

VC/MFC中使用WPF 原创文章,转载请注明出处:blog.youkuaiyun.com/sjdev 前些日子我写了一篇关于C++/CLI的东西——《有多少人在使用C++/CLI》。后来发现完全没搞头。估计是因为我本人对C++/CLI了解的还不深入。一个对某些东西还完全不了解的人却想要向别人解释这个东西,呵呵,多半情况下是完全没搞头的,不是吗?  介绍WPF的文章很多了,我也只是简单了解WPF,所以不准备对WPF做太 阅读详情

 windows中的很多数据类型,如HWND,WParam等其实都是我们所熟悉的unsigned int等一些类型,而定义成新的形式是为了方便记忆,不要因为这个而被难住!

消息队列:把消息放在队列中,应用程序每次都只取走消息队列中的第一条消息。 HINSTANCE:窗口的实例,一个程序可以有多个实例。 调用每一个消息用函数GetMessage().

创建一个完整的窗口需要经过下面四个操作步骤: 设计一个窗口类; 注册窗口类; 创建窗口; 显示及更新窗口。

wndcls.style=CS_HREDRAW | CS_VREDRAW;CS_HREDRAW与CS_VREDRAW对应的二进制数中只有一位为1,其他都为0,因此,想要wndcls.style同时具有CS_HREDRAW 与CS_VREDRAW的特征,就可利用二进制的或运算来进行。

DC是device context,叫做设备描述表:与设备驱动程序有关,比如显卡,用DC去与设备驱动程序打交道.

BeginPaint与EndPaint是一对;

GetDC和ReleaseDC是一对.

 

MSDN:windows GDI/user interface platform SDK去查找

UNIT message 都是以WM_ 开头的

在MFC中看不到WinMain函数是因为它被隐藏在应用程序框架内部了。
一般的全局对象theApp是CWinApp的对象,它代表了一个应用程序。
应用程序的启动:在C++中,全局对象在主程序被运行之前就已经被构造好了。
CWinApp::InitInstance成员函数会进一步调用相应的函数来完成主窗口的构造和显示工作,我们必须在派生出的应用程序类中重载它,因为CWinApp基类根本无法知道具体需要什么样的窗口。
CWinApp::Run函数被隐藏在基类中,WinMain在调用InitInstance之后将紧接着调用它。

 

视图实际上是一个从MFC库中的CView类所派生出的类的对象。
项目文件(.DSP)不但指定了所有文件之间的依赖关系,而且还定义了便宜和连接选项。

在MFC库中,设备环境是由C++的CDC类对象来表示的,该对象被作为参数(以指针的形式)传递给其他函数,比如OnDraw函数,就可以调用CDC的许多成员函数来完成各种各样的绘制工作。

消息映射:
如果程序需要对WM_LBUTTONDOWN消息有所反应的话,在视图类中就必须包含和下面给出的函数想类似的成员函数:
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
 // event processing code here
}
在类头文件中也必须包含相应的函数原型说明:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
记号afx_msg并没有什么其他的用途,它只是用来表明该原型说明是针对消息映射函数而言的。
下一步,在代码文件中还需要有一个消息映射宏,该消息映射宏用于将OnLButtonDown函数和应用程序框架联系在一起:
BEGIN_MESSAGE_MAP(CEx04aView, CView)
 //{{AFX_MSG_MAP(CEx04aView)
 ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
最后,在类库头文件中还需要包含如下语句:
DECLARE_MESSAGE_MAP()

 

如何使用ClassWizard:P49

 

浏览应用程序:自己设置:Project-Settings-C/C++选中Generate Browse Info,在Browse Info上选中Build Browse Info File

在MM_TEXT映射模式下,坐标被影射到了象素,x值向右方递增,y值向下递增,但可以通过调用CDC的SetViewprotOrg和SetWindowOrg函数来改变坐标原点的位置。


类CDC是设备环境类的基类,它的两个派生类:CClientDC和CWindowDC,前者的区域是不包括窗口边框和标题栏等,而后者就包括。
构造设备环境类很重要的一点就是要在合适的时候将它删掉,方法主要有两种:
一种是在堆栈中构造对象,也就是在局部函数中构造,这个函数调用完就自动释放了;
另外一种是通过GetDC RealeaseDC成对的创建和释放DC。

P92教如何做对话框
对齐控件方法在P97

 

在对话框编辑栏中,如果一个按钮对这些数据进行操作,在这个操作对应的函数中,要包含如下代码:

 

关于DLL的使用

MFCDLL分为扩展的和正规的,扩展的可以导出类,正规的不可以,理解上,如果我们想将该DLL用于C++,就用扩展的,否则就用正规的,一般我们都是用MFC扩展的DLL

 

VC2012/VS2012 MFC串口通讯上位机程序教程笔记 使用MFC来编写串口程序,需要有一定的c++语言功底,要清楚MFC代码的组织方式。 鉴于绝大多数的教程还停留在vc6.0这个骨灰级的环境,特在此说明一下VC2012下的代码组织方式,和大家一起交流下~ 本文略去建立窗体的步骤,但是给出了窗体的样式,不会建立窗体的童鞋可以百度一下就知道了,很简单的,所以就不多说啦 ~  0、准备工作 使用的通讯控件是:Microsoft Communicat 阅读详情

相关推荐

(转)理性看待VC/MFC的没落

1. VC实际上没有想象中那么流行,有被夸大的成分。国外我不了解,只谈国内。 <br />  曾经连续若干年,无论是学校图书馆,还是新华书店,还是XX培训班,VC绝对是主力。 <br />  很多大学在开设C/C++课程时,要么还停留在TurboC时代,要么就是一律VC++,鲜有 <br />  其它开发环境。图书馆和书店,铺天盖地都是VC++,都是24小时精通,都是速成,都是 <br />  深入浅出,都是内幕云云。几乎看不到其它开发工具的影子。这给我们一种错误的讯息, <br />  VC很强大,整个社

BKHM的专栏 8421

VC|MFC学习笔记(一)

yuprxk的专栏 584

在VC/MFC中响应键盘按键

首先,简介一下键盘消息:(1)系统消息:(系统键Alt,F10等),由系统内部处理WM_SYSKEYDOWNWM_SYSKEYUPWM_SYSCHAR(2)非系统消息:WM_KEYDOWNWM_KEYUPWM_CHAR二、添加消息(一般WM_KEYDOWN),在消息响应函数OnKeyDown(UINT nChar, UINT nRepCn

小居 9217

VC++ MFC编程学习笔记(1)

熟悉10种常用控件 ①  静态文本框:显示文字说明 ②  编辑框:CEdit m_editXxx (.h头文件声明)、DoDataExchange(.cpp中实现) ③  按钮(Button、Radio Button、Check Box):CButton m_checkXxx(.h头文件中声明) Ctrl+D控件顺序Tab ④  列表控件:在窗口初始化函数动态添加  CListBox m

u013800219的专栏 862

VC/MFC 将 数据/资源 放入resource中 (从resource加载 数据/资源)

    很多时候,我们程序(.exe,.dll)需要配合外部资源进行操作,譬如笔者有在写得 固件更新程序(FW update tool),需要将固件程序通过tool烧录到device中去。这其中通常我们会写一个genera的tool,可以support不同的固件程序(FW),在update时只需要指定某一个固件程序即可。不过有些时候,我们希望客户不要看到我们的固件程序,希望将某个或者某些固件程序包进程序中(.exe,.dll)。这样做还可以使得我们的应用程序看起来很简洁,单个档案即可。    这就需要我们将

jtujtujtu的专栏 5580

VC/MFC列表CListCtrl类的LVCOLUMN和LVITEM详解

<br />列表视图控件(List Control)<br />列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来。与树视图类似,列表控件可以由多个子项目组成,并且支持大图标、小图标、列表和报表4种方式显示信息,如图1所示。<br />图1 列表视图的4种显示方式<br />列表视图包含一个项目列表,而其中每个项目由图标、项目名称和多个子项组成,每一个子项所包含的项目的数目必须相同,属性相同的每个子项显示在同一个列中。列表

hahalxp的专栏 1万+

VC学习笔记

VC学习笔记June 15, 2006 VC学习笔记1:按钮的使能与禁止用ClassWizard的Member Variables为按钮定义变量,如:m_Button1;则m_Button1.EnableWindow(true); 使按钮处于允许状态m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示VC学习笔记2:控件的隐藏与显示用CWn

fanluyan的专栏 994

VC6 MFC文件详解与配置

本文还有配套的精品资源,点击获取 简介:Microsoft Foundation Classes (MFC) 是一个面向对象的编程框架,作为Visual C++的一部分,特别是VC6版本,它封装了Windows API,简化了Windows桌面应用程序的开发。文章深入解析了MFC的组件及其实现,并提供了如何在VC6中补充和配置MFC文件的详细步骤,以确保开发环境的完整性和开...

weixin_34456923的博客 824

我的大学--VC/MFC学习笔记

大学的时候学习VC的一些积累,希望对大家有用 目录: 孙鑫MFC笔记教程 VC数据类型 VC消息 VC控件 VC应用 VC界面库 VC相关知识 孙鑫MFC笔记教程 源文档 &lt;http://blog.youkuaiyun.com/liufei_learning/article/details/6858471&gt; 学好VC++的十大良好习惯 源文档 &lt;http://...

javababy1 229

OpenGL在VC/MFC环境下的源代码实践与教程

OpenGL(Open Graphics Library)是一个跨语言、跨平台的编程接口,专为图形处理而设计。自1992年由Silicon Graphics公司推出以来,OpenGL已成为3D图形编程领域的行业标准。OpenGL的发展历程反映出了图形硬件和软件技术的进步。从最早的固定管线渲染,到现代可编程图形管线,OpenGL始终保持着对前沿图形技术的支持。OpenGL的核心库提供了渲染图形和操作图形对象的基础功能。

weixin_34945060的博客 969

VC/MFC实现高效文件下载与进度监控

CInternetSession类是Microsoft Foundation Classes (MFC) 提供的一个用于管理与Internet服务供应商(ISP)的连接的类。它负责初始化WinInet库,建立与ISP的连接,并在进行任何类型的Internet会话(如HTTP、FTP等)之前提供一个起点。通过创建CInternetSession对象,程序可以实现通过URL来访问Internet资源,而无需处理底层协议的复杂性。

weixin_28872035的博客 1184

VC/MFC Q&A 200407

优快云 讨论总结系列:Jiangsheng的优快云 Digest (Dec 2005)(http://blog.youkuaiyun.com/jiangsheng/archive/2005/12/24/561501.aspx) Jiangsheng的优快云 Digest (Oct 2005)(http://blog.youkuaiyun.com/jiangsheng/archive/2005/12/27/56327

蒋晟的专栏 2万+

VC6 MFC类库使用指南与参考

本文还有配套的精品资源,点击获取 简介:MFC是一套C++类库,用于在Windows平台高效开发应用程序,VC6是开发这些应用的IDE工具。本手册为VC6用户提供深入介绍MFC类库,包括框架、视图、文档、对话框等关键组件,以及DLL支持、数据库访问、网络编程和ActiveX控件等内容。通过学习本手册,开发者将提高Windows编程能力,无论初学者或资深开发者都能从中获得收益...

weixin_42323064的博客 1139

在VC/MFC中为程序定义全局快捷键

在VC/MFC编程中,可以为程序定义自己的全局快捷键,如不管在任何地方按下Ctrl+Alt+Z即可显示QQ窗口。   1、注册快捷键 在初始化函数,如OnInitDialog() 注册快捷键,代码如下: BOOL CDlgCloseProSetup::OnInitDial

5495

SVPWM原理与MCU/FPGA实现:从数学推导到工程实战

空间矢量调制(SVPWM)是实现高性能电机驱动控制的核心算法之一,其通过六个基本电压矢量与零矢量的伏秒平衡,在一个PWM周期内合成任意方向的旋转电压圆,相比传统SPWM可提升约15%的直流电压利用率。该技术不仅涉及扇区判断、作用时间计算、过调制限幅等数学原理,还在MCU与FPGA两种硬件平台上有不同的工程实现路径,包括中心对齐PWM配置、死区插入、定点数流水线设计等。在电动工具、无人机、机器人及车载执行器等电池供电场景中,SVPWM直接决定续航与扭矩表现。本文从数学原理出发,详细拆解MCU和FPGA实现细节

weixin_34265814的博客 301

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

程序关联文件 获取双击文件路径 MFC/VC

头脑发热突然想弄一个双击文件打开程序,才发现注册表编程有必要学习一下。故分为 (一)解决问题(二)补充知识(三)总结。这次完成(一),剩下的接着补充吧! (一)解决问题 问题:手动修改注册表来关联特定文件类型,任意MFC/VC/WIN32 应用程序(特别是非文档程序)获取双击文件名问题 问题描述:我想用自己写的对话框程序打开程序本身存档的文件,当然了,是通过双击程序存档

最后的坚持 3362

银河麒麟高级服务器操作系统V10SP2(X86)PXE无人值守批量部署实战指南

本文详细介绍了银河麒麟高级服务器操作系统V10SP2(X86)PXE无人值守批量部署的实战指南。通过PXE网络引导技术,实现全自动化、高效率的系统部署,特别适用于企业级数据中心和国产化替代项目。文章涵盖基础环境准备、关键服务配置、Kickstart高级定制及部署测试等核心内容,帮助用户快速掌握批量部署技巧。

weixin_42525637的博客 383

C,C++,VC, VC++,MFC有什么区别

概念是对具体的一种抽象,因此,弄懂概念很重要,很多人总是混淆下面这些概念:C,C++,VC,VC++,MFC. 下面,我们来看看这些概念有什么区别: C: C语言, 一门计算机语言,用于人与计算机沟通。 C++:C++语言, 一门计算机语言,用于人与计算机沟通,内容比C扩展了很多。 VC...

EmbeddedCoder 的优快云博客 5153

c语言播放背景音乐

相信很多童鞋都在为大学课设而伤透头脑,而背景音乐的使用无疑会成为其中的一个亮点(总比没有好吧(╯▽╰)),故接下来我将介绍一下如何用C播放音乐。我用的编译器是CodeBlocks16.01接下来新建一个C文件建立完后是这样滴然后添加其中mciSendString()函数是由&lt;mmsystem.h&gt;库提供的供播放音乐(MP3)的函数第一个参数是歌曲所在的绝对路径 打开音乐所在位置 复制这...

qq_41443987的博客 3万+

2025华为杯第二十二届中国研究生数学建模竞赛E题:高速列车轴承智能故障诊断问题 - 完整解题分析+完整MATLAB源码!

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1994
上一篇: DLL学习笔记
下一篇: 用MFC写对话框形式的DLL并用程序进行调用方法
degree_37
博客等级 码龄19年 38粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值