一些控件函数,无节操搬运百度百科

来源:互联网 发布:excel一列数据自动复制 编辑:程序博客网 时间:2024/05/29 16:41

CreateCompatibleDC

目录

函数功能
函数原型
参数

编辑本段函数功能

该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。通过GetDc()获取的HDC直接与相关设备沟通,而本函数创建的DC,则是与内存中的一个表面相关联。

编辑本段函数原型

HDC CreateCompatibleDC(HDC hdc);
vb定义:
Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long

编辑本段参数

hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。
返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。
Windows NT:若想获得更多错误信息,请调用GetLastError函数。
注释:内存设备上下文环境是仅在内存中存在的设备上下文环境,当内存设备上下文环境被创建时,它的显示界面是标准的一个单色像素宽和一个单色像素高,在一个应用程序可以使用内存设备上下文环境进行绘图操作之前,它必须选择一个高和宽都正确的位图到设备上下文环境中,这可以通过使用CreateCompatibleBitmap函数指定高、宽和色彩组合以满足函数调用的需要。
当一个内存设备上下文环境创建时,所有的特性都设为缺省值,内存设备上下文环境作为一个普通的设备上下文环境使用,当然也可以设置这些特性为非缺省值,得到它的特性的当前设置,为它选择画笔,刷子和区域。
CreateCompatibleDc函数只适用于支持光栅操作的设备,应用程序可以通过调用GetDeviceCaps函数来确定一个设备是否支持这些操作。
当不再需要内存设备上下文环境时,可调用DeleteDc函数删除它。
ICM:如果通过该函数的hdc参数传送给该函数设备上下文环境(Dc)对于独立颜色管理(ICM)是能用的,则该函数创建的设备上下文环境(Dc)是ICM能用的,资源和目标颜色间隔是在Dc中定义。

Invalidate

目录

Invalidate介绍
与UpdateWindow( )的区别

编辑本段Invalidate介绍

void Invalidate( BOOL bErase = TRUE );
该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。

编辑本段与UpdateWindow( )的区别

UpdateWindow( )的作用是使窗口立即重绘。调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。

CCmdTarget

求助编辑百科名片

类CCmdTarget是MFC类库中消息映射体系的一个基类,是MFC处理命令消息的基础、核心。消息映射把命令或消息引导给用户为之编写的响应函数。

目录

静态成员函数DispatchCmdMsg
虚拟函数OnCmdMsg
      CCmdTarget继承来的按键框架类包括:CView、CWinApp、CDocument、CWnd和CFrameWnd。如果想生成一个处理按键消息的类,可以选择其中的一个派生一个子类。很少需要直接从CCmdTarget派生类。
MFC为该类设计了许多成员函数和一些成员数据,基本上是为了解决消息映射问题的,而且,很大一部分是针对OLE设计的。在OLE应用中,CCmdTarget是MFC处理模块状态的重要环节,它起到了传递模块状态的作用:其构造函数获取当前模块状态,并保存在成员变量m_pModuleState里头。
CCmdTarget有两个与消息映射有密切关系的成员函数:DispatchCmdMsg和OnCmdMsg。
类CmdTarget包括了处理沙漏形光标显示的成员函数。当某个命令的执行时间比较长时,可以显示沙漏标提示用户命令正在执行。
和消息映射类似,分派映射用于列出OLE自动的IDispatch功能。列出这个接口后,其它的应用(如VB)就能调用这个应用了。有关IDispatch接口的更详细的信息,请参阅“Win32 SDK OLE程序员参考”中的“创建IDPatch接口”和“分派接口与API函数”。
所需头文件:#include <afxwin.h>

编辑本段静态成员函数DispatchCmdMsg

CCmdTarget的静态成员函数DispatchCmdMsg,用来分发Windows消息。此函数是MFC内部使用的,其原型如下:
static BOOL DispatchCmdMsg(
CCmdTarget* pTarget,
UINT nID,
int nCode,
AFX_PMSG pfn,
void* pExtra,
UINT nSig,
AFX_CMDHANDLERINFO* pHandlerInfo)

编辑本段虚拟函数OnCmdMsg

