wondows程序设计
文章平均质量分 81
thefutureisour
ZTE基带部码农,平时工作很忙,不再更新opencv相关内容,也不解答大家问题了。
展开
-
windows程序设计(13):给滚动条加上键盘响应
先扯两句跟键盘有关系的闲话:首先,通常我们写程序时,没有必要对所有的键盘消息做出相应,windows自身已经对很多消息做出了相应,只要这些消息走的是DefWindowProc (hwnd, message, wParam, lParam)这条路就可以了。比如,对于前面写过的按钮程序,里面没有键盘响应消息,但你依然可以通过Alt+F4来关闭这个程序,或者当按钮或得焦点以后,通过空格键来操作它。原创 2012-06-07 10:20:28 · 1796 阅读 · 0 评论 -
windows程序设计(16):使用自己的图标,光标和字符串表
它们和菜单一起,统称为windows的资源,虽然它们也是数据,但他们并不存放在数据段中,我们也不能直接在程序中定义资源变量并访问它们,Windows提供函数直接或间接地把它们加载内存以备使用。先说图标:图标分为2种:16*16的和32*32的,这两种的区别在于,16*16的用于程序的标题栏,而32*32的应用于程序中,或者用于exe文件。光标其实没啥好说的,但是字符串表值得一提:windo原创 2012-06-08 14:21:40 · 1139 阅读 · 0 评论 -
windows程序设计(17):使用菜单
菜单应该算是比较简单的资源了,因为菜单的设计跟VB很像,图形界面的,你只要写菜单按钮的响应程序就行了。每个菜单都有自己的ID。菜单的消息是通过WM_COMMAND传给系统的,通过消息的wParam的低字节,就能获得ID号。需要注意的是,你最好把ID设成宏一样,见到名字就能看懂意思,不要用原配的那种数字。菜单的属性框中,还能选择菜单是否被选中,能否使用,是否变灰等等。下来看看程序:/*---原创 2012-06-09 13:39:46 · 973 阅读 · 0 评论 -
windows程序设计(18):多线程程序设计
先得多说两句进程与线程的基本知识。不过自己不是学计算机的,看《操作系统》的感觉就跟看马哲差不多,全是原理性的内容,感觉很干涩,就勉强说几句吧。进程是程序,数据以及进程控制块(PCB)组成的,它是资源分配的最小单位。为什么要提出线程的概念呢?因为进程是资源的拥有者,所以进程使用起来代价太大了,得创建,撤销,切换,而且进程间数据的交换必须使用特定的机制。这导致一个系统中同时存在的进程不宜过多。由此原创 2012-06-11 22:32:08 · 1737 阅读 · 0 评论 -
windows程序设计(22):使用单文档架构编写程序(修改版)
上一次课我们剖析了MFC的单文档应用程序的框架,这一次课主要是使用这个框架。总的来说,是通过doc类存储、处理数据,而在view类显示数据。先描述一下程序的功能:有一个菜单可以选择颜色,默认为白色。然后窗口上会显示一个4*4的格子,默认颜色为白色,当鼠标点击在这个格子中时,格子会变成你之前选中的颜色。然后可以利用打开和保存菜单来实现打开和保存的功能。首先为doc添加两个成员变量:原创 2012-11-26 17:19:01 · 1176 阅读 · 0 评论 -
windows程序设计(23):比较3种单文档程序的架构
第一个是我们之前讲过的方块程序,它的调用关系大致如下:第二个是一个简单的股市软件的程序,比较长,这里就不贴出代码了,说一下大概的思路:有一个专门的硬件和配套的驱动、动态链接库。通过动态链接库中的函数,可以将从射频接收到的消息与windows的一个自定义消息绑定,绑定以后,就可以通过消息响应函数OnIRQ来获取消息。通过GetActiveDocument 获得文档类指针,把数原创 2012-11-29 14:04:55 · 1340 阅读 · 0 评论 -
windows程序设计(24):再谈多线程
之前说的实在是太肤浅了,现在有了一点心的认识,就多说几句。首先,为什么要搞多线程?除了线程间通信方便之外,还有一个重要的原因是线程可以被分配时间片,这样,假如一个程序有很复杂的任务要执行,需要花很长时间,那么我们可以将它写成一个多线程的,让它有多次机会被CPU“临幸”到,所以多线程程序运行起来,感觉CPU的占有率特别高。当然,线程之间的同步是一个非常关键的因素,因为CPU的时钟一到,就切换原创 2012-11-30 15:27:41 · 1527 阅读 · 5 评论 -
windows程序设计(19):剖析MFC机制
当看完孙鑫老师的《VC++深入详解》以后,对MFC有了一个大致的把握以后,这次我们自己剖析一个最精简的MFC程序,看看他和WindosAPI写法的区别:这个程序不使用类向导建立的,只有一个头文件和一个源文件://头文件class CMyApp : public CWinApp{public: virtual BOOL InitInstance ();};class CM原创 2012-11-22 15:26:23 · 2248 阅读 · 0 评论 -
windows程序设计(20):MFC绘图
先看程序:void CMainWindow::OnPaint (){ //在OnPaint函数中,只能使用CPaintDC CPaintDC dc (this); CRect rect; GetClientRect (&rect); dc.MoveTo(rect.left,rect.top); dc.LineTo(rect.right,rect.bottom原创 2012-11-24 11:56:14 · 2912 阅读 · 0 评论 -
windows程序设计(21):剖析单文档架构
之前我们剖析了一个最简单的MFC程序,有了这个基础,我们就可以剖析一个MFC的单文档应用程序了。大概浏览了一下,我们发现3处不一样(而不是增加)的地方:1.InitInstance pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CSingleDocDoc), RUNTIME_C原创 2012-11-25 20:26:19 · 1574 阅读 · 0 评论 -
windows程序设计(15):对比两种鼠标命中测试
先看第一种的程序: /*------------------------------------------------- CHECKER1.C -- Mouse Hit-Test Demo Program No. 1 (c) Charles Petzold, 1998 -------------------------------------------------*原创 2012-06-07 16:44:17 · 1253 阅读 · 0 评论 -
windows程序设计(14):鼠标消息详解
关于鼠标的一些细节知识:通常,我们发消息时,都是对一个特定的窗口,但是对于鼠标消息却不然:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口消息处理程序就会收到鼠标消息,而不管该窗口是否活动或者是否拥有输入焦点。鼠标消息一个有21种:10个显示区域消息,11个非显示区域消息显示区域鼠标消息当鼠标移过窗口的显示区域时,窗口消息处理程序收到WM_MOUSEMOVE消息。当在窗口的显示原创 2012-06-07 15:03:10 · 6174 阅读 · 1 评论 -
windows程序设计(11)初探控件
什么是控件呢?简单的说,控件的其实就是一个个窗口(如果不是窗口,怎么能或得鼠标点击或者空格键的消息呢)。所以理论上,我们也可以不使用windows自带的控件,而自己动手写一个当做控件用的窗口。那么我们大概需要做一下几件事情:1.创建并注册这个窗口。2.通过前面的雷区翻盖程序,我们可以想到:控件每次点击不同的相应,应该是就是贴图的效果,所以对于每次点击窗口,需要贴图。3.建立一个数据结构原创 2012-06-06 11:17:34 · 1170 阅读 · 0 评论 -
windows程序设计(1):我对hellowin程序的解读
以前会一点C++,写出来的程序都是黑屏的。最近心血来潮想学学VC,编写一些带GUI的程序。学习VC的第一个经典程序就是hellowin了。通过这几天的查阅资料,终于是对这个程序有了一些理解。分享给大家:首先windows程序设计和传统的C语言或者C++程序设计思路截然不同的地方在于windows的消息机制。什么是消息机制呢?简单的说,就是别呼叫我,我会呼叫您。它不像传统的C语言程序,在main原创 2012-04-16 22:02:54 · 3494 阅读 · 2 评论 -
windows程序设计(3):分解扫雷程序之雷区翻盖
假如让你写一个扫雷程序,在没有相关资料的前提下,应该从哪里入手呢?我们先想想扫雷程序都有什么:菜单,秒表,记雷数,复位,还有雷区等杂七杂八的东西。而整个程序的关键,就在于雷区。因为如果没有秒表,记雷数等功能,扫雷勉强还是可以玩的,但如果没了雷区,就玩不了了。那么雷区又是怎么一回事呢?肯定要有一个数据结构来记录地雷和周围的数,而程序跟你交互的主要部分,就是在雷区上点一下,然后显示一幅图片,还有双原创 2012-05-07 17:01:01 · 2134 阅读 · 0 评论 -
windows程序设计(2):WM_PAINT消息详解
什么时候会触发WM_PAINT消息消息呢?以下内容来自大名鼎鼎的《Windows程序设计(第五版)》大多数Windows程序在WinMain中进入消息循环之前的初始化期间都要呼叫函数UpdateWindow。Windows利用这个机会给窗口消息处理程序发送第一个WM_PAINT消息。这个消息通知窗口消息处理程序:必须绘制显示区域。此后,窗口消息处理程序应在任何时刻都准备好处理其它WM_PA原创 2012-05-04 08:36:54 · 5741 阅读 · 0 评论 -
windows程序设计(8):映射模式
什么是映射模式呢?为了说清楚这个概念,我们先介绍两个名词:“窗口”、“视口”。视口是基于设备坐标的。对于显示器,就是像素的,也就是你看到的。而窗口是基于逻辑坐标的,虚拟的,也是你写程序时使用的。而且与你当前拿到的设备描述表有关,一般通过beginPaint拿到的都是客户区;而使用getDC拿到的则是通常意义下的窗口:客户区+菜单栏+工具栏+标题栏等等。而窗口到视口的坐标映射,就是映射模式。原创 2012-05-28 16:41:20 · 2597 阅读 · 0 评论 -
windows程序设计(9):简单的GDI对象
第一个要介绍的是画笔。通常我们理解的划线,应该是在划线函数中指明,我这条线画出来应该有多宽,线的类型是什么(比如虚线,点划线,实现)等等。而且很多地方就是这样做的,比如开源计算机视觉库OpenCV,Matlab等等中就是这样。但是Windows程序设计却是另一种思路:我先设计一个画笔,这根笔决定了我划线的颜色,粗细,线型等等。然后选择这根笔,最后划线。这样做好处其实也很多,大家如果习惯了wor原创 2012-05-28 17:42:02 · 1317 阅读 · 0 评论 -
windows程序设计(4):分解扫雷程序之计时器
上次忘了说明,因为我想做一个逼真的扫雷,所以我的扫雷程序的位图都是从windowsXP下面的扫雷里来的。具体是怎么获取位图的呢?我的是windows7系统,里面的扫雷跟XP的不一样,我先下载了一个Xp下的扫雷,然后使用一个软件:PE Explore来获取位图,然后在我的程序中装载这些位图就行了。这次要做的是一个计时器,扫雷的的计时器不是时、分、秒;类型的,而是百秒、十秒、秒类型的。看过雷区原创 2012-05-13 20:12:14 · 4001 阅读 · 0 评论 -
windows程序设计(5)使用滚动条
本文的程序来自《windows程序设计(第五版)》设计滚动条的初衷,是因为客户区需要显示的东西太多了,在这个头文件中,我们包含了一大堆的系统的信息://总行数#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))struct{ int Index ; TCHAR* szLabel; TCHAR原创 2012-05-16 09:57:09 · 3889 阅读 · 0 评论 -
windows程序设计(7):绘制贝塞尔曲线
#include #include #define NUM 1000#define TWOPI (2*3.14159)LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance, //当前实例句柄 HINSTANCE hPrevIns原创 2012-05-17 22:43:17 · 2858 阅读 · 0 评论 -
windows程序设计(6):基本画图
windows程序画图,大体上有3种方法:(1)你告诉系统点的坐标和颜色,系统通过SetPixel来画。类似的,通过GetPixel来获取某一点像素值。(2)使用MoveToEx、LineTo来划线,MoveToEx设置起点坐标,LineTo设置终点坐标,或者使用Polyline函数,这个函数接受一个POINT类型的数组,通过数组里的点连线。(3)windows提供了一些基本图形绘制的原创 2012-05-17 16:01:57 · 9845 阅读 · 1 评论 -
windows程序设计(10):矩形与区域
windows中,矩形结构RECT通过左上角和右下角两个点控制。RECT rect;rect.left = xLeft ;rect.top = xTop ;rect.right = xRight ; rect.bottom = xBottom ;矩形支持操作很多,比如OffsetRect (&rect, x, y) ;(将矩形移动);IntersectRect (&原创 2012-06-05 22:25:39 · 2507 阅读 · 1 评论 -
windows程序设计(12):绘制自己的控件
上一小节中虽然也提到了绘制自己控件,但是由于时间紧迫,只是光有一个空壳子,里面并没有实际的内容,这次专门设计一个自己的控件。在这个程序中,设计了两个控件,一个显示4个指向朝外的三角形,点击它会使客户区变大;另一个里面有4个指向朝里的三角形,点击它是得客户区缩小。程序的关键点有两个:1是如何响应自己画的按钮的消息,2是如何画自己的按钮。先看程序:/*---------------------原创 2012-06-06 17:24:48 · 1739 阅读 · 0 评论 -
windows程序设计(25):我的股市软件
大约花了6天时间,依据上课的内容,我也大概写了一下股市软件。顺便记一下感想与经验:1.上课讲的股市软件,程序基本上网上都能搜到,而且是通过那个.dll来替代真实数据的,所以我也能利用它自己写。2.吐槽一句那个dll有一个致命的bug。就是成交量,发出的应该是某一时刻之前的所有成交量,这点没错,但是它是一个不断增大的数,增到一定程度,又循环了,从一个较小的数开始了,有图为证:所以原创 2012-12-13 20:32:21 · 2515 阅读 · 13 评论