[读书笔记]Windows程序内部运行机制【一】

[VC++深入详解] 1. Windows程序内部运行机制 本系列(VC++深入详解)为《VC++深入详解》(孙鑫 编著)读书笔记,很多例子都是仿照此书,很多概念也是来自此书,在对其做归纳总结的同时,也加入了自己的一些理解。 一、 最简单的Windows程序框架概览 #include #include LRESULT CALLBACK WndProc( _In_ HWND hwnd, _In_ UINT uMsg, _In 阅读详情

API:应用程序编程接口。

SDK:软件开发包,开发包中包含API函数,帮助文档,使用手册,辅助工具等资源。

窗口都是通过窗口句柄(HWND)来标识的。例如图标,光标,画刷。

 

1.MFC生成的C++源文件中都有StdAfx.h,此文件包含了常用的AFX函数的声明,其中有afxwin.h,此文件包含了CRECT,CPoint,CWnd等许多类及其方法的声明。

 

2.在VC++开发环境中向应用程序传递参数:Project->Setting->Debug,在Program arguments编辑框可以输入入命令行参数。

发送消息用SendMessage(不进入消息队列)和PostMessage。

注:想去掉样式可以先对一个样式取反,在与原变量相与。

菜单资源为IDM_,图标资源为IDI_,按钮资源为IDB_,这样一目了然。

菜单并不是一个窗口,如果使用菜单资源ID号,那么需要用MAKEINTRESOURCE宏进行转换。

窗口发生重绘的情况:主要是WM_PAINT消息。调用UpdateWindow,Invalidate(),会发生重绘。

窗口大小的改变是否会发生重绘取决于WNDCLASS结构体中的style成员是否设置了CS_HREDRAW和CS_VREDRAW标识。

如果想让某个图形一直在窗口显示,就应该把绘制图形的操作方WM_PAINT消息中。

BeginPaint()得到窗口DC,但是只能在WM_PAINT消息中使用,在其他地方只能使用GetDC()来获取DC句柄。

要控制程序是否退出,应该在WM_CLOSE消息中响应,不是在WM_DESTORY消息中。

3.在SDK中要加入"windows.h"和stdio.h。因为LoadCursor,MessageBox等函数的声明在这个文件中。

程序实现步骤:WinMain函数的定义,创建一个窗口,进行消息循环,编写窗口过程函数。

4.创建一个完整的窗口的四个步骤SDK,1设计窗口类,2注册窗口类,3创建窗口,4显示窗口

 

5.函数名可以代表函数代码的首地址,即可作为函数指针。

 

6.要查看VC数据类型,可以在MSDN中输入“BOOL”然后选择“DATA TYPE”。

 

7.atof将字符串转化为float,atoi将字符串转化为int型。

 

8.所有从CWnd类派生的类都有m_hWnd句柄。

 

9.变量的生命周期:可以认为出了包含它的大括号,这个变量的生命周期结束。所以全局变量的声明位于所有大括号之外。但是用new声明的变量和用static声明的变量除外。

 

10.SDK示范程序,见下面。

 

11.sprintf格式化字符,其头文件为stdio.h,在MFC中格式化字符用CString.Format

 

12.GetDC()与ReleaseDC()要成对使用,否则会内存泄漏。同样,BeginPaint()与EndPaint()。

 

13.GetStockObject()得到画笔、画刷、字体、调色板的句柄,使用时必须用类型转换。

 

14.什么时候用NULL,什么时候用0.

答,对指针赋值时用NULL,对变量赋值时用0.

 

15.什么是野指针?

答:将指针指向的变量的内存释放后,此指针即变成野指针!如何避免野指针?

答:将此指针指向NULL即可。p=NULL;

 

16.SDK代码流程:

#include "windows.h"//包含头文件LoadCursor,TextOut等函数

#include "stdio.h"//包含sprintf,printf等函数

LRESULT CALLBACK MyProc(...);//声明回调函数

int WINAPI WinMain()

{

WNDCLASS wndcls;//设计窗口类

wndcls.hcursor=LoadCursor();//初始化

....

RegisterClass(&wndcls);//注册窗口类

hwnd=CreateWindow(...);//创建窗口

ShowWindow(..);//显示窗口

UpdateWindow(..);

MSG msg;//定义消息结构体

while(GetMessage(...))//消息循环

{

...

}

return 0;

}

LRESULT CALLBACK MyProc(...)//实现回调函数

{

switch(uMsg)

{

case WM_CHAR:

break;

...

}

}

MFC Windows程序设计 读书笔记1 MFC 阅读详情

相关推荐