CCmdTarget的虚拟函数OnCmdMsg,用来传递和发送消息、更新用户界面对象的状态,其原型如下:
OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo)
框架的命令消息传递机制主要是通过该函数来实现的。
命令目标指希望或者可能处理消息的对象;命令目标类指命令目标的类。
CCmdTarget对OnCmdMsg的默认实现:在当前命令目标(this所指)的类和基类的消息映射数组里搜索指定命令消息的消息处理函数(标准Windows消息不会送到这里处理)。
这里使用虚拟函数GetMessageMap得到命令目标类的消息映射入口数组_messageEntries,然后在数组里匹配指定的消息映射条目。匹配标准:命令消息ID相同,控制通知代码相同。因为GetMessageMap是虚拟函数,所以可以确认当前命令目标的确切类。
如果找到了一个匹配的消息映射条目,则使用DispachCmdMsg调用这个处理函数;
如果没有找到,则使用_GetBaseMessageMap得到基类的消息映射数组,查找,直到找到或搜寻了所有的基类(到CCmdTarget)为止;
如果最后没有找到,则返回FASLE。
每个从CCmdTarget派生的命令目标类都可以覆盖OnCmdMsg,利用它来确定是否可以处理某条命令,如果不能,就通过调用下一命令目标的OnCmdMsg,把该命令送给下一个命令目标处理。通常,派生类覆盖OnCmdMsg时,要调用基类的被覆盖的OnCmdMsg。
在MFC框架中,一些MFC命令目标类覆盖了OnCmdMsg,如框架窗口类覆盖了该函数,实现了MFC的标准命令消息发送路径。
必要的话,应用程序也可以覆盖OnCmdMsg,改变一个或多个类中的发送规定,实现与标准框架发送规定不同的发送路径。例如,在以下情况可以作这样的处理:在要打断发送顺序的类中把命令传给一个非MFC默认对象;在新的非默认对象中或在可能要传出命令的命令目标中。
该类派生于CObject,经封装了MFC的消息映射机制,希望接收系统事件和窗口消息的类都从它派生,如CDocument和CWnd分支。此外,在系统繁忙,无法响应窗口消息时,鼠标光标应该显示为沙漏等待状态,CCmdTarget类封装了3个成员函数完成该功能。封装COM的IDispatch接口是它的另一项主要功能。IDispatch是COM的标准接口,不含指针操作的语言(如VB)以及描述性语言(如Web脚本语言和VBA)都通过该接口操作COM组件。CCmdTarget类以一种类似消息映射的机制提供IDispatch接口,所以使用MFC可以轻松地编写AUTOMATION客户程序和组件。
CCmdTarget类定义BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标。BeginWaitCursor()将光标设置为沙漏形状,该函数有可能被程序框架调用,通知用户状态忙,例如当加载和存储文档时。EndWaitCursor()将光标恢复为沙漏之前的形状,一般与BeginWaitCursor()配合使用。
在实际编程中,在一个比较耗费机时的处理前应该主动调用BeginWaitCursor()设置光标,在处理结束时要调用EndWaitCursor()恢复光标。
例如:
void CWaitCursorDoc::LoadFile(char * Filepath)
{
//显示沙漏光标
BeginWaitCursor();
//耗费机时的处理过程
TRACE("正在装入文件,请等待...\n");
......
//恢复为沙漏前的光标形状
EndWaitCursor();
}
如果在BeginWaitCursor()和EndWaitCursor()之间的处理中,弹出了模式对话框,光标会由沙漏变为标准形状(通常是标准箭头)。为处理这种情形,可以在对话框关闭后,调用成员RestoreWaitCursor()重新将光标设置回沙漏形状,直到处理结束后调用EndWait Cursor()。例如:
void CWaitCursorDoc::LoadFile(char * Filepath)
{
WIN32_FIND_DATA FindData;
//显示沙漏光标
BeginWaitCursor();
//耗费机时的处理过程
if(::FindFirstFile(Filepath,&FindData)==INVALID_HANDLE_VALUE)
{
TRACE("打开文件出错,请重新指定文件\n");
CFileDlg dlg;
dlg.DoModal();
//恢复光标的沙漏形状
RestoreWaitCursor();
}
TRACE("正在装入文件,请等待...\n");
......
//恢复沙漏前的光标形状
EndWaitCursor();
}
但如果弹出的是MessageBox()消息框,就不必调用RestoreWaitCursor(),光标会自动恢复为沙漏。
在非CCmdTarget派生类中,可以使用CWaitCursor类设置等待光标。该类的构造函数和析构函数相当于CCmdTarget::BeginWaitCursor()和CCmdTarget::EndWaitCursor(),成员函数Restore()相当于CCmdTarget:: RestoreWaitCursor()。

fillsolidrect

