Windows API学习笔记(1)
一、窗口处理
1.创建窗口
HWND CreateWIndow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hwndParent,HMENU hMenu,HANDLE hInstance,LPVOID lpParam)
该函数创建一个重叠式、弹出式窗口或子窗口。指定窗口的类型、窗口的标题、窗口的式样和窗口的初始位置及大小(可选项),以及窗口的父窗口、拥有者窗口和窗口菜单。
常用的子窗口样式:WS_CHILD,WS_VISIBLE,WS_BORDER常用的子窗口的类型:BUTTON,EDIT,LISTBOX,MDICLIENT,RICHEDIT,SCROLLBAR,STATIC。
HWND CreateWindowEx函数创建具有dwExStyle样式的窗口.常用的扩展样式有:WS_EX_ACCEPTFILES, WS_EX_CLENTEDGE, WS_EX_CONTEXTHELP, WS_EX_TOPMOST.
2.关闭窗口函数
BOOL CloseWindow(HWND hwnd);//最小化窗口
BOOL DestroyWindow(HWND hwnd);//销毁窗口
3.窗口间关系的函数
HWND SetParent(HWND hWndCHild,HWND hWndNewParent);//将子窗口的父窗口重新指定为新的父窗口
HWND GetParent(HWND hwnd);//函数获得hwnd的父窗口
4.遍历窗口
BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lparam)
遍历系统所有的顶层窗口,并把每个窗口句柄都传递给用户定义的遍历回调函数。直到遍历完所有窗口或lpEnumFunc返回False才返回
BOOL EnumChildWindows(HWND hwnd,WNDENUMPROC lpEnumFunc,LPARAM lparam)
遍历hwnd的所有字窗口,并把每个子窗口的句柄都传递给用户自定义的过程。
以上两个函数所用的回调函数定义是: BOOL CALLBACK EnumWindowProc(HWND hwnd,LPARAM lparam);
因此可以在回调函数中对窗口进行处理。
5.获取指定的子窗口
HWND ChildWindowFromPoint(HWND hWndParent,POINT pt);//函数首先判断hWndParent在pt处是否有子窗口,如果有返回这个子窗口的句柄。
HWND ChildWindowFromPointEX(HWND hwndParent,POINT pt,UINT uFlags);//该函数通过uFlags可以设置忽略不可见、无效和透明的子窗口。
6.窗口的大小:
BOOL GetWindowRect(HWND hwnd,LPRECT lpRect);//获得窗口的外边框矩形
BOOL GetClientRect(HWND hwnd,LPRECT lpRect);//获得窗口的客户区的矩形
BOOL SetWindowPos(HWND hwnd,HWND hWndInsrtAfter,int X,int Y,int cx,int cy,UNIT uFlags);函数改变子窗口、弹出式窗口或顶层窗口的位置、大小和Z序。
7.显示窗口
BOOL ShowWindow(HWND hwnd,int nCmdShow);//显示或改变给定的窗口
BOOL ShowWindowAsync(HWND hwnd,int nCmdShow);//设置别的线程创建的窗口的状态
BOOL OpenIcon(HWND hwnd);//将处于最小化状态的窗口恢复到以前的显示状态。
8.窗口属性设置
BOOL SetWindowText(HWND hwnd,LPCTSTR lpString);//设置窗口的标题
int GetWindowText(HWND hwnd,LPTSTR lpString,int nMaxCount);//获取给定窗口的标题
int GetWindowTextLength(HWND hwnd);//返回给定窗口的标题的长度
9.查找窗口
HWND FindWIndow(LPCTSTR lpClassName,LPCTSTR lpWindowName);//返回一个窗口的句柄,该窗口的类由lpClassName参数给出,其窗口名字或标题由lpWindowName函数给出,不查找子窗口。
HWND FindWindowEx(HWND hwndParent,HWND hwndCHildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);函数查找子窗口的句柄。
HWND WindowFromPoint(POINT point);该函数返回所给点的窗口,point必须是屏幕中一点的屏幕坐标。