《windows核心编程》读书笔记——完成端口

完成端口是windows为了处理不同设备之间并发运行时运行速度差异而设计的一种异步数据处理的机制。完成端口是《windows核心编程》中的一个重点内容,最近我花了三天时间读完核心编程里面关于完成端口的章节,并了解微软相关的技术资料文档,感觉完成端口的设计和实现可以在一定程度上加快windows的服务速度,用不用完成端口对程序逻辑没什么影响,但对于需要速度的服务来说,这就至关重要了。由于源码不公开的

行者无疆的专栏 2100

windows程序设计 读书笔记一

    近日闲来无事,有一小小创意,待打开VC6.0,竟灵感全无,无从下手,手生如斯耳,两年来俗物缠身,毫无长进,痛何如哉,遂拾起一书> Charles Petzold 著,欲详加阅读阅读,但求恢复功力,以求精进。     读此书前,先将作者生平介绍如下(学生多年养成的习惯):Charles Petzold   【个人简介】   Charles Petzold 是Windo

snow_river的专栏 599

STM32F407串口DMA收发实战:标准库配置与环形缓冲区实现

DMA(直接存储器访问)是嵌入式系统中提升数据传输效率的核心技术,它允许外设与内存直接交换数据而无需CPU干预。其工作原理是通过专用硬件控制器接管数据搬运任务,CPU仅需初始化传输参数即可处理其他事务,从而显著降低系统负载。这项技术的核心价值在于释放CPU算力,实现高吞吐、低延迟的实时通信,尤其适用于数据采集、工业控制和通信网关等场景。在STM32F407等ARM Cortex-M4芯片中,串口结合DMA可实现稳定的高速数据流处理。本文以STM32F407标准库为基础,深入解析USART1的DMA发送与接收

weixin_29169899的博客 317

《windows 程序设计》读书笔记 一

通常情况下在编译阶段,编译器从 C 源代码文件产生一个.OBJ (目标)文件,在链接阶段,链接器又把 .OBJ 文件和 .LIB(库程序) 文件放到一起产生undefinedEXE (可执行)文件,你可以通过选择 Project 菜单下的 Settings,并单击 Link 标签来查看这些库程序的文件列表。为了保证兼容性,英特尔 386 之后的 32 位微处理器也都支持这一模式,在这种模式下,微处理器的寄存器 (Register) 宽度为 16 位,因此 C 的 int 数据类型也是 16 位宽。.....

沐一 · 林 的博客 1153

【论文阅读1】机理引导的残差学习用于电池全生命周期状态监测 | Nature Communications

本文提出了一种机理引导的残差学习框架,用于提升电池全生命周期内荷电状态(SOC)和健康状态(SOH)的监测精度。该方法融合等效电路模型的先验知识与机器学习,设计了修正模型和补偿模型两种通用框架。实验验证表明,该方法在三种不同类型电池数据集上均表现出色,SOC和SOH估计误差较传统方法降低50%以上,且在未见工况下仍保持良好外推能力。模型具有强鲁棒性,在减少训练数据量和降低采样频率时性能稳定,并兼具物理可解释性。该框架无需离线测试和运行中校准,为电池安全监测提供了有效解决方案。

qq_21843433的博客 613

从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析

本文深入解析OBD-II汽车诊断系统的核心技术,包括ECU通信协议、故障码解析及诊断工具开发实战。通过详细的协议分析和代码示例,帮助开发者快速掌握汽车诊断开发技能,实现从零到精通的进阶。特别适合从事汽车电子开发和OBD检测的技术人员参考学习。

weixin_42528780的博客 438

《VC++深入详解》读书笔记 第一章:Windows程序内部运行机制

1.1API与SDK API:Application Programming Interface SDK:Software Development Kit 1.2窗口与句柄 一个Windows应用程序至少要有一个窗口,称为主窗口。 一个应用程序窗口通常都包含标题栏、菜单栏、系统菜单、最大最小化框、可调边框、及滚动条。 窗口分为客户区和非客户区。 在Windows应用程序中

bbsview的专栏 850

Codex 团队如何用自己的产品构建产品——整个 Spec 只有 10 个要点

OpenAI Codex团队采用极简产品开发模式,整个产品规格仅10个要点。团队50-100人长期仅1名PM,设计师代码量已超过工程师。产品负责人Alexander Embiricos透露,团队几乎不写详细文档,仅在需要协调时写简短要点。OpenAI采用独特规划哲学:只做8周内短期或长期方向性规划,拒绝中期路线图。2025年GPT-5.2 Codex发布后,模型能力突破催生了桌面应用开发。团队强调"让离代码最近的人做决策",PM角色转变为"填空者",设计师与工程师界限

