以文本方式查看主题

-  计算机科学论坛  (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:


ReadFile:
This function reads data from a file,starting at the position indicated by the
File pointer.After the read operation has been completed,the file pointer is
Adjusted by the number of bytes actually read.
BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped);
Parameters:
hFile:[in] Handle to the file to be read.The file handle must have been
created with GENERIC_READ access to the file.This parameter cannot
be a socket handle.
lpBuffer[out] Pointer to the buffer that receives the data read from the file.
nNumberOfBytesToRead[in]:Number of bytes to be read from the file.
lpNumberOfBytesRead[out]:Pointer to the number of bytes read.ReadFile
sets this value to zero before doing taking action or checking errors.
lpOverlapped[in]Unsupported ,set to null.
(Remarks:In order to grasp the C++,we have to learn how to use MSDN.
First:we have to grasp data type of parameters and data type means.
Second:In and out is compulsory to any function,before we only
Provide [in] in C language,to [out] we often use [printf] to display in the
Screen.So we first change the above attitude.When we meet a new function,
We should try to learn it.Then we inquiry those who have used it.To verify
My understands,at the beginning there must be some differences,I must
Find the reason that I misunderstand.Little by little I think I can grasp
MSDN well.”We can obtain much more than we
十六:strtok,wcstok
Find the next token in a string
Char *strtok(char *strToken,const char *strDelimit);
Parameters:strToken:String containing token(s).
strDelimit:Set of delimiter characters
Return value:All of these functions return a pointer to the next token found in strToken.
They return NULL when no more tokens are found.Each call modifies strToken by
Substituting a NULL character for each delimiter that is encountered.
Header file:<string.h>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
2,937.500ms