一些win32 API函数

一、CreateWindowEx  //创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口(控件)

HWND CreateWindowEx(
        DWORD    dwExStyle,    //窗口的扩展风格
      LPCTSTR    lpClassName,  //已经注册的窗口类名称
      LPCTSTR    lpWindowName, //窗口标题栏的名字
        DWORD    dwStyle,    //窗口的基本风格
          int    x,          //窗口左上角水平坐标位置
          int    y,          //窗口左上角垂直坐标位置
          int    nWidth,     //窗口的宽度
          int    nHeight,    //窗口的高度
         HWND    hWndParent, //窗口的父窗口句柄
        HMENU    hMenu,      //窗口菜单句柄
    HINSTANCE    hInstance,  //应用程序实例句柄
       LPVOID    lpParam     //窗口创建时附加参数   
); //创建成功返回窗口句柄

其中:
1.dwExStyle: 指定窗口的扩展风格。该参数可以是下列值:

WS_EX_NODRAG:防止窗口被移动
WS_EX_ACCEPTFILES:指定以该风格创建的窗口接受一个拖拽文件。
WS_EX_APPWINDOW:当窗口可见时,将一个顶层窗口放置到任务条上。
WS_EX_CLIENTEDGE:指定窗口有一个带阴影的边界。
WS_EX_CONTEXTHELP:在窗口的标题条包含一个问号标志。当用户点击了问号时,鼠标光标变为一个问号的指针、如果点击了一个子窗口,则子窗口接收到WM_HELP消息。子窗口应该将这个消息传递给父窗口过程,父窗口再通过HELP_WM_HELP命令调用WinHelp函数。这个Help应用程序显示一个包含子窗口帮助信息的弹出式窗口。WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX和WS_MINIMIZEBOX同时使用。
WS_EX_CONTROLPARENT:允许用户使用Tab键在窗口的子窗口间搜索。
WS_EX_DLGMODALFRAME:创建一个带双边的窗口;该窗口可以在dwStyle中指定WS_CAPTION风格来创建一个标题栏。
WS_EX_LEFT:窗口具有左对齐属性,这是缺省设置的。
WS_EX_LEFTSCROLLBAR:如果外壳语言是如Hebrew,Arabic,或其他支持reading order alignment的语言,则标题条(如果存在)则在客户区的左部分。若是其他语言,在该风格被忽略并且不作为错误处理。
WS_EX_LTRREADING:窗口文本以LEFT到RIGHT(自左向右)属性的顺序显示。这是缺省设置的。
WS_EX_MDICHILD:创建一个MDI子窗口。
WS_EX_NOPATARENTNOTIFY:指明以这个风格创建的窗口在被创建和销毁时不向父窗口发送WM_PARENTNOTFY消息。
WS_EX_OVERLAPPEDWINDOW:WS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的组合。
WS_EX_PALETTEWINDOW:WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST风格的组合WS_EX_RIGHT:窗口具有普通的右对齐属性,这依赖于窗口类。只有在外壳语言是如Hebrew,Arabic或其他支持读顺序对齐(reading order alignment)的语言时该风格才有效,否则,忽略该标志并且不作为错误处理。
WS_EX_RIGHTSCROLLBAR:垂直滚动条在窗口的右边界。这是缺省设置的。
WS_EX_RTLREADING:如果外壳语言是如Hebrew,Arabic,或其他支持读顺序对齐(reading order alignment)的语言,则窗口文本是一自左向右)RIGHT到LEFT顺序的读出顺序。若是其他语言,在该风格被忽略并且不作为错误处理。
WS_EX_STATICEDGE:为不接受用户输入的项创建一个3一维边界风格
WS_EX_TOOLWINDOW:创建工具窗口,即窗口是一个游动的工具条。工具窗口的标题条比一般窗口的标题条短,并且窗口标题以小字体显示。工具窗口不在任务栏里显示,当用户按下alt+Tab键时工具窗口不在对话框里显示。如果工具窗口有一个系统菜单,它的图标也不会显示在标题栏里,但是,可以通过点击鼠标右键或Alt+Space来显示菜单。
WS_EX_TOPMOST:指明以该风格创建的窗口应放置在所有非最高层窗口的上面并且停留在其L,即使窗口未被激活。使用函数SetWindowPos来设置和移去这个风格。
WS_EX_TRANSPARENT:指定以这个风格创建的窗口在窗口下的同属窗口已重画时,该窗口才可以重画。由于其下的同属窗口已被重画,该窗口是透明的。