347

深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 序言

决定从今天开始认真读一读这本《深入解析Windows操作系统》(Windows Internals) 4th Edition。由于这本书太厚,担心自己不能坚持读完,所以在这里写读书笔记,作为对自己的鞭策。同时,也把重要的知识点和自己的理解记下,以备后查。这本书的中文版由潘爱民老师翻译,页数941。博文视点的书,装帧质量还算不错。正文之前有译序、出版人感言、Windows NT的历史全景、序言、

心造轩 2272

【笔试真题】- 华子-2025.12.17-研发岗

难度:中等难度:中等偏难难度:中等K小姐是一名服务器运维工程师,她负责监控公司服务器的访问日志。服务器采用指数退避策略来优化访问频率,每次重试的时间间隔会按照某种规律增长。经过一段时间的监控,K小姐记录了 nnn 个访问时间点,第 iii 个时间点的值为 a[i]a[i]a[i](可能有重复)。现在,她想分析这些访问时间点是否符合某种特定的模式。具体来说,对于给定的参数对 (x,y)(x, y)(x,y),她想知道:有多少个访问时间点 a[i]a[i]a[i] 满足 a[i]=xK+ya[i] = x^K

春秋招笔试突围 185

假新闻检测论文分享(17)CAFE(Cross-modal Ambiguity Learning for Multimodal Fake NewsDetection)

本文首先从信息论的角度对跨模态歧义性学习问题进行形式化描述,利用不同单模态特征之间的分布散度量化其歧义性;然后,提出了一种模糊度感知的多模态假新闻检测方法CAFE。CAFE通过自适应地聚合单模态特征和跨模态关联,即在跨模态歧义性较弱时依赖单模态特征,在跨模态歧义性较强时参考跨模态关联,从而提高假新闻检测精度。提出了跨模态歧义学习问题,这是多模态假新闻检测的一个关键挑战,并提出了一种基于KL散度的方法,通过估计其特征分布的散度来量化文本和图像之间的歧义。

weixin_41964296的博客 1724

《Windows核心编程》读书笔记一 错误处理

第一章 错误处理 所有范例代码可以从 http://www.wintellect.com/books.aspx下载 (改网址已经不可用) 网盘:https://pan.baidu.com/s/1nv1HxxB  本章内容 定义自己的错误代码 ErrorShow实例程序 常见的Windows函数返回值的数据类型 VOID 这个函数不可能失败。只有极少

sesiria的博客 1094

SDR 和 DDR 的区别

SDR 和 DDR 的差别,最明显提现在传输速率和频率上。DDR SDRAM与SDRAM的基本结构是相似的,最根本的区别在于DDR 支持在一个时钟周期内传输两次数据,,SDR 只能传输一次数据。

串起点滴 1958

MFC Windows程序设计读书笔记

 前言:        这个笔记是去年看这本书的时候记下的,一直仍在电脑里,后来也没看过,今天春节后上班无意间发现了,遂整理出来,方便以后查阅.  第8章: 非模式对话框创建 显示 销毁:1.m_pDlg=new CMyDlg;pDlg->Create(IDD_MYDLG);pDlg->ShowWindow(SW_SHOW);2.销毁时在PostNcDestroy中调用

郁郁 2194

[Dify实战] 用 Dify 打造高效的新员工 7 天成长计划-带绑定资源

本文介绍了如何利用Dify平台为新员工制定智能成长计划,解决融入难、节奏乱、成长慢等问题。方案通过输入岗位信息自动生成7天结构化计划,包含每日任务和评估要点,并支持进度跟踪与报告输出。关键点在于设计清晰的Prompt模板,合理分配学习节奏,形成闭环反馈机制。该方案能显著提升新员工培养效率,实现人才培养的数字化升级。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 569

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

windows程序设计读书笔记(Windows的思维方式)

 windows程序设计读书笔记(Windows的思维方式)早起无事,随便上网看看. 今天谈谈我所理解的Windows的思维方式,或者说设计思路. 昨天终于看到了对话框这个章节,第11章,回顾前段时间所学,深有感触. Windows程序设计这本书的章节设计是非常用心的,一个层次一个层次向前推进,逐步打开windows程序设计的各个不同层次和不同内容,后一章节往往在前一章节的基础上进行引申发

536

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

读书笔记(一)_VC++深入详解