CDC::FillSolidRect
Call this member function to fill the given rectangle with the specified solid color.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr
);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr
);
参数:
lpRec
指向RECT数据结构的指针,包含被填充的矩形的逻辑坐标,可以为该参数传递RECT数据结构或CRect对象的指针。
clr
指定填充矩形使用的颜色。
x
矩形左上角的X逻辑坐标。
y
矩形左上角的Y逻辑坐标。
cx
指定矩形的宽度。
cy
指定矩形的高度。
说明:
调用该成员函数用指定的固体色填充矩形。
FillSolidRect与CDC::FillRect类似,FillSolidRect只能使用固体色(由COLORREF参数决定)。但FillRect带有画刷,因此可以为矩形填充固体色、抖动色、阴影或使用调色板。FillRect通常比FillSolidRect慢。
注意:调用FillSolidRect时,以前用SetBkColor设置的背景色,被设置为clr指定的颜色。

SetWindowRgn

目录

  • 说明
  • 定义
  • 参数
  • 返回值
  • 说明
  • 系统要求
    展开
  • 说明
  • 定义
  • 参数
  • 返回值
  • 说明
  • 系统要求
    展开
  • SetWindowRgn 函数

    说明

    The SetWindowRgn function sets the window region of a window. The window region determines the area within the window where the system permits drawing. The system does not display any portion of a window that lies outside of the window region
    SetWindowRgn 函数是设置了一个窗口的区域.只有被包含在这个区域内的地方才会被重绘,而不包含在区域内的其他区域系统将不会显示.

    定义

    int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw);
    int SetWindowRgn(HRGN hRgn,BOOL bRedraw);
    //在VC6.0基于对话框时候,该函数是这样的,有两个参数

    参数

    hWnd
    [in] Handle to the window whose window region is to be set.
    窗口的句柄
    hRgn
    [in] Handle to a region. The function sets the window region of the window to this region.
    If hRgn is NULL, the function sets the window region to NULL.
    指向的区域.函数起作用后将把窗体变成这个区域的形状.
    如果这个参数是空值,窗体区域也会被设置成空值,也就是什么也看不到.
    bRedraw
    [in] Specifies whether the system redraws the window after setting the window region. If bRedraw is TRUE, the system does so; otherwise, it does not.
    Typically, you set bRedraw to TRUE if the window is visible.
    这个参数是用于设置 当函数起作用后,窗体是不是该重绘一次. true 则重绘,false 则相反.
    如果你的窗体是可见的,通常建议设置为 true.

    返回值

    If the function succeeds, the return value is nonzero.
    If the function fails, the return value is zero.
    Windows NT/2000/XP: To get extended error information, call GetLastError.
    如果函数执行成功,就返回非零的数字.如果失败,就返回零.
    在 Windows NT/2000/XP 下,想要得到更多的错误信息,可以调用 GetLastError.

    说明

    When this function is called, the system sends the WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED messages to the window.
    当这个函数被调用时,系统会发出 WM_WINDOWPOSCHANGING 和 WM_WINDOWPOSCHANGED 这两个消息
    The coordinates of a window's window region are relative to the upper-left corner of the window, not the client area of the window.
    它所设置的区域是从最左上角开始的,而不是从 用户区域 开始的.(既是说从标题栏那里就已经生效了)
    After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.
    当成功调用了这个函数之后,系统会直接使用这个Rgn,而且系统不会再次将它复制一份.
    而且哦,我们没有必要自行释放这个区域的句柄.当它再也不起作用的时候,系统会自动释放它.
    To obtain the window region of a window, call the GetWindowRgn function.
    可以使用 GetWindowRgn 来获取一个窗口的作用区域.

    系统要求

    Windows NT/2000/XP: 包括 Windows NT 3.51 在内的以后的版本.
    Windows 95/98/Me: 包括 Windows 95 在内的以后的版本.
    Header: Declared in Winuser.h; include Windows.h.
    头文件在 Winuser.h 中声明了这个函数,当然在 Windows.h 也有.
    Library: Use User32.lib.
    所属的链接库在 User32.lib

    CStatic

    目录

    简介
    CStatic控件的基本使用
    展开
    简介
    CStatic控件的基本使用
    展开

    编辑本段简介

    CStatic
    CObject
    └CCmdTarget
    └CWnd
    └CStatic
    CStatic类提供了一个Windows静态控件的性能。一个静态控件用来显示一个文本字符串,框,矩形,图标,光标,位图,或增强的图元文件。它可以被用来作为标签,框,或用来分隔其它的控件。一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。创建一个静态控件分两步。首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。如果你是在一个窗口中创建了一个CStatic对象,则必须由你来销毁它。在一个窗口的堆栈中创建的CStatic对象将自动被销毁。如果你是使用new函数在堆中创建CStatic对象,则当你使用完后,必须调用delete来销毁这个CStatic对象。





    原创粉丝点击