2.dwStyle:窗口的基本风格

WS_BORDER:创建一个带边框的窗口。
WS_CAPTION:创建一个有标题框的窗口(包括WS_BODER风格)。
WS_CHILD:创建一个子窗口。这个风格不能与WS_POPUP风格合用。
WS_CHILDWINDOW:与WS_CHILD相同。
WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。
WS_CLIPSIBLINGS:排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到WM_PAINT消息时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口。
WS_DISABLED:创建一个初始状态为禁止的子窗口。一个禁止状态的窗口不能接受来自用户的输入信息。
WS_DLGFRAME:创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。
WS_GROUP:指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。
WS_HSCROLL:创建一个有水平滚动条的窗口。
WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。
WS_MAXIMIZE:创建一个初始状态为最大化状态的窗口。
WS_MAXIMIZEBOX:创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。
WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。
WS_OVERLAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU - WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。
WS_POPUP:创建一个弹出式窗口。该风格不能与WS_CHILD风格同时使用。
WS_POPUPWINDOW:创建一个具有WS_BORDER,WS_POPUP,WS_SYSMENU风格的窗口,WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。
WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。
WS_SYSMENU:创建一个在标题条上带有窗口菜单的窗口,必须同时设定WS_CAPTION风格。
WS_TABSTOP:创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。
WS_THICKFRAME:创建一个具有可调边框的窗口,与WS_SIZEBOX风格相同。
WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。
WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。
WS_VISIBLE:创建一个初始状态为可见的窗口。
WS_VSCROLL:创建一个有垂直滚动条的窗口。

3.系统默认的类名(可直接使用,无需使用RegisterClass注册,控件?)
button : 按钮
edit : 编辑框
ComboBox : 组合框
ListBox : 列表框
MDIClient : 多文档界面
ScrollBar : 滚动条
Static : ​静态组件

4.补充:可使用CW_USEDEFAULT来设定x,y的默认值

二、RegisterClassEx  //注册一个窗口类,后面调用Createwindow函数和CreatewindowEx函数中使用的窗口注册一个窗口类

RegisterClassEx (CONST WNDCLASSEX *Ipwcx);
 
1.WNDCLASSEX结构体原型如下
typedef struct
{
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCTSTR lpszMenuName;
    LPCTSTR lpszClassName;
    HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;

2.成员介绍
(1)cbSize  WNDCLASSEX 的大小。在调用GetClassInfoEx前必须要先设置它值。我们可以用sizeof(WNDCLASSEX)来获得准确的值。
(2)style  窗口类的样式,它的值可以是窗口样式值的任意组合。可以有以下的值:细看http://blog.sina.com.cn/s/blog_5059be880100xyp3.html;
(3)lpfnWndProc 指向窗口处理函数(回调函数)。处理窗口事件,像单击鼠标会怎样,右击鼠标会怎样,都是由此函数控制的。
(4)cbClsExtra 为窗口类的额外信息做记录,初始化为0。
(5)cbWndExtra 记录窗口实例的额外信息,系统初始为0.如果程序使用WNDCLASSEX注册一个从资源文件里创建的对话框,则此参数必须设置为DLGWINDOWEXTRA
(6)hInstance:本模块的事例句柄。
(7)hIcon  窗口类的图标,为资源句柄,如果设置为NULL,系统将为窗口提供一个默认的图标。
(8)hCursor 窗口类的鼠标样式,为鼠标样式资源的句柄,如果设置为NULL,系统提供一个默认的鼠标样式。
(9)hbrBackground 窗口类的背景刷,为背景刷句柄,也可以为系统颜色值,如果颜色值已给出,则必须转化为以下的HBRUSH的值
·   COLOR_ACTIVEBORDER
·   COLOR_ACTIVECAPTION
·   COLOR_APPWORKSPACE
·   COLOR_BACKGROUND
·   COLOR_BTNFACE
·   COLOR_BTNSHADOW
·   COLOR_BTNTEXT
·   COLOR_CAPTIONTEXT
·   COLOR_GRAYTEXT
·   COLOR_HIGHLIGHT
·   COLOR_HIGHLIGHTTEXT
·   COLOR_INACTIVEBORDER
·   COLOR_INACTIVECAPTION
·   COLOR_MENU
·   COLOR_MENUTEXT
·   COLOR_SCROLLBAR
·   COLOR_WINDOW
·   COLOR_WINDOWFRAME
·   COLOR_WINDOWTEXT
(10)lpszMenuName 指向一个以NULL结尾的字符串,同目录资源的名字一样。如果使用整型id表示菜单,可以用MAKEINTRESOURCE定义一个宏。如果它的值为NULL,那么该类创建的窗口将都没有默认的菜单。
(11) lpszClassName  指向窗口类的指针,LPSTR类型。
(12) hIconSm  小图标的句柄,在任务栏显示的图标,可以和上面的那个一样。

3.实例
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style            = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc    = WndProc;
wcex.cbClsExtra        = 0;
wcex.cbWndExtra        = 0;
wcex.hInstance        = hInstance;
wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32ENCRYPT));
wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW);
//wcex.hbrBackground= (HBRUSH)GetStockObject(RED_BRUSH);
wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_WIN32ENCRYPT);
wcex.lpszClassName    = szWindowClass;
wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
RegisterClassEx(&wcex);