这本书第一章就是讲Windows程序内部运行机制,初看的话比较吃力,不过理解了之后对后面还是有一定的帮助。对窗口的设计, 注册,创建,显示及更新讲的很详细具体。    私觉得句柄这个概念一定要好好理解,在之后会经常用到。    记录一下最基本的得到某窗口的句柄。虽说主窗口和子窗口有不同的方法,不过更喜欢这个简单,通用。 CWnd* pWnd=FindWindow(NULL,_T("标题

Mr_PrinCR的博客 763

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

《VC++深入详解》读书笔记——1.Windows程序内部运行机制

API与SDK API:Windows操作系统提供给应用程序编程的接口(Application Programing Interface); SDK:软件开发包(Software Development Kit)。 消息与消息队列 Windows 是事件驱动方式的程序设计模式,主要是基于消息的,消息由MSG结构体表示。 typedef struct tagMSG{ HWND hwnd;

The Code of King 498

Windows里面比较好用的在线读书笔记软件

Windows里面比较好用的在线读书笔记软件 1.支持做各种笔记。该软件的特点是记笔记非常方便,并且记笔记有各种优化。2.支持多种快捷键定制,非常方便。包括颜色切换快捷方式。这是一项独家功能。 3.将来会增加笔记输出的功能。开发人员正在开发中,很快就会推出。 4.书架支持无限制的细分。方便组织书籍。5.Bullmind在线读书笔记软件,支持微信扫码登陆。bullmind在线读书笔记软件地址:htt...

weixin_34032827的博客 3822

windows程序设计读书笔记一

1、注册窗口类时,类的名称不能重复,当前面已经注册了一个名字的类(lpszClassName),后面的窗口类就不能再用这个名字了。 以下代码用 szAppName[] 及szAppName1[] 放置两个类名字符串,若szAppName1[] 的内容与szAppName[]一样时,在第二次注册时不会成功,由GetLastError()的返回值是1410 可以到 〖1410〗-类别已存在。

pengjc2001的博客 801

读书笔记:windows程序设计

windows.h是一个最重要的包含文件,囊括若干其他头文件。下面是一些最基本的头文件:WINDEF.H(基本数据类型定义),WINNT.H(支持Unicode的类型定义),WINBASE.H(内核函数),WINUSER.H(用户界面函数),WINGDI.H(图形设备接口函数)每个Windows程序包含入口点函数(WinMain或wWinMain):int WINAPI wWinMain(HINS...

肥叔菌的博客 9125

《Windows程序设计》读书笔记之

最近有幸拜读了Charles Petzold的大作《Windows程序设计》,真有种相见恨晚的感觉。这是一本1999年出版、主要讲述在Windows平台下如何使用C语言调用API函数进行软件开发的老书。在当今RAD工具充斥市场的今天,该书依然是新手从事Windows下软件开发入门的不二之选。本人从事Windows平台软件开发已近三年,Windows相关的书籍和文档也阅读过不少,直到接触该书之后,好

1012

《Windows程序设计》读书笔记

今天准备开始看《Windows 程序设计》一书。坚持记录下每次看书的心得体会!相信肯定能从中获得很多收获! 1、API和SDK区别;SDK =  API函数 + 帮助文档 + 微软提供的一些辅助开发工具; 2、使用api函数方法:①包含要调用函数的头文件; ②连接到指定的链接库(lib文件),显式:#pragma comment(lib, "mylib.lib"); ③api函数前面加::

ismallboy的专栏 1010

Windows程序设计读书笔记(合集)

今天整理整理我的Blog,看到Windows程序设计读书笔记很久没有更新了,惭愧惭愧. 零散的blog太过混乱,今天下决心整理整理. 把以前写的blog整理到一个合并好的读书笔记里面来,可能会好点. 下面是目录. Windows程序设计读书笔记(用VB调用API创建窗口) 2 windows程序设计读书笔记(VB调用API之二) 7 windows程序设计读书笔记(过去几年走弯路了) 8 wind...

weixin_33923148的博客 141

《windows图形编程》读书笔记——第2章

基于win2k写的,又是一本古老的书,甚至书上好多例子使用的库已经改头换面了,调试也没法做了。不过,在市面上还真找不到其他深入讲述系统图形内部原理的书,真是鸡肋。书中内容很多,而且相对抽象,学习了差不多一个月,只学了几章,苦于很多东西没法调试——书上讲的和系统已经搭配不上了。现在只是把一些重点梳理一下,打下一点理论基础。       操作系统的图形和多媒体系统是分层的系统,最上面的应用程序通过W

行者无疆的专栏 1606
上一篇: 软件开发人员的最佳实践
下一篇: 【DOS批处理】函数定义和用法
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值