07 2007 档案

摘要:以前已经介绍过直接点击关闭按钮来关闭应用程序,但想删除一个窗口对象,需要用到什么函数的呢?比如创建了30个窗口,想把第12个窗口关闭删除掉,那就需要使用函数DestroyWindow。当调用DestroyWindow函数后,操作系统就会进行一系列的删除动作,先发送WM_DESTROY消息,接着发送WM_NCDESTROY消息。如果这个窗口还有子窗口或者是其它窗口的所有者,就需要给所有子窗口发送删除消息。函数DestroyWindow声明如下:WINUSERAPIBOOLWINAPIDestroyWindow( __in HWND hWnd);hWnd是要删除的窗口句柄。调用这个函数的例子如下: 阅读全文
posted @ 2007-07-31 08:10 ajuanabc 阅读(197) 评论(0) 推荐(0) 编辑
摘要:上一次介绍了怎么样显示对话框的函数,那么怎么样关闭对话框呢?这就需要使用到函数EndDialog。这个函数只能在对话框的消息处理函数里使用,并且这个函数调用之后,没有立即就删除对话框的,而是设置了操作系统里的结束标志。当操作系统查检到有这个标志时,就去删除对话框的消息循环,同时也去释放对话框占用的资源。其实对话框的生命周期是这样的,先由函数DialogBox创建对话框,这样函数DialogBox完成创建对话框但还没有显示前会发出消息WM_INITDIALOG,让对话框有机会初始化上面所有窗口或控件的显示,比如设置文本框的字符串等。最后当用户点出确定或者取消的按钮,就收到两个命令IDOK或IDC 阅读全文
posted @ 2007-07-30 08:34 ajuanabc 阅读(235) 评论(0) 推荐(0) 编辑
摘要:在LCC里使用代码表来表示代码块,前端把所有代码属性放到代码表里,后端根据代码表来生成代码,它的结构如下:#001//代码表结构定义.#002//蔡军生 2007/07/27#003struct code#004{#005 //代码表的类型.#006 enum KindType#007 {#008 Blockbeg, //块的开始.#009 Blockend, //块的结束.#010 Local, //局部变量.#011 Address, //#012 Defpoint, //定义点,断点可设置的地方.#013 Label, //标号代码块. #014 Start, //代码表入口. #015 阅读全文
posted @ 2007-07-27 23:10 ajuanabc 阅读(166) 评论(0) 推荐(0) 编辑
摘要:对话框是比较常用的窗口,比如当你想让用户输入一些参数时就可以使用对话框。或者提示一些警告的信息,都是可以使用对话框的。比如当你拷贝文件时,Windows就会提示一个拷贝文件的进度对话框。对话框的使用范围比较广,并且它在设计时就可以看到运行的结果模样,这样方便设计。但对话框又分为两类,一种对话框运行后,一定要用户关闭那个对话框后才能返回到父窗口;一种对话框是不需要关闭后就可以直接返回父窗口。因此,软件开发人员就要考虑这个对话框的结果是否会影响后面的操作,如果这个对话框的结果跟后面的操作没有因果关系的,可以设置为第二种对话框。像拷贝文件的对话框就是第二种的对话框,称作无模式的对话框。如果设置为第一 阅读全文
posted @ 2007-07-27 08:41 ajuanabc 阅读(676) 评论(0) 推荐(0) 编辑
摘要:当人们使用软件时,大多数是想看到自己所需要的结果,比如玩RPG游戏,就是想看到自己所操作的主角做各种各样的事情。在2D的RPG游戏里,其实做的事情,就是不断地更新画面,也就是不断地显示BMP的图片。在普通的程序里,大多也是显示各种文本和图片的,但是有一种类型的应用程序是不怎么显示结果的,那就是服务程序。不管怎么样,只要我们想看到程序所执行后的结果,就需要在程序里显示出来。也就是需要调用BeginPaint和EndPaint函数。BeginPaint函数的作用是告诉Windows系统,要开始向显示卡输出内容了,把这次显示的操作请求放到系统显示队列里。由于系统上的显示卡往往只有一个,那么这种资源是 阅读全文
posted @ 2007-07-26 08:38 ajuanabc 阅读(217) 评论(0) 推荐(0) 编辑
摘要:自然界面里,各种生物都是有其生命周期的。程序也是有其生命周期的,创建时就是它出生了,当它运行工作中就是成年期,最后少不了要死亡的,那么程序的死亡是怎么样出现的呢?像以前介绍函数GetMessage里是使用一个循环不断地检测消息,周止复始的,是不可能出现死亡的,但它会检测到消息WM_QUIT就退出来。那现在问题是谁发送WM_QUIT消息出来呢?这就是PostQuitMessage函数所做的工作。当你点击窗口右上角的关闭时,Windows就会把窗口从系统里删除,这时就会发出消息WM_DESTROY给窗口消息处理函数WindowProc,WindowProc收到这条消息后,最需要做的一件事情就是调用 阅读全文
posted @ 2007-07-25 08:27 ajuanabc 阅读(159) 评论(0) 推荐(0) 编辑
摘要:JS文件如下/*moo.fx pack, effects extensions for moo.fx.by Valerio Proietti (http://mad4milk.net) MIT-style LICENSEfor more info visit (http://moofx.mad4milk.net).Friday, April 14, 2006v 1.2.4*///smooth scrollfx.Scroll = Class.create();fx.Scroll.prototype = Object.extend(new fx.Base(), {initialize: funct 阅读全文
posted @ 2007-07-24 14:22 ajuanabc 阅读(195) 评论(0) 推荐(0) 编辑
摘要:前面已经介绍从系统队列里获取一条消息,然后经过快捷键的函数检查,又通过字符消息函数的转换,最后要做的事情就是调用DispatchMessage函数,它的意思就是说要把这条消息发送到窗口里的消息处理函数WindowProc。函数DispatchMessage声明如下:WINUSERAPILRESULTWINAPIDispatchMessageA( __in CONST MSG *lpMsg);WINUSERAPILRESULTWINAPIDispatchMessageW( __in CONST MSG *lpMsg);#ifdef UNICODE#define DispatchMessageDi 阅读全文
posted @ 2007-07-24 08:38 ajuanabc 阅读(246) 评论(0) 推荐(0) 编辑
摘要:TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。TranslateMessage函数用于将虚拟键消息转换为字符消息。字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。当我们敲击键盘上的某个字符键时,系统将产生WM_KEYDOWN和WM_KEYUP消息。这两个消息的附加参数(wParam和lParam)包含的是虚拟键代码和扫描码等信息,而我们在程序中往往需要得到某个字符的ASCII码,TranslateMessage这个函数就可 阅读全文
posted @ 2007-07-23 08:41 ajuanabc 阅读(176) 评论(0) 推荐(0) 编辑
摘要:<link href="old_news.css" rel="stylesheet" type="text/css"><script src="prototype.lite.js" type="text/javascript"></script><script src="moo.fx.js" type="text/javascript"></script><script src=" 阅读全文
posted @ 2007-07-22 20:58 ajuanabc 阅读(201) 评论(0) 推荐(0) 编辑
摘要:下面详细地注释了gen.c的源程序,这样看起来就比较容易理解,希望对你有所帮助。#001#include "c.h"#002#003static char rcsid[] = "$Id: gen.c 355 2007-02-18 22:08:49Z drh $";#004#005#define readsreg(p) /#006 (generic((p)->op)==INDIR && (p)->kids[0]->op==VREG+P)#007#define setsrc(d) ((d) && (d)-&g 阅读全文
posted @ 2007-07-22 17:18 ajuanabc 阅读(471) 评论(0) 推荐(0) 编辑
摘要:在LCC编译器后端,主要使用下面的节点结构来标识代码属性。#001#002//节点注释的扩展,主要是代码生成使用。#003//#004//蔡军生2007/07/21QQ: 9073204#005//#006typedef struct {#007 unsigned listed:1; //标记这是树的根节点。#008 unsigned registered:1; //寄存器是否分配#009 unsigned emitted:1; //标识已经输出指令。#010 unsigned copy:1; //标记寄存器之间的复制。#011 unsigned equatable:1; //标记存放公共表达 阅读全文
posted @ 2007-07-21 21:29 ajuanabc 阅读(171) 评论(0) 推荐(0) 编辑
摘要:/* This notice must be untouched at all times.wz_tooltip.js v. 3.38The latest version is available athttp://www.walterzorn.comor http://www.devira.comor http://www.walterzorn.deCopyright (c) 2002-2005 Walter Zorn. All rights reserved.Created 1. 12. 2002 by Walter Zorn (Web: http://www.walterzorn.com 阅读全文
posted @ 2007-07-21 20:35 ajuanabc 阅读(226) 评论(0) 推荐(0) 编辑
摘要:当应用程序运行时,用户按下快捷键,这样就产生了一个按键消息,那么Windows是怎么样把它转化为快捷键响应的消息呢?这就需要使用TranslateAccelerator函数。TranslateAccelerator函数主要的作用就是把消息跟快捷键表里定义的按键进行比较,如果发现有快捷键,就会把这个按键消息转换为WM_COMMAND或者WM_SYSCOMMAND消息给窗口的消息处理函数发送过去。函数TranslateAccelerator声明如下:WINUSERAPIintWINAPITranslateAcceleratorA( __in HWND hWnd, __in HACCEL hAccT 阅读全文
posted @ 2007-07-21 08:30 ajuanabc 阅读(266) 评论(0) 推荐(0) 编辑
摘要:LCC为了生成不同机器的目标代码,它提供了一个接口给后端的代码生成,以便可以只修改后端,就可以达到生成不同的机器代码。它的接口如下:#001//后端代码生成接口,可以写生成不同的目标代码。#002//#003//蔡军生2007/07/20QQ: 9073204#004//#005typedef struct {#006 //对齐方式的最大字节。#007 unsigned char max_unaligned_load; #008#009 //根据数据类型选择寄存器类型。#010 Symbol (*rmap)(int);#011#012 //给定单元取数到寄存器的代码。#013 void (*b 阅读全文
posted @ 2007-07-20 21:00 ajuanabc 阅读(231) 评论(0) 推荐(0) 编辑
摘要:应用程序为了获取源源不断的消息,就需要调用函数GetMessage来实现,因为所有在窗口上的输入消息,都会放到应用程序的消息队列里,然后再发送给窗口回调函数处理。函数GetMessage声明如下:WINUSERAPIBOOLWINAPIGetMessageA( __out LPMSG lpMsg, __in_opt HWND hWnd, __in UINT wMsgFilterMin, __in UINT wMsgFilterMax);WINUSERAPIBOOLWINAPIGetMessageW( __out LPMSG lpMsg, __in_opt HWND hWnd, __in UIN 阅读全文
posted @ 2007-07-20 08:51 ajuanabc 阅读(381) 评论(0) 推荐(0) 编辑
摘要:当用户使用软件时,往往有些功能是最常用的功能。作为开发人员,就需要让用户感觉到这个软件好用,这样就需要把他们最常用的功能用起来最方便,最快捷,能提高生产效率。在这方面,微软是做到家了,比如在键盘上有一个Windows键,Windows很多功能都可以通过这个键与其它键来组合成快捷键,提高使用的方便性。现在就来介绍一下怎么样让你的程序也方便使用,就是使用快捷键。函数LoadAccelerators声明如下:WINUSERAPIHACCELWINAPILoadAcceleratorsA( __in_opt HINSTANCE hInstance, __in LPCSTR lpTableName);W 阅读全文
posted @ 2007-07-19 08:41 ajuanabc 阅读(368) 评论(0) 推荐(0) 编辑
摘要:现在详细地分析寄存器分配的属性结构,它的定义如下:#001typedef struct {#002 Symbol vbl; //保存变量符号,而不是临时变量.#003 short set; //寄存器类型,比如整数,或者浮点数。#004 short number; //寄存器编号。#005 unsigned mask; //寄存器字节大小,比如EAX,还是AX。#006} *Regnode;#007#008//寄存器集合类型:整数寄存器和浮点寄存器。#009enum { IREG=0, FREG=1 };vbl是用来保存变量的符号指针。set是保存寄存器类型,比如是使用IREG整型寄存器,还是 阅读全文
posted @ 2007-07-17 22:15 ajuanabc 阅读(163) 评论(0) 推荐(0) 编辑
摘要:用单元格变色的方法来做网页导航,在网上可以经常看到,但代码有简有繁,如果运用样式表来实现,将可以节约很多代码,特别是当有很多行需用这种效果时:1.aa{ background-color:#aaa; color:#000 }.bb{ background-color:#ccc; color:#000 }<table width="200" border="0" cellspacing="1" cellpadding="0" ><tr> <td onmouseover="thi 阅读全文
posted @ 2007-07-17 02:21 ajuanabc 阅读(155) 评论(0) 推荐(0) 编辑
摘要:站易用性 43条网页设计中常犯的错误总结zt 是一篇关于网站易用性的文章,作者以亲身体会讲述了43条网站设计中常犯的错误,而无疑这些错误会大大影响网站的可用性。如今网站易用性已成为一种趋势,但纵观国内的各大网站,似乎易用性并未成为设计者们广泛理解的概念, 因此希望这篇文章对大家能有作用。1. 用户必须在几秒钟知道网站是做什么的。注意力是因特网上最有价值的货币。 如果访问者无法在几秒钟之内得知你的网站的方向,他很有可能转而访问其他网站。 你必须迅速地告诉访问者为什么要在你的网站上花费时间。 2. 让网站易于速读。因特网不是书,因此没必要使用大段的文字。 也许我访问你的网站时我正在忙于其他工作,我 阅读全文
posted @ 2007-07-11 18:29 ajuanabc 阅读(114) 评论(0) 推荐(0) 编辑
摘要:没什么特殊的效果,不过位置比较好。不会乱。在需要的页面加<SCRIPT language=JavaScript src="Mouse.js"></SCRIPT>文件如下:var pltsPop=null;var pltsoffsetX = 10;var pltsoffsetY = 12;var pltsPopbg="#FFFFEE";var pltsPopfg="#111111";var pltsTitle="";document.write('<div id=pltsTipL 阅读全文
posted @ 2007-07-11 09:05 ajuanabc 阅读(152) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示