- 博客(349)
- 资源 (30)
- 收藏
- 关注
原创 跟我一起玩Win32开发(16):ListView的多个视图
在上一个例子中,我们只用到了ListView的Report视图,也就是详细视图。本文我们再把上一篇文章中所用的例子进行一下扩展,例子源码可以到俺的资源区下载。我们为ListView中显示的数据加上图标,并且允许用户选择显示哪种视图,如大图标,小图标,详细信息等。 因为代码还比较长,我也不希望把代码全部放出来,在写完本文后,我会将源码上传到资源中。当然了,我也不可能说每一行代码都解释一遍
2013-02-08 11:26:52 13265 12
原创 跟我一起玩Win32开发(15):ListView控件
这个控件其实不用阿拉来介绍,因为它太常见了,就好像我们一出门就会看到妹子一样常见。当然也可以说,它是对ListBox的扩充。在使用该控件之前,我先介绍VS的一个相当好玩的功能。在代码文件的#include指令上右击,从弹出的菜单中选择“生成包含文件关系图”,如下图:然后你喝一口咖啡,你会看到这样的东西: 这个关系图,演示了你的项目中的头文件,源文件以及外部引用文件之间的
2013-02-06 13:47:27 17280 11
原创 跟我一起玩Win32开发(14):用对话框作为主窗口
前面我们在编写Win32应用程序的思路都是:1、设计窗口类。2、注册窗口类。3、创建窗口。……然而,当我们接触控件以后, 会发现一个问题,我们在窗口上放置控件实在不好弄,而资源中的对话框具有图形编辑器,操作起来相对方便。于是,就有了一个想法:把对话框用作主窗口,那我们在布局控件时就轻松了。 其实这想法在网上已有牛人做了,不过,人家是用Win32汇编干的,当然,要把它变为C++就
2013-02-03 16:44:34 29528 20
原创 跟我一起玩Win32开发(13):握手对话框
一提到对话框,相信对它熟悉的人不在少数,更不用说码农们了,你可能会问,对话框和窗口有什么区别吗?本质上是没有区别的,对话框也是一种窗口(前面也说过,控件也可视为子窗口)。最简单的对话框要数MessageBox弹出来的对话框了,是吧?这个函数我有信心,大家都会用的,毕竟很简单。好的,废话不多扯了,马上开始本文第一件事,创建一个对话框。对话框作为一种资源,它存放在资源文件中(.rc),如果
2013-02-02 20:31:29 10902 1
原创 跟我一起玩Win32开发(12):使用控件——单选按钮
今天,咱们还是接着玩“控件斗地主”,这是我原创的超级游戏,有益身心健康,玩一朝,十年少。哦,对,脑细胞极速运动了一下,想起了一个问题,这个破问题虽然网上有很多种解决方案,但是,并没有让所有人都解决问题。不知道大家有没有调用过LoadIconMetric函数,这个函数在静态库Comctl32.lib中有定义(当然,动态库也有),不过,创建项目的时候,默认并没有引用它的,于是,大家知道,解决调
2013-01-31 17:00:05 16889 7
原创 跟我一起玩Win32开发(11):使用控件——先来耍一下按钮
用户通过控件与应用程序交互,在吹牛之前,先介绍一个工具,这是官方的工具,使用它,你可以预览常用控件的外观、样式,以及对控进行操作时接收和发送哪些消息。下载地址如下:http://www.microsoft.com/en-us/download/details.aspx?id=4635 我们可以把控件当成特殊的一类窗口,所以,创建控件与创建窗口一样,使用CreateWindow或Crea
2013-01-30 21:22:28 29538 19
原创 跟我一起玩Win32开发(10):绘图(C)
今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考MSDN直接套参数就可以了。SetDCBrushColor函数有必要扯一下,它的声明如下: COLORREF SetDCBrushColor( __in HDC hdc, __in COLORREF crColor );第二个参数,通过RGB宏产生COLORREF传进去就可以了,比如这样:
2013-01-25 14:56:47 19550 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 8949 2
原创 跟我一起玩Win32开发(8):绘图(A)
从本篇开始,我就不吹牛皮,那就吹吹兔皮吧。说说与绘图有关的东东。要进行绘制,首先要得到一个DC,啥是DC呢?按字面翻译叫设备上下文,也可以翻译为设备描述表,它主要指API为我们封装了一些与显示设备相关的交互操作,我们这里说的是图形的绘制,自然指的是显卡。当然,对于同一客观事物,世界上并不存在唯一的理解方案,技术上的东西最终拿来用的,不应该有硬性的去统一。我们之中的很多人,最大的失败在于,人家说
2013-01-23 16:48:38 10467 5
原创 跟我一起玩Win32开发(7):多边形窗口
通常情况下,窗口都是一个矩形,不过,调用下面这个函数,可以自定义窗口的形状。int SetWindowRgn( __in HWND hWnd, __in HRGN hRgn, __in BOOL bRedraw );第一个参数是窗口的句柄,第二个参数也是一个句柄——HRGN,一个多边形的区域,可以用CreatePolygonRgn函数来创建。第
2013-01-20 16:05:16 15308 10
原创 新时尚Windows8开发(40):StreamSocket的使用
在Windows Store应用程序中使用Stram Socket与桌面客户端进行通信,一直没弄成功,总让俺觉得很震精,怎么会不成功呢。后来经过几回测试发现,原来是在DataReader那里出了问题,总算弄成了。Stream Socket通常用于传输一些比较长的数据,如文件。但这里为了使演示变得更容易理解,我传输了一段字符。首先,我们用WinForm做一个服务器端。界面不复杂,目的是侦听连
2013-01-19 11:15:52 14683
原创 跟我一起玩Win32开发(6):创建右键菜单
快捷菜单,说得容易理解一点,就是右键菜单,当我们在某个区域内单击鼠标右键,会弹出一些菜单项。这种类型的菜单,是随处可见的,我们在桌面上右击一下,也会弹出一个菜单。右键菜单的好处就是方便,它经常和我们正在操作的某个UI元素联系起来,比如我们正在使用文本框输入文本,我们在文本框中右击,就会看到可能有【复制】【清空】【全选】之类的选项,所以,右键菜单也称为“上下文菜单(Context Menu)”。
2013-01-18 15:24:42 17080 7
原创 跟我一起玩Win32开发(5):具有单选标记的菜单
帅哥们,美女们,下午好,我又来误人子弟,请做好准备。今天,我们的目的是,想要实现下图中的这种菜单效果。就是一种类似单选按钮的菜单,多个菜单项中,同时只有一个会被选中。首先,我们在资源编辑器中,设计一个菜单资源。这个资源编辑器在管理资源ID的时候,有些问题,有时候不同步更新,有时候会保存不到,反正就会混乱。如果遇到问题,你可以先把菜单设计好,接着打开resource.h,手动把这些I
2013-01-17 14:52:26 14325 13
原创 跟我一起玩Win32开发(4):创建菜单
也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长,唯一厉害的一点就是不相信权威,鄙视砖家,所以,我一直以来都有属于俺自己的编程思想。就好比当年咏春拳刚浮出江湖的时候,武学界骂声不停,有人说:“这哪像拳?分明是女人拳。”然后不知道什么时候,一位叫叶问的大侠突然牛B起来了,于是,咏春拳的传播
2013-01-16 20:11:41 25451 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 34843 16
原创 跟我一起玩Win32开发(2):完整的开发流程
上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接口中的方法类似,即只定义,不实现。好处就是多态,发何处理,由派生类来决定。在开始吹牛之前,我先推
2013-01-13 16:26:13 106994 78
原创 跟我一起玩Win32开发(1):关于C++的几个要点
我不知道各位,一提起C++,第一感觉是什么?而据俺的观察,许多人几乎成了“谈C色变”。不管是C还是C++,一直以来都被很多人视为相当难学的玩意儿,幸好只是一个C++,没有C--,C**和C//,不然,那还得了?曾记得,某年某月某日,在某论坛上看到有牛人说“C++++”,当时我猜想这是啥玩意儿,后来经过一番顺虅摸瓜,深入调查发现,原来有人作了这么个有趣的等式:C# == C++++。显然,这个等
2013-01-11 16:02:39 43161 102
原创 Windows Phone开发相关技术要点已经整理成书了
我是完全依靠自学懂得编程的,从2002年接触QBasic开始,我就喜欢编程,到今天为止,我仍旧在探索轻松高效的编程学习方法,一直希望为自学编程的朋友们寻找一条好的路子。不过,话又说回来,不管我将来是否成功,很重要的一点是,境界不是一朝一夕就能练出来的,好事多磨。而纵多方法我都尝试过了,没有比实例演示更有效的方法了。其实对于入门者,我们不应该向他们灌输过多的理论,那样做反而会加重他们的思想负担。
2013-01-05 12:18:59 3172 5
原创 在不修改代码的情况下无限扩展应用项目
在许多需要分模块开发,较为复杂的应用项目(如ERP之类)中,如何做到轻松扩展,往往是一个头疼的问题。在传统条件下,我们会把各个功能分布在不同的类库中,每添加一个功能就引用一个程序集,而这种方法,我们会发现,当你每添加一个新扩展后,都要对新增的程序集进行引用,这样也意味着,你每次都要重新编译一次主应用程序,这一来一往,维护成本也是有的。到了.NET 3.5时代,你可能会想到Addin,但这个
2012-12-29 17:54:02 4293
原创 带旋转动画的三维界面视图
今天,给大家分享我刚做好的可旋转的三维界面效果,不打算过多介绍,可以看看下面几个图片。 其实,如果把这个程序的窗口变成透明,就可以做出QQ 2013的登陆界面动画效果了。把这个例子运行后,通过键盘上的左,右箭键来控制旋转的方向。 这里的快捷键,我使用了KeyBinding类来设置,另外,自定义了两个命令,分别执行向左转和向右转的动画。
2012-12-28 17:51:20 3883 1
原创 Visual C++ 2012 Express也可以写WinForm程序
最近有几位朋友找我,VS 2012的Express版本,在C++/CLR项目中只能编写控制台应用程序,不支持WinForm啊,怎么办?于是,有人就尝试在CLR的控制台应用程序中编写Windows Forms应用程序,理论上讲嘛,是可以的,不信?你看看下面的代码。// C++#include "stdafx.h"using namespace System;[STAT
2012-12-25 15:31:38 10267
原创 WPF制作窗口的启动和关闭动画
以下是用WPF实现的的一个窗口,为了使演示变得简单,我在窗口中只放了一个按钮。如下图所示: 但我们今天的主题是窗口启动时和关闭时都展示动画,如何进行动画处理,我以前写过一些WPF相关的文章。要将窗口进行自定义,首先我们要去掉默认窗口的边框、背景色和标题栏。这个不难,在WPF中,要把窗体彻底透明,只要做三件事即可:(1)设置WindowStyle属性为None。(2)Al
2012-12-22 16:19:44 18842 8
原创 传说中的WCF(13):群聊天程序
前面吹了不少重点知识了,为了可以较为综合地运用它们,今天,我们来做一个可以群聊的应用,就像QQ群那样,一个服务器端,N个客户端,服务器端运行后,每个客户端启动的时候会自动连接服务器生成会话,只要其中任一个客户端向服务器发送消息,服务器都会将消息群发到所有客户端。我们来看看如何用WCF来取代Socket。 这个例子会用到以下知识点:在进程中承载WCF服务。会话的使用。回调。在
2012-12-19 10:14:50 5803 7
原创 传说中的WCF(12):服务器回调有啥用
你说,服务器端回调有啥用呢?这样问,估计不好回答,是吧。不急,先讨论一个情景。假设现有服务器端S,客户端A开始连接S并调用相关操作,其中有一个操作,在功能上有些特殊,调用后无法即时回复,因为在服务器上要作一些后续,而这些处理也许会消耗一定时间,比如:向服务器上传了一个文件,但是,为了节约空间或出于其他目的,服务器要对刚上传的文件进行处理(压缩或者多媒体文件转码),这些操作无法马上向客户端回
2012-12-15 12:03:25 6754 7
原创 传说中的WCF(11):会话(Session)
在标题中我加了一个大家都很熟悉的单词——Session,熟吧?玩过Web开发的朋友肯定在梦中都会见到她。在Web中为什么要会话呢?毕竟每个用户在一个Web应用中可能不止进行一次操作,比如,某二手飞机交易网站,用户A登陆后,可能他会修改他的个人信息,他也有可能看好了一架二手飞机,打算入手,就把商品放到他的“购物车”中,这些过程中,都会产生许多与用户A相关的数据,这些数据只是对A有效,而当用户B登
2012-12-11 17:24:48 14965 2
原创 传说中的WCF(10):消息拦截与篡改
我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过程中,期间发送和接收的SOAP是什么样子。当然,也有人是通过借助其他工具来抓取数据包来查看。那,有没有办法让程序自己输出相应的SOAP信息呢?当然有,这就是我们本文要说的,对消息的拦截与篡改,呵,我用了一个不太好听动词——篡改。由于WCF的模型相对复杂,
2012-12-09 12:26:09 13559 11
原创 新时尚Windows8开发(39):文件的Read和Write
文件的读写对我们来说不应该陌生,而应该说是非常熟悉了。在学习.NET其他开发技术的时候,IO是我们必须学习的,毕竟那是数据存储与处理的最基本操作。在Windows Store应用程序开发中,同样需要对文件的读写,但由于安全与权限的限制,我们不可能像以前那样“自由干活”了。这是有好处的,我们要知道,“板砖”应用是针对移动平台的,至少通常情况下是这样的。如果我们希望像过去一样可以自由地读写各种路径
2012-12-07 14:11:59 4078 1
原创 新时尚Windows8开发(38):聊天程序
Socket一直是一个痛苦的玩意,不过,还是要把它说一说,其实,我们完全可以用WCF实现网络通信功能。今天先说说DatagramSocket类,别看这名字好像有些陌生,其实,说白了,这家伙只是换了个“马甲”罢了,本质上说就是UDP传输,最适合做就是传输一些简单的文本信息,所以,弄个聊天程序相当合适。由于Windows“板砖”应用一般是一个应用窗口占满整个屏幕,有时候可能会挂到屏幕的一边,为
2012-12-04 15:19:45 4220 8
原创 传说中的WCF(9):流与文件传输
在使用Socket/TCP来传输文件,弄起来不仅会有些复杂,而且较经典的“粘包”问题有时候会让人火冒七丈。如果你不喜欢用Socket来传文件,不妨试试WCF,WCF的流模式传输还是相当强大和相当实用的。因为开启流模式是基于绑定的,所以,它会影响到整个终结点的操作协定。如果你不记得或者说不喜欢背书,不想去记住哪些绑定支持流模式,可以通过以下方法:因为开启流模式,主要是设置一个叫Transfe
2012-12-02 16:26:51 19445 26
原创 新时尚Windows8开发(37):获取和设置用户头像
要获取用户相关信息,主要是利用Windows.System.UserProfile 名称空间下的UserInformation类,这个家伙是静态类,你应该知道怎么用了。获取如用户名之类的就TMD简单了,只需调用对应的方法就完事了,而咱们今天的示例,是获取,设置用户的头像。 获取用户头像调用GetAccountPicture方法;设置用户头像调用SetAccountPictureAsyn
2012-12-01 12:21:25 4350
原创 传说中的WCF(8):玩转消息协定
Message翻译成中文,相信各位不陌生,是啊,就是消息,在WCF中也有消息这玩意儿,不知道你怎么去理解它。反正俺的理解,就像我们互发短信一个道理,通讯的双方就是服务器与客户端,说白了吧,就是二者之间的通信。我们知道一个WCF服务,先是定义服务协定,而服务协定中会有若干个服务操作协定(OperationContract),是这样吧?而所谓的操作协定,就是一个方法。于是,我的结论出来了,客户
2012-11-30 12:26:42 5469 8
原创 传说中的WCF(7):“单向”&“双向”
各位下午好,我又来吹牛了。今天下午天气有些怪,往窗外一看,啊,外面黑乎乎的,远处的人们可以看得见我房子里面的灯光,但我看不见远处的人们,这就是“单向通讯”;希望明天能看到太阳姐姐,这样一来,我站在阳台上,可以看到对面楼顶上散步的妹子,妹子也可以看到我,心情好的话,我们相互打个招呼,这叫做“双向通讯”。所以啊,在WCF中,服务器与客户端的通讯就像我的窗户一样,有单向(单工)和双向(双工)之分
2012-11-28 17:35:16 5193 5
原创 Windows Phone应用开发强化训练:滤罩层可以这样做
我先不说什么,给大家看一个截图。 呵呵,这是一个灰常低水准的滤罩效果,如果你觉得有意思,我贴出XAML来。
2012-11-28 13:37:57 5232 8
原创 新时尚Windows8开发(36):Play To的一些事情
这个Play to,我还是用它原名,因为不知道怎么翻译,尽管MSDN上译为“播放到”,但总感觉有些别扭。要说这玩意儿,用来干吗,我还真有点……总之,它的大致用途就是同一个网络中,如家庭组,其中有N台windows 8计算机,A计算上正在播放多媒体,这个时候,可以把流媒体发送到B,C,D其他电脑上播放。于是,我想到什么场合会用得上它呢?放电影,比如我现在在A机器上播放一部恐怖片,咱们一群哥们
2012-11-26 17:52:21 4440 1
原创 Windows Phone 8 新篇章(1):先把牛皮吹破
本文我们不谈技术,技术走火入魔者,请远离本文。前面我写了一系列不太完整的WP 7.1 SDK的文章,当然了,你说完整那显然不可能,是不是?我总不能从什么叫VB,什么叫C#,什么叫XAML说起吧?这就没意思了,元芳肯定同意我的观点的,呵呵。WP8来了,也有不少朋友在催我,发邮件的、弹QQ窗口的都有,幸好没有发微博的,否则,这鸭梨太大了,我一个人吃不完,会造成消化不良。是啊,一边写Win8,另
2012-11-25 12:00:52 6214 9
原创 新时尚Windows8开发(35):后台传输
所谓后台传输,关键是突出在,在应用程序不在前台运行时,它仍然可以进行数据传输,一般而言,这个功能用于下载文件比较适合,像“应用商店”的下载应用就是使用了后台传输。这个后台传输当然包括下载和上传了,不过,我想是下载的情况会多一些,呵呵,不知道是不是这样,元芳,你怎么看?好了,不管元芳怎么看了,首先大家做好心理准备,接下来我会讲一点点比较枯燥的东东,不怕,只是一点点而已,我不喜欢长篇巨论,免得
2012-11-23 12:00:23 3301 4
原创 新时尚Windows8开发(34):多媒体文件转码
这个东西相信还是蛮好玩的,有时候我们也确实需要,比如,要将某个MP3转换为WMA文件,或者把MP4转换为WMV文件。Windows.Media.Transcoding命名空间下提供了一个MediaTranscoder类,这个类就是专门用来转码的,用起来也不算很复杂,但把步骤抽象出来说,意义不大,所以,还是老办法吧。 接下来,我们会完成一个简单的应用,主要功能:打开一个MP3文件,然后将
2012-11-19 19:46:43 2861 1
原创 传说中的WCF(6):数据协定(b)
我们继续来吹牛,上一回我们吹了数据协定的一部分内容,今天我们接着来做实验。好的,实验之前先说一句:实验有风险,写代码须谨慎。实验开始!现在,我们定义两个带数据协定的类——Student和AddrInfo。 [DataContract] public class Student { [DataMember] public stri
2012-11-19 13:45:32 4342 6
原创 传说中的WCF(5):数据协定(a)
在第4篇中,咱们吹了发送/接收SOAP头,从本篇开头,我们不妨更深入地去探求一下有关WCF中的消息到底是啥玩意儿。WCF庞大而复杂,而从MSDN文档中,你会看到许多很专业很抽象的东西,你不禁会问,文档中所说的,是不是都有用的呢?实用的理论还是有的,不过有些要点确实太抽象了,抽象到有时候我也不知道用来干吗?不过,数据协定应该算比较有用的东西,至少在你写WCF服务时还是会经常用到。 我们先
2012-11-18 14:05:46 5606 11
原创 新时尚Windows8开发(33):Json数据处理(B)
上一节我们讨论了如何手动方式来处理JSON对象数据,可能你也发现了,是有些痛苦,那么,用什么方法来读写JSON数据才算好玩?有的,如果你耍过WCF,或许已经想到了——JSON序列化和反序列化。DataContractJsonSerializer类位于System.Runtime.Serialization.Json命名空间,我们只需要简单的调用两个方法就可以完成序列化和反序列化。Write
2012-11-16 16:04:00 3301
手动编写WCF客户端实例
2013-08-09
在桌面应用中实现提供HTTP下载功能
2013-07-18
BackgroundWorker后台任务实例源码
2013-06-22
WPF版CheckListBox控件
2013-04-27
WCF聊天程序示例
2013-04-05
序列化与Socket结合使用示例
2013-04-02
Win32系列文章19:打开文件示例代码
2013-03-09
Win32开发系列文章18:向对话框传参与返回数据示例源码
2013-03-05
Win32开发系列文章17-启动和关闭进程示例源码
2013-02-28
Win8应用开发博文之StreamSocket例子代码
2013-01-19
WPF制作的窗口启动和关闭时的动画
2012-12-22
Win8开发博文第22节示例源代码
2012-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人