三、DialogBox  //从一个对话框资源中创建一个模态对话框。该函数直到指定的回调函数通过调用EndDialog函数中止模态的对话框才能返回控制
1.函数原型:
int DialogBox(
HINSTANCE hInstance, //当前实例
LPCTSTR lpTemplate, //对话框模板
HWND hWndParent, //父窗口句柄
DLGPROC lpDialogFunc //对话框的过程函数
);

四、SetWindowText  //设置指定窗口标题
1.函数原型: BOOL SetWindowText(HWNDhwnd, LPCTSTRlpString);

五、GetWindowText  //获取指定窗口的标题
1.函数原型: Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);

六、GetWindowRect  //返回指定窗口的边框矩形的尺寸
1.函数原型: BOOL GetWindowRect(HWND hWnd,LPRECT lpRect); //lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标

七、SetTimer  //创建或设置一个定时器,该函数创建的定时器与Timer控件(定时器控件)效果相同
1.函数原型: UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT nElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);

八、KillTimer  //移除先前用SetTimer设置的定时器
1.函数原型: BOOL 
WINAPI 
KillTimer(
_In_opt_HWNDhWnd, //窗口句柄
_In_UINT_PTRuIDEvent //定时器ID
);

九、TextOut  //用当前选择的字体、背景颜色和正文颜色将一个字符串写到指定位置
1.函数原型: BOOL TextOut(
HDC hdc, // 设备描述表句柄
int nXStart, // 字符串的开始位置 x坐标
int nYStart, // 字符串的开始位置 y坐标
LPCTSTR lpString, // 字符串
int cbString // 字符串中字符的个数
);

DrawText  //在指定的矩形里写入格式化的正文
1.函数原型: int DrawText(
HDC hDC, // 设备描述表句柄
LPCTSTR lpString, // 将要绘制的字符串
int nCount, // 字符串的长度,如果为-1,则lpString指向的字符串被认为是以\0结束的,DrawText会自动计算字符数
LPRECT lpRect, // 指向矩形结构RECT的指针
UINT uFormat // 正文的绘制选项
);
uFormat可以是下列值的任意组合
DT_CALCRECT:这个参数比较重要,可以使DrawText函数计算出输出文本的尺寸。如果输出文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳输出文本的最后一行。如果输出文本只有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符。出现上述任何一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本。
DT_CENTER:指定文本水平居中显示。
DT_VCENTER:指定文本垂直居中显示。该标记只在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用。
DT_SINGLELINE:单行显示文本,回车和换行符都不断行

十、SetTextColor  //设置指定DC中的文字颜色,函数运行成功,返回当前DC之前的文字颜色;如果运行失败,返回CLR_INVALID
1.函数原型: COLORREF SetTextColor(
 _In_ HDC hdc, //当前 DC(device context)的句柄
 _In_ COLORREF crColor //要设置的颜色,可以使用RGB宏根据红绿蓝分量合成颜色值
);
2.实例
void OnPaint(HDC hdc){
    COLORREF color = SetTextColor(hdc, RGB(255,0,0)); //设置文字颜色为红色
    RECT rect = { 0, 0, 200, 50 };
    //在矩形中心绘制文字
    DrawText(hdc, _T("Hello World"), -1, &rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE);
    SetTextColor(hdc, color); //还原为之前的颜色, 这里不是必须的
}

