c有sdk怎么写程序( 二 )


好在我们还可以辨认出这是一个函数声明 。再往下看是WinMain函数,又是一堆生词,我猜想你可能已经开始郁闷了 。
想一遍看懂这个程序确实困难,所以看不懂也没关系 。看不下去了可以看看书上的讲解 。
这篇文章并不是要完整分析这个程序的,hfire不可能有petzold讲的好 。在这里hfire帮你分析一下一些陌生的东西 。
首先说Windows的数据类型 。尽管这些数据类型看上去很陌生,其实它们是由C的基本数据类型define的 。
比如UINT就是unsinged int,PSTR就是pointer to string 的意思,猜猜就知道是char *。Windows还有很多系统定义的结构体,比如WNDCLASS,MSG等,这些东西见的多了就自然明白了 。
Windows还有一个重要的概念,句柄 。通过句柄就可以操作Windows对象 。
HWND,HINSTANCE,HDC等都是句柄 。再说说Windows程序的结构 。
一般有一个WinMain函数作为程序的入口点,在WinMain里面定义窗口类,进行消息循环 。消息循环就是那个普通的while循环,在其中接收消息、分发消息 。
然后是窗口函数WndProc,名字可以自己定 。在其中用一个大的switch结构检索消息,在每个case下面写处理消息的代码 。
最简单的Windows SDK程序只要写这两个函数就够了 。等你的程序写长了,就要把特定的消息处理代码写成函数,以便在处理消息时调用,甚至你可以使用C++来写程序 。
等你熟悉这种结构以后,就可以任意发挥了 。其他的不想说太多,学SDK很重要的是不要期望在开始时把每行代码都搞清楚 。
学习的方法 当然是多写程序了 。最好每个主题都写一个 。
从一开始的窗口,文本显示到图形显示、控件、对话框,多写就能领会Windows编程的内涵 。当第一部分学的差不多了,可以写一个综合点的程序 。
最后你会发现你可以写很长的程序了,1000多行也不算长,但对于当时学C时是难以想象的 。还有重要的是多上一些专门的网站,比如VC知识库()和VC之路(有一本很好的教程,不过现在网站的东西都没了,正在恢复),另外mctl.h的声明,一般加到stdafx.h即可 。
#include // Add by liuzhi.c 在程序里面,需要加入使用common control的宏:InitCommonControls();否则,程序会闪一下就会退出的 。因为程序没有申请到该有的资源 。
加入对slider control的声明后 。需要处理slider control的一些事件 。
这是需要特别注意的是,slider control不像radio control那样子直接用SDK API就可以处理了 。需要特殊的消息机制,下面一一道来:2.1 获得控件的窗口句柄 。
slider control也是一个窗口,是对话框的子窗口,因此,要用GetDlgItem来实现:backlight_wnd = GetDlgItem(hDlg, IDC_SLIDER_BACKLIGHT);2.2 设置slider control的区间,是给slider control发TBM_SETRANGE消息,比如我设置0到100就是:SendMessage(backlight_wnd,TBM_SETRANGE, (WPARAM)1,(LPARAM)MAKELONG(0,100));2.3 设置滑块的初始位置是发送TBM_SETPOS消息来实现的: SendMessage(backlight_wnd,TBM_SETPOS, (WPARAM)1,(LPARAM)BacklightPercentage);2.4 slider control和用户的交互,则是通过WM_HSCROLL消息来实现的,需要在WM_HSCROLL的响应函数里面发送TBM_GETPOS消息得到当前滑块的位置:BacklightPercentage = (unsigned char)SendMessage(backlight_wnd,TBM_GETPOS,0,0);2.5 旁边的一个当前刻度的数字的说明,需要先设定一个Static text文本控件,然后动态给该控件发送WM_SETTEXT消息来实现动态的更新数字:SendMessage(GetDlgItem(hDlg, IDC_STATIC_BACKLIGHT_VALUE), WM_SETTEXT, 0, LPARAM(szBacklightPercentage));最后面的那个参数,szBacklightPercentage是一个字符串 。3 如何在对话框里面显示图标或者图片:如果程序没有图片,总是显得十分的死板,因此,在程序上面显示图片,图标是必要的美化程序的方法 。