以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- VC 系统函数的积累 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=49876) |
-- 作者:卷积内核 -- 发布时间:7/13/2007 3:22:00 PM -- VC 系统函数的积累 一. CWnd::SetTimer 安装一个系统定时器 UINT_PTR SetTimer(UINT_PTR nIDEevent,UINT nElapse,void(CALLBACK*lpfnTimer) (HWND,UINT,UINT_PTR,DWORD)); Parameters: nIDEvent:指定一个非零定时器标志符,nElase:指定暂停时间,以毫秒为单位。 lpfnTimer:指定应用程序提供的时间过程的地址,时间过程处理计时消息。假如 这个参数为空,WM的计时消息将被放置在应用程序消息队列中,被CWnd对象处理。 Return Value: 成功返回为非零,失败返回为零。应用程序传递这个值向KillTimer成员函数来 取消定时器。 Remarks: 暂停值被指定后,每隔这个时间系统将发出一个WM timer 消息向应用程序队列或 者传送这个消息向应用程序定义的时间过程回复函数。 时间回复函数不需要指定的时间过程,但它必须按如下定义: void CALLBACK EXPORT TimerProc( HWND hwnd,//handle of CWnd that called SetTimer UINT nMsg,//WM_TIMER UINT nIDEvent,//timer identification DWORD dwTimer//system time);定时器是一个有限制的全局变量,所以应用程序 必须检查被SetTimer 函数返回的值来验证这个定时器确实是有用的。 二. Windows Data Types: 1. DWORD:32-bit unsigned integer.2.DWORD_PTR:无符号长整型用于精密计算。 3.HANDLE:一个对象的地址。LPARAM:消息参数。4、HINSTANCE:handle to instance 5.LPHANDLE:一个handle 的指针6、HWND:handle to a window. 窗体句柄:在创建一个窗体之后,创建函数返回一个唯一标志这个窗体的窗体句柄,一个 窗体句柄有HWND这个数据类型,一个应用程序必须使用这个数据类型来声明一个变量取获取 这个窗体句柄,一个应用程序使用这个句柄在其它函数中操作这个窗体的动作。 应用:在调用DLL函数前必须理解的一个重要概念就是句柄,句柄是一个32位的正整数, Microsoft-Windows-用它来识别窗体或其他对象,例如字体或位图。 在Windows中,窗口可以有许多种,窗口可以是屏幕上的一块矩形封闭区域,比如您熟悉的 应用程序窗口,窗体上的控件(例如列表框或滚动条)也可以是窗口,但并不是所有类型的控件都是窗口,桌面上的图标和桌面本身也是窗口。因为所有这些类型的对象都是窗口,所以 Windows可以用类似的方式处理它们,Windows给每个窗口一个唯一的句柄,通过句柄操纵 该窗口,许多API函数可返回句柄或者接受句柄作参数。 创建窗口时,Windows给它指派一个句柄,窗口消失后句柄被释放,虽然句柄在窗口的整个 生存期内保持不变,但不能保证某窗口在被损坏并重新创建后还使用原来的句柄。所以,如果 在变量中存储了一个句柄,请记住窗口损坏后句柄就失效了。 例如:GetActiveWindow函数就可以返回窗口的句柄,这里的窗口时一个当前活动的应用 程序窗口。GetWindowText函数接受窗口的句柄,如果该窗口有标题,则返回标题,下面 的过程用GetActiveWindow返回活动窗口的句柄,用GetWindowText返回该窗口的标题: Declare Function GetActiveWindow Lib “user32”() As Long Declare Function GetWindowText Lib “user32” Alias “GetWindowTextA”_ (ByVal Hwnd As Long,ByVal lpString As String,ByVal cch As Long) As Long Function ActiveWindowCaption() As String Dim strCaption As String Dim lngLen As Long ‘创建由空字符填充的字符串 strCaption=String$(255,vbNullChar) ‘返回字符串长度。 lngLen=Len(strCaption) ‘调用GetActiveWindow,返回活动窗口的句柄, ‘把句柄连同字符串和字符串长度一起传递给GetWindowText。 If(GetWindowText(GetActiveWindow,strCaption,lngLen)>0) Then ‘返回Windows写到字符串中的值。 ActiveWindowCaption=strCaption End If End Function GetWindowText函数有3个参数:窗口句柄;准备接受窗口标题的NULL结束字符串;以及该字符串的长度。 7.lpvoid:任何一种类型的指针。 三、SetupDiGetClassDevs: 这个函数可获取一个信息集,这个信息集包含一个指定类的所有设备,为了获取一个 远程计算机设备的信息,需调用SetupDiGetClassDevsEx函数。 HDEVINFO SetupDiGetClassDevs(const GUID *ClassGuid, PCTSTR Enumerator,HWND hwndParent,DWORD Flags); Parameters: ClassGuid:一个GUID类的指针,这个GUID类是为设备类或接口类,这个参数是可选的 假如DIGCF_DEVICEINTERFACE标志是提前规定好的,则ClassGuid代表一个接口类,否则 代表一个设备类。假如DIGCF_ALLCLASSES标志是提前规定好的,这个参数将被忽略, 结果串包含所有将被安装类的设备。 Enumerator:假如DIGCF_DEVICEINTERFACE 标志被设置,那么这个参数是一个可选指针, 这个指针指向一个非空字符串,这个字符串指定一个特定设备的PnP名字,这个函数 检测这个特定设备仅仅决定它是否存在接口对于请求接口的类,假如DIGCF_DEVICEINTERFACE 标志不被设置,这个参数是一个可选指针指向一个非空字符串指定PnP计数器的名字为 了一些重要设备。如果这个参数为空,这个函数获取系统中所有设备的信息。 hwndParent:高层次的窗体用于用户接口。 Flags:控制选项用于建立设备信息集,这个参数可能是以下值的一个或多个。 DIGCF_ALLCLASSES:返回安装设备的目录,假如这个标志被设置,ClassGuid参数 可被忽略。DIGCF_DEVICEINTERFACE:返回设备,这个设备提供由ClassGuid 类指定的接口。DIGCF_PRESENT:仅返回目前存在的设备,DIGCF_PROFILE:仅返回 属于硬件的设备。 Return Values: 假如这个函数成功,返回值是一个设备信息集的句柄。假如这个函数失败,返回值是 INVALID_HANDLE_VALUE. 四.Sprintf,swprintf: 写规定好的格式到一个字符串中 int sprintf(char *buffer,const char *format[,arqument]…); parameters:buffer:输出的储存地址,count :可存储的字符的最大数量。 Format:格式控制字符串,argument:可选变量。 Return Value:写入的字符串的数量。 五.Memcpy,wmemcpy:在两个buffers之间拷贝字符串。 Void *memcpy(void *dest,const void *src,size_t count); Wchar_t *wmemcpy(wchar_t *dest,const wchar_t *src,size_t count); Parameters: Dest:新的buffer,src:老的buffer,count:需拷贝的字节数。 Return Value:新buffer的数值。 六.Strstr,wcsstr,_mbsstr: 要搜索的字符串第一次出现的地方,char *strstr(const char *string, const char *strseach); Parameters: String:非空母字符串,strsearch:非空子字符串。 Return Value:返回一个子字符串在母字符串第一次出现的位置的指针,如果为空 则表示子字符串没有在母字符串中出现,如果子字符串为零,此函数将返回母字符串。 七._strupr,_wcsupr,_mbsupr 将一个字符串转化为大写形式。Char *_strupr(char *string); Parameter:string:要被转换的字符串。 Return value: |
-- 作者:卷积内核 -- 发布时间:7/13/2007 3:22:00 PM -- 七.SetScrollPos Function: 这个函数建立滚动块在指定滚动条的位置,如果被请求,重新刷新来显示滚动块的新位置, int SetScrollPos(HWND hWnd,int nBar,int nPos,BOOL bRedraw); Parameters: hWnd:滚动条控制的句柄,这个值依赖于nBar参数的值。 nBar:指定被设置的滚动条,这个参数可能是下列中的一个: SB_CTL:设定滚动块的位置,这个参数必须是滚动条的句柄。 SB_HORZ:设定水平滚动条的位置, SB_VERT:设置垂直滚动条的位置。 nPos:指定滚动块的新位置, bRedraw:指定滚动条是否重新刷新显示。 Return Value: 假如这个函数成功,返回值是滚动块先前的位置,如果失败返回零。 八.CWnd::OnHScroll 当用户单击水平滚动条时,框架调用这个成员函数 void OnHScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar); Parameters: nSBCode:指明用户请求属于下面情况的哪一种: SB_LEFT:离左边较远,SB_ENDSCROLL:滚动条的末尾,SB_LINELEFT:滚动条的左边。 SB_LINERIGHT:滚动条的右边,SB_PAGERIGHT:一个页的右边, SB_THUMBPOSITION:水平滚动条的绝对位置,SB_THUMBTRACK:拖动滚动块到指定的位置。 nPos:指定滚动块的位置假如滚动条的编码是SB_THUMBPOSITION或者SB_THRMBTRACK. pScrlollBar: 假如滚动条信息来自滚动条控制,包含一个控制的指针,假如用户单击滚动条,这个参数 为空。这个指针可能是暂时的,不能存储为后来使用。 九.CClientDC Class: class CClientDC:public CDC Remarks:CClientDC类是从CDC类派生而来,在构造函数中通过调用GetDC函数,在析构 函数中释放,这表示与CClientDC对象有关的device context是用户区域。 Device Contexts:所有有关绘画的调用都是通过device-context 对象来完成的,Device Contexts 封装了所有有关绘画的Windows APIs函数。 十.GetPrivateProfileString: GetPrivateProfileString函数用来获取一个字符串从一个指定部分在一个初始化的文件里, DWORD GetPrivateProfielString( LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString, DWORD nSize,LPCTSTR lpFileName); Parameters: lpAppName:指明一个非空字符串指定包含关键字的部分名字,假如这个参数为空,这个 函数拷贝所有部分名字向提供的缓存器。 lpKeyName:关键字的名字 lpDefault:指向一个非空默认字符串,假如lpKeyName 关键字没有被发现在初始化的文件 里,这个函数拷贝默认的字符串向lpReturnedString的缓存器里,这个参数不能为空。 lpReturnedString: 指向收到获取字符串的缓存器, nSize:被lpReturnedString指向的缓存器的大小。 lpFileName:一个非空字符串指定初始化文件的名字,假如这个参数没有包含一个完全 的路径名,系统将会搜索Windows目录下的所有文件。 十一、GetModuleFileName: 这个函数用来获取指定模块的完全的路径,为了指定包含模块的过程,可使用GetModuleFileNameEx函数。 DWORD GetModuleFileName(HMODULE hModule,LPTSTR lpFilename,DWORD nSize); Parameters: hModule:当前被请求模块的句柄,如果这个参数为空,这个函数获取当前过程正在执行 文件的路径。LpFilename:指向一个寄存器,这个寄存器用来储存上述的路径, nSize:代表上述寄存器的大小,以字符为单位。 Return Values: 如果这个函数成功,返回值是拷贝到寄存器的字符串的长度,如果这个寄存器太小不能 储存上述路径名,将会截去多余的部分。 Remarks:如果一个Dll被两个过程装载,这两个过程的Dll的文件名字可能不同 十二、SetROP2: 这个函数设定当前前景混合谋式,GDI使用前景混合模式并结合画笔和填充对象的内部。 前景混合模式定义怎样从画刷选择颜色 int SetROP2(HDC hdc,//handle to DC int fnDrawMode//drawing moce); Parameters: Hdc:设备环境的句柄,fnDrawMode:指明混合模式,这个参数可能是下列值中的一个: Return Values: 假如这个函数成功,返回值指明以前的混合模式。如果这个函数失败,返回值是零。 十三、 DLL 应用程序与DLL的区别:1)对于最终用户,最明显的区别DLLs是不 能被直接执行的,2)从系统的观点,有两点基本的区别:一是应用程序在运行 的过程中可有多个实例,但DLL仅能一个实例。二是应用程序可拥有自己的 一些东西例如栈、全局变量、文件句柄和消息队列,但DLL不可以。 十四、malloc 分配内存块:void *malloc(size_t size);parameter:size:Bytes to allocate. Return Value:返回一个指向被分配地址的指针,或者为空假如没有充足的 空间,假如空间为0,分配一个零长度的项在堆中并返回一个那个项目的 一个指针,总是检验返回值,即使被请求的内存非常小。 十五、ofstream:
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
2,937.500ms |