十一、SetBkMode 
设置指定DC的背景混合模式(即设置文字背景是否透明?),函数运行成功,返回当前DC之前的背景模式;如果函数运行失败,返回零
1.函数原型: int SetBkMode(
  _In_ HDC hdc, //当前DC的句柄
  _In_ int iBkMode //要设置的模式,其值可以为 OPAQUE(不透明) 或 TRANSPARENT(透明)
);
2.实例
void OnPaint(HDC hdc)
{
    int mode = SetBkMode(hdc, TRANSPARENT);//设置为透明模式
    RECT rect = { 0, 0, 200, 50 };
    //在矩形中心绘制文字
    DrawText(hdc, _T("Hello World"), -1, &rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE);
    SetBkMode(hdc, mode);//还原为之前的模式, 这里不是必须的
}

十二、SetBkColor  //设置文字的背景颜色(背景模式不要设成透明),非实线间隙颜色,阴影画刷
1.函数原型:COLORREF SetBkColor(
 _In_ HDC hdc, //当前 DC(device context)的句柄
 _In_ COLORREF crColor //要设置的颜色,可以使用RGB宏根据红绿蓝分量合成颜色值
);
2.实例
(1)设置非实线间隙颜色
hdc = GetDC(hwnd);
//红色画笔 SOLID样式,12个像素宽
hCurrentPen = CreatePen(PS_DASH, 1, RGB(255, 255, 255));
hPrePen = SelectObject(hdc, hCurrentPen);//选择后 返回被替代的HPEN
SetBkMode(hdc, OPAQUE);//设置背景模式不透明 OPAQUE不透明 TRANSPARENT透明
SetBkColor(hdc, RGB(0, 255, 0));//设置DASH虚线的背景色为绿色
MoveToEx(hdc, 100, 100, NULL);
LineTo(hdc, 500, 500);
SelectObject(hdc, hPrePen);//还回去
DeleteObject(hCurrentPen);//释放掉
ReleaseDC(hwnd, hdc);
(2)设置文字背景颜色
SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHT)); //设置文字颜色
SetBkColor(hdc,GetSysColor(COLOR_INACTIVECAPTION)); //设置文字背景颜色
TextOut(hdc, 20, 370, "状态", strlen("状态")); //绘制文字

十三、GetStockObject  //获取预定义的备用笔、刷子、字体或者调色板的句柄
1.函数原型: HGDIOBJ GetStockObject(int fnObject);
2.参数fnObject: 指定对象的类型,该参数可取如下值之一:
BLACK_BRUSH:黑色画刷;DKGRAY_BRUSH:暗灰色画刷;
DC_BRUSH:在Windows98,Windows NT 5.0和以后版本中为纯颜色画刷,缺省色为白色,可以用SetDCBrushColor函数改变颜色,更多的信息参见以下的注释部分。
GRAY_BRUSH:灰色画刷笔;
HOLLOW_BRUSH:空画刷(相当于NULL_BRUSH);
NULL_BRUSH:空画刷(相当于HOLLOW_BRUSH);
LTGRAY_BRUSH:亮灰色画刷;
WHITE_BRUSH:白色画刷;
BLACK_PEN:黑色钢笔;
DC_PEN:在Windows98、Windows NT 5.0和以后版本中为纯色钢笔,缺省色为白色,使用SetDCPenColor函数可以改变色彩,更多的信息,参见下面的注释部分。
WHITE_PEN:白色钢笔;
ANSI_FIXED_FONT:在Windows中为固定间距(等宽)系统字体;
ANSI_VAR_FONT:在Windows中为变间距(比例间距)系统字体;
DEVICE_DEFAUCT_FONT:在WindowsNT中为设备相关字体;
DEFAULT_GUI_FONT:用户界面对象缺省字体,如菜单和对话框;
OEM_FIXED_FONT:原始设备制造商(OEM)相关固定间距(等宽)字体;
SYSTEM_FONT:系统字体,在缺省情况下,系统使用系统字体绘制菜单,对话框控制和文本;
SYSTEM_FIXED_FONT:固定间距(等宽)系统字体,该对象仅提供给兼容16位Windows版本;
DEFAULT_PALETTE:缺省调色板,该调色板由系统调色板中的静态色彩组成。

