跟我一起玩Win32开发
文章平均质量分 79
在Windows开发中,许多新的框架其实是对Win32进行了封装,让我们开发起来更有效率,更能够把注意力集中在业务逻辑上。不过,了解一下Win32也是有帮助的。本系列文章旨在让广大朋友对Win32能有一些主观上的认知。
东邪独孤
欢迎来到桃花岛宇宙万物尽在其中
展开
-
跟我一起玩Win32开发(25):监视剪贴板
自从郭大侠和蓉儿离开桃花岛后,最近岛比较寂静,有一种“门前冷落鞍马稀”的感觉。于是,老邪就拿出《九阴真经》认真阅读,同时用迅雷下载经典大剧《汉武大帝》晚上睡觉前看上几集,老邪一向是善于向古圣先贤学习。大家知道,迅雷有一个监视剪贴板的功能,如果发现你复制剪贴板的内容包含符合迅雷下载地址格式的就弹出新建下载任务窗口。 可能我们也希望在自己的应用程序中也加入这样XX的功能,其实不难,真的,我原创 2013-05-20 17:15:39 · 8727 阅读 · 2 评论 -
跟我一起玩Win32开发(24):计时器
有好些时间没写博客了,今天要来耍一下计时器,就是我们常说的Timer,它虽然不是什么复杂的东西,也称不 上牛X,不过,用处还是不少的,对于那些需要每隔一定时间执行一次的任务,那是相当有用。先来认识一下一对函数,注意,是一对,不是一个。SetTimer——设置并启用计时器;KillTimer——取消计时器。现在你明白为什么要一对的原因了,就好比进程操作,有启动或创建进程的函数,就肯定原创 2013-05-12 13:48:48 · 7522 阅读 · 3 评论 -
跟我一起玩Win32开发(23):渐变颜色填充
GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。BOOL GradientFill( _In_ HDC hdc, _In_ PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nM原创 2013-04-22 23:42:01 · 8060 阅读 · 7 评论 -
跟我一起玩Win32开发(22):抓取屏幕
关于如何拷贝屏幕并保存,这里已经有现成的例子,我也不必去Copy人家了,我一向不喜欢Copy。这里有一个完整的例子,可以看看。http://msdn.microsoft.com/EN-US/library/windows/desktop/dd183402(v=vs.85).aspx 把屏幕的内容复制到窗口的客户区域中,通常会用BitBlt函数,函数的功能是把一块颜色数据从一个DC复制到原创 2013-03-27 17:08:39 · 14468 阅读 · 9 评论 -
跟我一起玩Win32开发(21):复制&粘贴&剪贴板操作
我要提醒一下大家,看了我的博文学到的知识,千万不要用于实际开发,不然你会被你的上司骂:“妈的,这些东西哪来的,从来没有人这样做过。”不信你试试,脑细胞被冻结的经理或者技术总监们肯定会这样说的。如果是一些有X年工作经验(X永远不可能大于100)的程序员肯定会说:“你怎么这么不成熟?”你如果被别人这么说之后,不知道你会不会很伤心,或者很生气?我呢,曾经被N个人这样教育过,不过你猜猜我当时的心情原创 2013-03-24 12:27:20 · 13775 阅读 · 14 评论 -
跟我一起玩Win32开发(20):浏览文件夹
最近忙于一些相当无聊的事情,还没忙完,不过,博客还是要写的,不然我头顶上会多了几块砖头。在上一篇博文中,我们浏览了文件,今天我们也浏览一下目录,如何?浏览目录我们同样有两个规矩,用托管类库的我就不说了,相信大家两分钟就能弄好。重点还是说说第二个规矩,用API方式。我们用到的是Shell函数,一提到Shell,可能有朋友会感到痛苦,因为它很多函数涉及到COM,不过,也没什么了,反正我的哲学理原创 2013-03-17 11:24:08 · 12568 阅读 · 10 评论 -
跟我一起玩Win32开发(19):浏览和打开文件
在应用程序中,我们很经常要实现的功能,是Open文件或保存文件对话框,让用户来选择一个或N个文件。本文我将介绍两种思路,第一种方法较为复杂,第二种方法较为简单。方法一:老规矩这是一种传统方法,使用GetOpenFileName或者GetSaveFileName函数,看名字就知道,前者用来打开文件,后者是保存文件,这两个函数的用法是一样的,因此,我只演示其中一个。无论你使用哪个函数,都要原创 2013-03-09 16:43:29 · 9546 阅读 · 2 评论 -
跟我一起玩Win32开发(18):使用对话框的两个技巧
相信大家知道对话框怎么用了,就是先用“资源编辑器”设计一个对话框,然后在代码中加载处理。今天,我向大家分享两个使用对话框的技巧,还是比较实用的。不用担心,先喝杯茶,很简单的,一点也不复杂,总之,看俺写的博客,你不会有思想压力的。放心好了。 这两个技巧分别是:1、在显示某个对话框时,向对话框传递数据。这个我相信大家能够理解,就好比咱们在做Web开发的时候,在打开一个页面时,可能会考虑原创 2013-03-05 16:09:00 · 10699 阅读 · 13 评论 -
跟我一起玩Win32开发(17):启动和结束进程
这里我再次说明一下,我不知道为什么,现在的人那么喜欢走极端,估计是价值观都“升级”了的缘故吧。我撰写这一系列Win32相关的文章,并不是叫大家一定要用Win32去开发项目,仅仅是给大家了解一下,Win32是个啥东西而已。另外,在专访中,有些人也误认为我说C++非学不可,那也不是,我也提到过了,C++的学习可以使你懂得更多知识,为你以为学习各种技术打下基础。 今天,我们来了解一下,在原创 2013-02-28 11:08:45 · 17200 阅读 · 7 评论 -
跟我一起玩Win32开发(16):ListView的多个视图
在上一个例子中,我们只用到了ListView的Report视图,也就是详细视图。本文我们再把上一篇文章中所用的例子进行一下扩展,例子源码可以到俺的资源区下载。我们为ListView中显示的数据加上图标,并且允许用户选择显示哪种视图,如大图标,小图标,详细信息等。 因为代码还比较长,我也不希望把代码全部放出来,在写完本文后,我会将源码上传到资源中。当然了,我也不可能说每一行代码都解释一遍原创 2013-02-08 11:26:52 · 13238 阅读 · 12 评论 -
跟我一起玩Win32开发(15):ListView控件
这个控件其实不用阿拉来介绍,因为它太常见了,就好像我们一出门就会看到妹子一样常见。当然也可以说,它是对ListBox的扩充。在使用该控件之前,我先介绍VS的一个相当好玩的功能。在代码文件的#include指令上右击,从弹出的菜单中选择“生成包含文件关系图”,如下图:然后你喝一口咖啡,你会看到这样的东西: 这个关系图,演示了你的项目中的头文件,源文件以及外部引用文件之间的原创 2013-02-06 13:47:27 · 17259 阅读 · 11 评论 -
跟我一起玩Win32开发(14):用对话框作为主窗口
前面我们在编写Win32应用程序的思路都是:1、设计窗口类。2、注册窗口类。3、创建窗口。……然而,当我们接触控件以后, 会发现一个问题,我们在窗口上放置控件实在不好弄,而资源中的对话框具有图形编辑器,操作起来相对方便。于是,就有了一个想法:把对话框用作主窗口,那我们在布局控件时就轻松了。 其实这想法在网上已有牛人做了,不过,人家是用Win32汇编干的,当然,要把它变为C++就原创 2013-02-03 16:44:34 · 29511 阅读 · 20 评论 -
跟我一起玩Win32开发(13):握手对话框
一提到对话框,相信对它熟悉的人不在少数,更不用说码农们了,你可能会问,对话框和窗口有什么区别吗?本质上是没有区别的,对话框也是一种窗口(前面也说过,控件也可视为子窗口)。最简单的对话框要数MessageBox弹出来的对话框了,是吧?这个函数我有信心,大家都会用的,毕竟很简单。好的,废话不多扯了,马上开始本文第一件事,创建一个对话框。对话框作为一种资源,它存放在资源文件中(.rc),如果原创 2013-02-02 20:31:29 · 10882 阅读 · 1 评论 -
跟我一起玩Win32开发(12):使用控件——单选按钮
今天,咱们还是接着玩“控件斗地主”,这是我原创的超级游戏,有益身心健康,玩一朝,十年少。哦,对,脑细胞极速运动了一下,想起了一个问题,这个破问题虽然网上有很多种解决方案,但是,并没有让所有人都解决问题。不知道大家有没有调用过LoadIconMetric函数,这个函数在静态库Comctl32.lib中有定义(当然,动态库也有),不过,创建项目的时候,默认并没有引用它的,于是,大家知道,解决调原创 2013-01-31 17:00:05 · 16870 阅读 · 7 评论 -
跟我一起玩Win32开发(11):使用控件——先来耍一下按钮
用户通过控件与应用程序交互,在吹牛之前,先介绍一个工具,这是官方的工具,使用它,你可以预览常用控件的外观、样式,以及对控进行操作时接收和发送哪些消息。下载地址如下:http://www.microsoft.com/en-us/download/details.aspx?id=4635 我们可以把控件当成特殊的一类窗口,所以,创建控件与创建窗口一样,使用CreateWindow或Crea原创 2013-01-30 21:22:28 · 29525 阅读 · 19 评论 -
跟我一起玩Win32开发(10):绘图(C)
今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考MSDN直接套参数就可以了。SetDCBrushColor函数有必要扯一下,它的声明如下: COLORREF SetDCBrushColor( __in HDC hdc, __in COLORREF crColor );第二个参数,通过RGB宏产生COLORREF传进去就可以了,比如这样:原创 2013-01-25 14:56:47 · 19543 阅读 · 10 评论 -
跟我一起玩Win32开发(9):绘图(B)
我们今天继续涂鸦,实践证明,涂鸦是人生一大乐趣。首先,我们写一个程序骨架子,以便做实验。#include LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain( HINSTANCE hThisApp, HINSTANCE hPrevAp原创 2013-01-24 17:14:20 · 8928 阅读 · 2 评论 -
跟我一起玩Win32开发(8):绘图(A)
从本篇开始,我就不吹牛皮,那就吹吹兔皮吧。说说与绘图有关的东东。要进行绘制,首先要得到一个DC,啥是DC呢?按字面翻译叫设备上下文,也可以翻译为设备描述表,它主要指API为我们封装了一些与显示设备相关的交互操作,我们这里说的是图形的绘制,自然指的是显卡。当然,对于同一客观事物,世界上并不存在唯一的理解方案,技术上的东西最终拿来用的,不应该有硬性的去统一。我们之中的很多人,最大的失败在于,人家说原创 2013-01-23 16:48:38 · 10445 阅读 · 5 评论 -
跟我一起玩Win32开发(7):多边形窗口
通常情况下,窗口都是一个矩形,不过,调用下面这个函数,可以自定义窗口的形状。int SetWindowRgn( __in HWND hWnd, __in HRGN hRgn, __in BOOL bRedraw );第一个参数是窗口的句柄,第二个参数也是一个句柄——HRGN,一个多边形的区域,可以用CreatePolygonRgn函数来创建。第原创 2013-01-20 16:05:16 · 15287 阅读 · 10 评论 -
跟我一起玩Win32开发(6):创建右键菜单
快捷菜单,说得容易理解一点,就是右键菜单,当我们在某个区域内单击鼠标右键,会弹出一些菜单项。这种类型的菜单,是随处可见的,我们在桌面上右击一下,也会弹出一个菜单。右键菜单的好处就是方便,它经常和我们正在操作的某个UI元素联系起来,比如我们正在使用文本框输入文本,我们在文本框中右击,就会看到可能有【复制】【清空】【全选】之类的选项,所以,右键菜单也称为“上下文菜单(Context Menu)”。原创 2013-01-18 15:24:42 · 17067 阅读 · 7 评论 -
跟我一起玩Win32开发(5):具有单选标记的菜单
帅哥们,美女们,下午好,我又来误人子弟,请做好准备。今天,我们的目的是,想要实现下图中的这种菜单效果。就是一种类似单选按钮的菜单,多个菜单项中,同时只有一个会被选中。首先,我们在资源编辑器中,设计一个菜单资源。这个资源编辑器在管理资源ID的时候,有些问题,有时候不同步更新,有时候会保存不到,反正就会混乱。如果遇到问题,你可以先把菜单设计好,接着打开resource.h,手动把这些I原创 2013-01-17 14:52:26 · 14308 阅读 · 13 评论 -
跟我一起玩Win32开发(4):创建菜单
也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长,唯一厉害的一点就是不相信权威,鄙视砖家,所以,我一直以来都有属于俺自己的编程思想。就好比当年咏春拳刚浮出江湖的时候,武学界骂声不停,有人说:“这哪像拳?分明是女人拳。”然后不知道什么时候,一位叫叶问的大侠突然牛B起来了,于是,咏春拳的传播原创 2013-01-16 20:11:41 · 25433 阅读 · 26 评论 -
跟我一起玩Win32开发(3):窗口的重绘
我们今天来吹一下关于窗口重绘的事情,在开始吹牛之前,我们先用上一篇博文中说到的方法写一个简单的Win32应用程序。代码如下:#include //先声明一下消息处理函数LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);// 入口点int CALLBACK Wi原创 2013-01-15 22:05:03 · 34811 阅读 · 16 评论 -
跟我一起玩Win32开发(2):完整的开发流程
上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接口中的方法类似,即只定义,不实现。好处就是多态,发何处理,由派生类来决定。在开始吹牛之前,我先推原创 2013-01-13 16:26:13 · 106853 阅读 · 78 评论 -
跟我一起玩Win32开发(1):关于C++的几个要点
我不知道各位,一提起C++,第一感觉是什么?而据俺的观察,许多人几乎成了“谈C色变”。不管是C还是C++,一直以来都被很多人视为相当难学的玩意儿,幸好只是一个C++,没有C--,C**和C//,不然,那还得了?曾记得,某年某月某日,在某论坛上看到有牛人说“C++++”,当时我猜想这是啥玩意儿,后来经过一番顺虅摸瓜,深入调查发现,原来有人作了这么个有趣的等式:C# == C++++。显然,这个等原创 2013-01-11 16:02:39 · 43117 阅读 · 102 评论