SDK
文章平均质量分 78
btwsmile
不积跬步无以至千里
展开
-
HRESULT的秘密
长时间进行Windows编程的人一定对HRESULT特别熟悉,因为HRESULT作为一种函数的返回值类型曝光率实在太高了,可是你是否知道HRESULT到底是什么?为什么不直接使用简洁又亲切的BOOL作为函数的返回值类型呢? 单从名字上看,HRESULT似乎是指向函数结果的句柄,但是这种直观地猜想却是错误的。其实HRESULT的意义非常简单,它不是Handle to Result而是Her原创 2012-02-19 19:34:50 · 5228 阅读 · 4 评论 -
这里Invalidate()能够代替RedrawWindow()的工作
继续WTL的学习,在第二部分的WTL Clock程序中,当定时器抛出WM_TIMER消息时,处理器OnTimer做了这样的工作:LRESULT OnTimer(UINT_PTR nIDEvent){ if(1!=nIDEvent) SetMsgHandled(false); else { GetLocalTime(&m_stLastTime);//保存当前时间 Redraw原创 2011-05-25 23:02:00 · 3028 阅读 · 0 评论 -
标准滚动栏msdn示例简化版
滚动栏是Windows中重要的UI元素,它有两种类型:标准滚动栏、滚动栏控制。二者比较起来,标准滚动栏简单但功能有限制。它只在窗口客户区的边界上,作为窗口的一个部分不含有独立的窗口句柄,消息由所在窗口的WndProc处理。滚动栏控制功能更强大一点,相对复杂一些。它可以在窗口的任何地方,是独立的子窗口有自己的窗口句柄,消息由自己处理。本文的目的是展示滚动栏的消息处理方法,不涉及复杂的应用,所以例原创 2012-12-04 16:58:04 · 1100 阅读 · 0 评论 -
探秘窗口过程函数(WndProc)的Thunk技术
最近看了一篇讲ATL Thunk技术的好文章(下载),收获较多,在此做一个总结。Thunk技术的由来我们知道,经典的Windows程序设计采用纯Windows API来实现,创建一个窗口必须严格遵循“定义窗口类,注册窗口类,创建窗口,显示窗口,更新窗口,启动消息循环”的步骤。虽然经典的Windows程序设计在一定程度上已经体现出了OOP的思想 (对象 = 数据 + 代码),但是与当代的OO原创 2012-11-17 15:32:18 · 3604 阅读 · 2 评论 -
《PicSi的实现细节》 第2节 窗口类CAboutDlg的定义
为了把重点集中在窗口类的定义方法上,本节以较为简单的AboutDlg为例,阐述如何定义窗口类。在第一节中,我们已经在Resource View(资源视图)中添加了所需的窗口。在这里简单总结一下:向主窗口中添加Tab控制,用作菜单选项卡;添加IDD_DLG_CREATOR子窗口,作为Main子窗口;向IDD_ABOUTBOX子窗口添加了一个Edit控制,用来显示PicSi的使用说明,作为Abou原创 2012-08-10 10:05:09 · 1606 阅读 · 0 评论 -
《PicSi的实现细节》 第4节 主窗口CMainDlg的定义及杂项
主窗口CMainDlg的定义很好理解,虽然简单但却至关重要,毕竟Creator子窗口、About子窗口都被主窗口管理,它就是PicSi的“领导”,对全局进行控制。 首先需定义3个控制成员变量m_tab、m_creator及m_about,分别对应主窗口中tab控制、Creator子窗口、About子窗口。 接着在OnInitDialog方法中初始化Tab控制,创建C原创 2012-08-17 17:42:17 · 2485 阅读 · 0 评论 -
编程让任务管理器中CPU占有率呈现正弦曲线
《编程之美》的第一个问题:如何编程让任务管理器中CPU占有率呈现正弦曲线,博主尝试了一下,得到如图的结果。博主写出的代码如下所示:#include #include #include #include const double PI = 3.1415926;const int FREQUENCY = 360;const int AMPLITUDE = 100;int原创 2012-11-05 20:46:29 · 2049 阅读 · 0 评论 -
VS源文件提取工具vsjuicer 实现细节
程序的主体框架如下列代码所示://by btwsmile#include "stdafx.h"#include "juice.h"// entryint _tmain(int argc, _TCHAR* argv[]){ CJuice juicer(argc, argv); juicer.Process(); return 0;}不难看出,真正进行处理的是CJuice原创 2012-09-01 15:37:58 · 1185 阅读 · 0 评论 -
《PicSi的实现细节》 第3节 窗口类CPicSiCreatorDlg的定义
这一节是本系列文章中最重要的部分,因为CPicsiCreatorDlg类是Main子窗口的实现类,它是PicSi的功能主体。有了第2节作为基础,相信大多数朋友对CPicSiCreatorDlg的主框架是不陌生的。因此,本节将重点阐述关键思路,而代码的实现细节不在文中说明了。我会在文章的末尾将所涉及的代码贴出,若理解过程中碰到什么问题或者疑问,可随时提出。 CPicsiCreatorD原创 2012-08-17 16:47:26 · 1466 阅读 · 0 评论 -
《PicSi的实现细节》 第1节 界面的布局
PicSi是不久前博主利用业余时间编写的一个小工具软件,虽然它的功能十分简单,但却是一个小型软件开发的好例子。PicSi采用Visual Studio 2010 + WTL框架,代码总计700行左右。《PicSi的实现细节》一共分为四节,本文是第一节,希望它能给你带来一点帮助。如果你有任何想法或建议,请与博主联系,谢谢!1. Why WTL? 相比于MFC,WTL并不被人们熟知,它其原创 2012-07-30 09:59:35 · 1373 阅读 · 0 评论 -
光标闪烁问题的解决办法
在调用Windows API函数SetCursor设置光标时,可能会碰到闪烁的问题:移动鼠标,光标在Class Cursor(即注册窗口类时指定的Cursor)与预设Cursor之间闪烁。在MSDN上有关SetCursor函数的备注中强调,如果Class Cursor非空,那么每当鼠标移动,系统都会把光标恢复为Class Cursor。为了避免光标闪烁这一问题,必须处理WM_SETCURSOR原创 2013-07-04 16:04:54 · 6423 阅读 · 2 评论