十四、CreatePen  //创建一个指定样式、宽度和颜色的画笔
1.函数原型: HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
2.实例: hpen = CreatePen(PS_SOLID, 5, RGB(255,0,255));

十五、CreateSolidBrush  //创建一个指定颜色的画刷
1.函数原型: HBRUSH WINAPI CreateSolidBrush( __in COLORREF color);
2.实例: hbrush = (HBRUSH)CreateSolidBrush(RGB(0, 255, 0));

十六、SelectObject  //选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象
1.函数原型: HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);
2.参数说明
(1)hdc:设备上下文环境的句柄
(2)hgdiobj:被选择的对象的句柄,该指定对象必须由如下的函数创建。
位图:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有内存设备上下文环境可选择位图,并且在同一时刻只能一个设备上下文环境选择位图)。
画刷:CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。
字体:CreateFont, CreateFontIndirect。
笔:CreatePen, CreatePenIndirect。
区域:CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect。
返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值:
SIMPLEREGION:区域由单个矩形组成;
COMPLEXREGION:区域由多个矩形组成;
NULLREGION:区域为空。
如果发生错误并且选择对象不是一个区域,那么返回值为NULL,否则返回HGDI_ERROR

十七、DeleteObject  //删除一个逻辑笔、画笔、字体、位图、区域或者调色板
1.函数原型: BOOL DeleteObject(HGDIOBJ hObject);
2.参数说明: hObject:逻辑笔、画笔、字体、位图、区域或者调色板的句柄
3.实例: 
hbrush = (HBRUSH)CreateSolidBrush(RGB(0, 255, 0));
old_brush = (HBRUSH)SelectObject(hdc, hbrush);
Rectangle(hdc, 60, 370, 640, 390);
SelectObject(hdc, old_brush);
DeleteObject(hbrush);

十八、MoveToEx  //将当前绘图位置移动到某个具体的点,同时也可获得之前位置的坐标
1.函数原型: WINGDIAPI BOOL WINAPI MoveToEx( 
__in HDC hdc,  //当前设备上下文句柄
__in int x,  //新位置的X坐标
__in int y,  //新位置的Y坐标
__out_opt LPPOINT lppt //传出参数:一个指向POINT结构的指针,用来存放上一个点的位置,若此参数为NULL,则不保存上一个点的位置
);
2.实例: MoveToEx(hdc, 20, 45, NULL);

十九、LineTo  //用当前画笔画一条线,从当前位置连到一个指定的点。这个函数调用完毕,当前位置变成x,y
1.函数原型: WINGDIAPI BOOL WINAPI LineTo( __in HDC hdc, __in int x, __in int y);
2.实例
MoveToEx(hdc, 20, 10, NULL);
LineTo(hdc, 200, 100);

二十、Rectangle  //画一个矩形,可以用当前的画笔画矩形轮廓,用当前画刷进行填充
1.函数原型: BOOL Rectangle(
HDC hdc,  //设备环境句柄
int nLeftRect, //指定矩形左上角的逻辑X坐标
int nTopRect, //指定矩形左上角的逻辑Y坐标
int nRightRect, //指定矩形右下角的逻辑X坐标
int nBottomRect //指定矩形右下角的逻辑Y坐标
);
2.实例: Rectangle(hdc, 0, 0, 100, 200);

二十一、FillRect  //用指定的画刷填充矩形
1.函数原型: int FillRect(
HDC hdc, //设备环境句柄
CONST RECT *lprc, //指向含有将填充矩形的逻辑坐标的RECT结构的指针
HBRUSH hbr //用来填充矩形的画刷的句柄

);

二十二、SendMessage //向指定窗口发送消息  SendDlgItemMessage //向指定对话框中的控件发送消息
1.函数原型: 
LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM IParam);
LRESULT SendDlgItemMessage(HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam);
2.Msg类型:
(1)WM_SETFONT 设置控件字体 (注意用TextOut绘制的文字需用SelectObject修改字体)
HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);   
SendMessage(hEdit,WM_SETFONT,(WPARAM)hFont,1); //设置控件字体 

二十三、GetDlgItem //获取窗口中指定参数ID的子元素的句柄
1.函数原型: 
HWND GetDlgItem(HWND hDlg, int nIDDlgItem);

