摘要:
随着时代的发展,计算机技术发展得很快。CPU已经从单核心到多核心的转变,也就是一个CPU里具备了同时做多件事情的能力,而不是过去的分时复用了,而是实实在在地做多件事情。因此,开发软件也进入了一个新时代,就是多线程软件的开发时代。如何合理地分配多个线程同时运行,是提高软件效率的关键因素了。比如像网络游戏的客户端里,就可以使用一个线程不断地更新游戏的界面,分配另外一个线程不断地发送和接收网络的数据,这样CPU的两个核心都在不断地工作。如果还像以前那样使用一个线程的话,就会发现只有一个内核在做事情。当然使用线程的编程模型,也会大大地简化软件的复杂性。下面就来使用线程的API函数。函数CreateTh 阅读全文
posted @ 2007-09-22 22:53
ajuanabc
阅读(155)
评论(0)
推荐(0)
摘要:
当你想控制一个现有的窗口程序时,就需要获取那个程序的窗口句柄。比如有一些黑客软件需要查找到窗口,然后修改窗口的标题。在外挂流行的今天,惊奇地发现它们也可以修改输入窗口的文字。这其中,就需要使用到FindWindowEx函数来定位窗口。下面就来使用这个函数来实现控制Windows里带的计算器程序。打开计算器程序,最小化在状态下面,运行本例子,点击创建按钮后,就可以点按钮,就会把计算器显示在最前面。函数FindWindowEx声明如下:#if(WINVER >= 0x0400)WINUSERAPIHWNDWINAPIFindWindowExA( __in_opt HWND hWndParen 阅读全文
posted @ 2007-09-21 21:39
ajuanabc
阅读(284)
评论(0)
推荐(0)
摘要:
创新是永恒的追求。当大家习惯Windows的界面时,又想自己开发的软件耳目一新的感觉,那么就得要改变窗口的形状,比如心形的窗口,总之是不规则的窗口。这时就需要使用到叫做区域的技术。区域就是把不同的形状的图形进行组合,然后可以填充它,或者在它那里显示。比如MSN左边的TAB按钮,应就是区域的运用就可以实现它了。函数CreateRectRgn声明如下:WINGDIAPI HRGN WINAPI CreateRectRgn( __in int x1, __in int y1, __in int x2, __in int y2);x1和y1是区域左上角的X轴和Y轴坐标。x2和y2是区域右下角的X轴和Y 阅读全文
posted @ 2007-09-20 21:24
ajuanabc
阅读(177)
评论(0)
推荐(0)
摘要:
当你开发一款年轻人使用的软件时,肯定想用一点动感的特性来吸引他们。比如QQ软件就有这个特性,当你把它放到桌面边上时,就会自动隐藏起来,当你的鼠标放到那里时,就会自动慢慢移动出来,副有动感的特性,肯定让年轻人喜欢上它的。还有当你开发软件时,想先动态地显示公司的商标,或者公司的宣传材料时,就会使用到闪屏的效果。其实这两个特性都可以使用API函数AnimateWindow来实现的,下面就来介绍怎么使用它。函数AnimateWindow声明如下:#if(WINVER >= 0x0500)WINUSERAPIBOOLWINAPIAnimateWindow( __in HWND hWnd, __in 阅读全文
posted @ 2007-09-19 21:50
ajuanabc
阅读(184)
评论(0)
推荐(0)
摘要:
有一天,用户突然对我说,你这个窗口能不能放到最顶端,这样操作和打开文件就很不方便了。这个功能就需要改变窗口的属性了。比如大家使用QQ时,就有一个功能,设置QQ的窗口在最顶端,不管你选择了什么窗口,QQ的界面永远都在最前面。又像FlashGet的状态查看窗口,一直保持在窗口的最前端,让你看到当前下载的流量情况。现在股票那么火爆,很多人一边工作,一边查看股票,如果错失了机会,又少了很多钱的啊!面对这样的需求,就需要把一些窗口永远摆在最前面,这样起到提示用户的作用。因此,学会使用SetWindowPos函数,就成为能否让软件满足客户需求的关键了。与MoveWindow函数相比,SetWindowPo 阅读全文
posted @ 2007-09-17 20:58
ajuanabc
阅读(226)
评论(0)
推荐(0)
摘要:
当你设计一个对话框的窗口时,就需要布局好所有按钮、文本显示框等等,由于每个按钮都是一个窗口,那么就需要移动这些窗口到合适的位置,这时就需要使用到MoveWindow函数。或者当你的界面需要动态地修改按钮位置,比如窗口放大了,按钮就需要跟着移动,否则按钮还在原来的位置,放大也不会移动按钮的位置,这时也需要使用MoveWindow函数重新设置按钮的位置。只要你想移动窗口,就可以考虑使用这个函数来实现。函数MoveWindow声明如下:WINUSERAPIBOOLWINAPIMoveWindow( __in HWND hWnd, __in int X, __in int Y, __in int nW 阅读全文
posted @ 2007-09-16 12:48
ajuanabc
阅读(219)
评论(0)
推荐(0)
摘要:
在开发软件里,有时候需要改变窗口上标题的文字。比如按钮上的文字,为了适应多国语言的显示,就需要改变它显示的内容。这时就需要使用SetWindowText函数来改它的内容。下面的例子就实现改变按钮的标题。函数SetWindowText声明如下:WINUSERAPIBOOLWINAPISetWindowTextA( __in HWND hWnd, __in_opt LPCSTR lpString);WINUSERAPIBOOLWINAPISetWindowTextW( __in HWND hWnd, __in_opt LPCWSTR lpString);#ifdef UNICODE#define 阅读全文
posted @ 2007-09-14 21:36
ajuanabc
阅读(241)
评论(0)
推荐(0)
摘要:
在软件的开发过程里,大部份时间是在做什么呢?其实是在调试代码,毕竟人类的思维方式是从简单到复杂的过程,自然的认知过程也是从简单到复杂。因此,开发软件时,第一个版本总是先写简单的,然后慢慢地添加出错处理上去,也把一些没有想到的情况添加进去,那些没有想到的错误,就叫做BUG。要根除一个软件里的BUG,是一件不容易的事情,不但要对这个软件流程比较熟悉,还要对这个软件的目标比较了解,还需要对这个开发平台了解,当然还需要不断地测试不同的条件是否出错。软件的条件组合是2的N次方,所以不可能把所有组合都测试完成,只能选择比较重要的进行测试,只要不影响软件的使用,这个软件就算是一款能够挣钱的软件了,不要希望这 阅读全文
posted @ 2007-09-13 21:14
ajuanabc
阅读(168)
评论(0)
推荐(0)
摘要:
当你需要自己显示一个与众不同的按钮时,就需要使用下面的方法来创建。当然这里也是综合地使用前面学习过的知识进行一次综合的练习。演示怎么样使用众多的API函数,这里还可以学会使用GetSysColor函数来获取系统的颜色。WINUSERAPIDWORDWINAPIGetSysColor( __in int nIndex);nIndex是系统定义的颜色索引值。调用这个函数的例子如下:#001//#002//界面显示输出.#003//#004//蔡军生2007/09/12 QQ:9073204 深圳#005//#006void CCaiWinMsg::OnDraw(HDC hDC)#007{ #008 阅读全文
posted @ 2007-09-12 21:25
ajuanabc
阅读(191)
评论(0)
推荐(0)
摘要:
使用前面介绍的CreatePen函数来画大于1的直线时,会发现直线两端全是圆角的,有时候需要画得有角,那么这样的函数就不满足需求了,这时就需要使用另一个API函数ExtCreatePen来创建合适的画笔。ExtCreatePen函数可以创建几何画笔,还可以创建装饰用的画笔,装饰的画笔是用来画一些图案使用的,这样就需要快速的算法来实现,显示比几何的画笔在速度上快很多。比如你在画GPS地图时,当需要装饰使用的图案,就可以这种画笔,会明显地提高显示的速度。函数ExtCreatePen声明如下:WINGDIAPI HPEN WINAPI ExtCreatePen( __in DWORD iPenSty 阅读全文
posted @ 2007-09-10 22:05
ajuanabc
阅读(199)
评论(0)
推荐(0)