ExitWindowsEx()函数
功能∶关闭Windows
用法∶ExitWindowsEx(1,1);
FreeLibrary32W()函数
原形:DWORD FAR PASCAL FreeLibrary32W(HINSTANCE hLibModule)
功能:在16位程序中释放32位的DLL
GetProcAddress32W()函数
原形:LPVOID FAR PASCAL GetProcAddress32W(HMODULE hModule,LPCSTR lpszProc)
其中∶hModule=handle of DLL module
lpszProc=name of function
功能:在16位程序中获得32位DLL中函数的地址(32位)
LineTo()函数
在BC++Buider中的用法:
LineTo((HDC)Image1->Canvas->Handle,横坐标,纵坐标);
其中使用了TImage构件。
LoadLibraryEx32W()函数
原形:HINSTANCE FAR PASCAL LoadLibraryEx32W(LPCTSTR lpLibFileName,HANDLE hFile,DWORD dwFlags)
功能:在16位代码中调用32位的DLL
用法:HINSTANCE hInstance=LoadLibraryEx32W("***.DLL",NULL,0);
lstrlen()函数
功能∶获取字符串的长度
用法∶int lenth=lstrlen("字符串");
MessageBeep()函数
用法:MessageBeep(0);
MessageBox()函数
用法:MessageBox((HWND)Application->Handle,"内容","标题",方式);
其中方式有:MB_OK,MB_OKCANCEL,MB_YESNOCANCEL,MB_RETRYCANCEL等。
返回值:未创建返回0,成功则返回IDOK,IDYES,IDNO,IDCANCEL,IDABORT等。
MoveToEx()函数
在BC++Buider中的用法:
MoveToEx((HDC)Image1->Canvas->Handle,横坐标,纵坐标,NULL);
其中使用了TImage构件。
注:最后一个参数是返回原先位置的指针结构。
PostMessage()函数
功能∶向指定窗口发送消息,立刻返回。消息放到窗口的应用程序对列中。
用法∶PostMessage(窗口句柄,消息,wParam参数,lParam参数);
在BC++Builder中,窗口句柄=GetWindow((HWND)Application->Handle,GW_HWNDPREV);
返回值∶0(失败)
RegCloseKey()函数
功能∶释放注册表中指定关键字的句柄
原形∶LONG RegCloseKey(HKEY hkey)
RegDeleteKey()函数
功能:在注册表中删除一个键
原形:LONG RegDeleteKey(HKEY hkey,LPCTSTR lpszSubKey)
RegDeleteValue()函数
功能:在注册表中从一个键中删除一个值
原形:LONG RegDeleteValue(HKEY hkey,LPCTSTR lpszValue)
(hkey=键句柄;lpszValue=要删除的值名)
RegOpenKeyEx()函数
功能:获得一个键的句柄
原形:LONG RegOpenKeyEx(HKEY hkey,LPCTSTR lpszSubKey,DWORD dwReserved,REGSAM samDesired,PHKEY phkResult)
参数:键句柄(可以是预定义的句柄,也可以是一个以前打开的句柄),要打开的子键,0,安全性访问屏蔽码,要打开键的句柄
安全性访问屏蔽码(常量):
KEY_CREATE_LINK:允许创造一个符号链接 1
KEY_CREAT_SUB_KEY:允许创造子键 2
KEY_ENUMERATE_SUB_KEYS:允许列举子键 3
KEY_EXECUTE:允许读访问 4
KEY_NOTIFY:允许改变通知 5
KEY_QUERY_VALUE:允许查询子键数据 6
KEY_SET_VALUE:允许设置子键数据 7
KEY_WRITE: 2和7的组合
KEY_ALL_ACCESS:6、3、5、2、1、7的组合
KEY_READ:6、3、5的组合
预定义的句柄(4个):HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,
HKEY_USERS, HKEY_LOCAL_MACHINE
返回值∶成功时 ERROR_SUCCESS
调用:HANDLE hkey;
RegOpenKeyEx( , ,0, ,&hkey);
ReQueryValueEx()函数
功能∶检索与打开的注册表关键字有关的指定值名字的类型和数据
原形∶ReQueryValueEx(HKEY hkey,LPCTSTR lpszValueName,LPDWORD lpdwReserved,LPDWORD lpdwType,LPBYTE lpbData,LPDWORD lpcbData)
参数∶要检索的键句柄,要检索的键名地址,保留,值类型存储区地址,数据存储区地址,数据长度存储区地址
返回值∶成功时 ERROR_SUCCESS
RegSetValueEx()函数
功能:向一个打开的注册表的键中存储数据
原形:LONG RegSetValueEx(HKEY hkey,LPCTSTR lpszValueName,DWORD dwReserved,DWORD fdwType,CONST BYTE *lpbData,DWORD cbData)
参数:键,值,NULL,值类型,值数据,值数据长度
SendMessage()函数
功能∶向指定窗口发送消息,等到消息被处理后才返回。
消息不放到窗口的应用程序对列中。
用法∶SendMessage(窗口句柄,消息,wParam参数,lParam参数);
在BC++Builder中
窗口句柄=GetWindow((HWND)Application->Handle,GW_HWNDPREV);
返回值∶接收消息的窗口的窗口函数的返回值。
SetPixel()函数
功能:在指定坐标画点。
在BC++Buider中的用法:
SetPixel((HDC)Image1->Canvas->Handle,横坐标,纵坐标,RGB(红色值,绿色值,蓝色值));
ShellExecute()函数
原形:ShellExecute(HWND hwnd,LPCSTR lpOperation,LPCSTR lpFile,LPCSTR lpParameters,LPCSTR lpDirectory,INT nShowCmd)
参数说明:父窗口句柄(调用GetDesktopWindow()函数得到);"open"或"print";"文件名";"参数字串";"缺省目录";打开方法(SW_SHOWNORMAL)。
头文件:shellapi.h?
注:ShellExecute()函数可以通过关联执行程序(文件名用如"**.txt")。
SystemParametersInfo()函数
用法∶SystemParametersInfo(97,true,NULL,0);锁定功能键
SystemParametersInfo(97,false,NULL,0);解锁功能键
WinExec()函数
用法:WinExec("文件名.exe",窗口状态);
其中常用的窗口状态有 SW_SHOWMAXIMIZED
注意∶这是一个过时的函数。
wsprintf()函数
功能:把字符串,数字等合并成字符串(char *类型,而不是AnsiString类型)
用法:wsprintf(字符串名,"%[-][#][0][最小字符数][.最小字符数]类型",变量);
其中: - 表示填充输出右端并左对齐,
# 表示在16进制值前加0x,
0 表示输出值应用0填充字符段中未使用的宽度,
类型有s((LPSTR)字符串),u(无符号十进制整型数),
x(无符号16进制整型数),c(字符变量),d(有符号十进制整型数),
lu(无符号十进制长整型数),lx(无符号16进制长整型数)
例如:wsprintf(String1,"%s%d",(LPSTR)"窗口宽度为:",Form1->Width);
或:wsprintf(String1,"窗口宽度为:%d",Form1->Width);
从16位程序到32位程序应注意的问题:
1.Win32平台中的基本类型的长度:
char 8位; short 16; int 32;
long 32; float 32(IEEE); double 64(IEEE);
ULONG 32; USHORT 16; UCHAR 8;
DWORD 32; BOOL 32; BYTE 8;
WORD 16; LONGLONG 64; DWORDLONG 64;
LARGE_INTEGER 64。
2.函数和常数
GetWindowWord()、GetClassWord()等函数不能用了(因为句柄是32位的),
可用GetWindowLong()、GetClassLong()等函数。
把GWW_*常数改成GWL_*常数,把GCW_*常数改成GCL_*常数(GCW_ATOM例外)。
3.消息参数
wParam为32位;
在Win16中,有的lParam中储存了一个句柄(16位)和一个变量(16位,可能在HIWORD),
在Win32中,lParam就只能存放一个句柄(32位)。
用条件编译的方法编写可移植的C代码示例:
switch(message)
{
case WM_COMMAND:
#if defined(_WIN32)||defined(WIN32)
wmId=LOWORD(wParam); wnEvent=HIWORD(wParam);
#else
wmId=wParam; wnEvent=HIWORD(lParam);
#endif
}