二十四、EnableWindow //允许/禁止指定的窗口或控件接受鼠标和键盘的输入,当输入被禁止时,窗口不响应鼠标和按键的输入,输入允许时,窗口接受所有的输入
1.函数原型: 
BOOL EnableWindow(HWND hWnd,BOOL bEnable);
2.参数说明: bEnable:若该参数为TRUE,则窗口被允许。若该参数为FALSE,则窗口被禁止

二十五、ShowWindow //设置指定窗口的显示状态
1.函数原型: 
BOOL ShowWindow(HWND hWnd, int nCmdShow);
2.参数说明: nCmdShow参数可以为下列值之一
(1)SW_HIDE(0)  //隐藏窗口,大小不变,激活状态不变
(2)SW_SHOW(5)  //在窗口原来的位置以原来的尺寸激活和显示窗口
(3)SW_MAXIMIZE(3)  //最大化窗口,显示状态不变,激活状态不变
(4)SW_MINIMIZE(6)  //最小化指定的窗口并且激活在Z序中的下一个顶层窗口
(5)SW_RESTORE(9)  激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志
...

二十六、UpdateWindow  //更新指定窗口的客户区
1.函数原型:
BOOL UpdateWindow(HWND hWnd);
2.函数说明:如果窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。

二十七、InvalidateRect  //向指定的窗体更新区域添加一个矩形,然后窗体跟新区域的这一部分将被重新绘制
1.函数原型:
BOOL InvalidateRect(
HWND hWnd,  //要更新的客户区所在的窗体的句柄,如果为NULL,则系统将在函数返回前重新绘制所有的窗口, 然后发送WM_ERASEBKGND 和 WM_PAINT 给窗口过程处理函数。
CONST RECT *lpRect, //无效区域的矩形代表,它是一个结构体指针,存放着矩形的大小
BOOL bErase  //指出无效矩形被标记为有效后,是否重画该区域,重画时用预先定义好的画刷,当指定TRUE时需要重画
);
2.函数说明:
InvalidateRect(hwnd, NULL, true);重画时将擦除背景。
InvalidateRect(hwnd, NULL, false);重画时不擦除背景

二十八、MessageBox  //显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息
1.函数原型:
int WINAPI MessageBox(HWND hWnd,  //消息框拥有的窗口,如果为NULL,则消息框没有拥有窗口
LPCTSTR lpText,  //消息框的内容
LPCTSTR lpCaption,  //消息框的标题
UINT uType  //指定一个决定对话框的内容和行为的位标志集
);
2.参数说明:uType可以为下列标志组中标志的组合,指定下列标志中的一个来显示消息框中的按钮以及图标。
MB_OK     默认值。有一个确认按钮在里面
MB_YESNO   有是和否在里面
MB_ABORTRETRYIGNORE  有Abort(放弃),Retry(重试)和Ignore(跳过)
MB_YESNOCANCEL  消息框含有三个按钮:Yes,No和Cancel
MB_RETRYCANCEL  有Retry(重试)和Cancel(取消)
MB_OKCANCEL   消息框含有两个按钮:OK和Cancel

二十九、MoveWindow  //改变指定窗口的位置和大小
1.函数原型:
BOOL MoveWindow(HWND hWnd, //窗口的句柄
int X,  //CWnd的左边的新位置
int Y,  //CWnd的顶部的新位置
int nWidth, //CWnd的新宽度
int nHeight, //CWnd的新高度
BOOL bRepaint); //是否要重画CWnd。如果为TRUE,则CWnd在消息处理函数中会收到一条WM_PAINT消息。

三十、IsWindowEnabled  //判断指定的窗口是否允许接受键盘或鼠标输入
1.函数原型:BOOL IsWindowEnabled(HWND hWnd);
返回值: 若窗口允许接受键盘或鼠标输入,则返回非0值,若窗口不允许接受键盘或鼠标输入,则返回值为0。
备注: 子窗口只有在被允许并且可见时才可接受输入。

三十一、IsWindowVisible  //获得指定窗口的可视状态,即显示或者隐藏
1.函数原型: BOOL IsWindowVisible(HWND hWnd);
返回值:如果指定的窗口及其父窗口具有WS_VISIBLE风格,返回值为非零;如果指定的窗口及其父窗口不具有WS_VISIBLE风格,返回值为零。由于返回值表明了窗口是否具有Ws_VISIBLE风格,因此,即使该窗口被其他窗口遮盖,函数返回值也为非零

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值