MFC CWnd 类 公共方法:CWnd::RegisterTouchWindow
在MFC(Microsoft Foundation Classes)中,CWnd::RegisterTouchWindow 是一个公共方法,用于将窗口注册为触摸输入窗口。通过调用此方法,可以启用和配置触摸输入支持。以下是 CWnd::RegisterTouchWindow 的基本语法:BOOL RegisterTouchWindow( DWORD flags = 0, UINT_PTR touchInputMask = 0);其中参数的含义如下: flags:指定触摸窗口的标志。可以使用以下标志的组合: - TWF_FINETOUCH:启用精细触摸,支持更高的分辨率。 - TWF_WANTPALM:希望接收手掌输入。 - TWF_NOHIDEMOUSE:在触摸设备上,不隐藏鼠标光标。 - TWF_NOAUTOREPEAT:禁用触摸自动重复。 - TWF_NOCURSOR:不在触摸设备上显示光标。 touchInputMask:指定感兴趣的触摸输入类型的掩码。可以使用以下常量的组合: - TOUCHEVENTF_DOWN:触摸按下。 - TOUCHEVENTF_MO...
MFC CWnd 类 公共方法:CWnd::RedrawWindow
CWnd::RedrawWindow 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于强制窗口重新绘制。这个方法的目的是使窗口无效并触发相应的重绘操作,以便更新窗口内容。以下是 CWnd::RedrawWindow 的基本语法:BOOL RedrawWindow( LPCRECT lpRectUpdate = NULL, CRgn* prgnUpdate = NULL, UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);其中参数的含义如下: lpRectUpdate:指定一个矩形区域,表示需要更新的部分。如果为 NULL,则整个窗口将被更新。 prgnUpdate:指定一个区域对象,表示需要更新的部分。如果为 NULL,则整个窗口将被更新。 flags:指定更新的标志,可以使用位运算符组合多个标志。常见的标志包括: - RDW_INVALIDATE:使窗口区域无效,需要重绘。 - RDW_UPDATENOW:立即进行更新操作,而不是将更新请求放入队列中。 - R...
MFC CWnd 类 公共方法:CWnd::PrintClient
CWnd::PrintClient 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于将窗口客户区的内容打印出来。这个方法的声明如下:virtual void PrintClient( CDC* pDC, DWORD dwFlags) const;参数说明: pDC: 一个指向 CDC(Device Context)对象的指针,表示要用于打印的设备上下文。 dwFlags: 一个表示打印选项的标志位,可以使用以下常量之一或它们的组合: - PRF_CHECKVISIBLE: 仅打印可见区域。 - PRF_CHILDREN: 打印子窗口。 - PRF_CLIENT: 打印客户区域。 - PRF_ERASEBKGND: 在打印之前擦除背景。 - PRF_NONCLIENT: 打印非客户区域。 - PRF_OWNED: 打印所有者绘制的窗口(通过 WM_PRINT 或 WM_PRINTCLIENT 消息)。CWnd::PrintClient 主要用于打印窗口客户区域的内容,可以根据需要选择打印选项。此方法通常在实现自定义打印功...
MFC CWnd 类 公共方法:CWnd::PreTranslateMessage
CWnd::PreTranslateMessage 是 MFC 中的一个公共方法,它是一个虚拟函数,通常用于在消息被派发给窗口消息处理函数之前对消息进行预处理。这个函数通常被用于执行一些全局的或窗口范围内的消息处理,例如键盘快捷键、消息翻译等。函数原型如下:virtual BOOL PreTranslateMessage(MSG* pMsg); pMsg 是一个指向 MSG 结构的指针,其中包含了待处理的消息信息。通过重写 PreTranslateMessage 函数,你可以在消息传递给窗口消息处理函数之前截获和处理消息。如果你返回 TRUE,表示消息已经被处理,不再传递给其他窗口消息处理函数;如果返回 FALSE,则表示消息会被传递给其他消息处理函数。以下是一个简单的例子:class CMyWnd : public CWnd {public: virtual BOOL PreTranslateMessage(MSG* pMsg);};BOOL CMyWnd::PreTranslateMessage(MSG* pMsg) { // 在这里进行消息预处理 if (pMs...
MFC CWnd 类 公共方法:CWnd::PreSubclassWindow
CWnd::PreSubclassWindow 是 MFC 中的一个公共方法,它是一个虚拟函数,通常在窗口子类化时用于在窗口创建后但在窗口实例被附加到 C++ 对象之前执行一些定制的操作。函数原型如下:virtual void PreSubclassWindow();你可以在派生自 CWnd 的类中重写这个函数,以便在窗口实例被 C++ 对象附加之前进行一些初始化操作。这个函数的主要目的是允许你对窗口进行额外的设置,以使其适应特定的需求。以下是一个简单的例子:class CMyWnd : public CWnd {public: virtual void PreSubclassWindow();};void CMyWnd::PreSubclassWindow() { // 在这里进行一些窗口初始化操作 ModifyStyle(0, WS_BORDER); // 添加边框样式 // 调用基类的 PreSubclassWindow,以确保基类的功能正常 CWnd::PreSubclassWindow();}在这个例子中,CMyWnd 类重写了 PreSubcl...
MFC CWnd 类 公共方法:CWnd::PreCreateWindow
CWnd::PreCreateWindow 不是 CWnd 类的公共方法,而是一个虚拟函数,你可以在派生类中重写它以在窗口创建之前修改创建参数。这个函数允许你在窗口创建之前进行一些定制操作。函数原型如下:virtual BOOL PreCreateWindow(CREATESTRUCT& cs);CREATESTRUCT 结构包含了有关窗口创建的各种信息,包括窗口样式、窗口标题、窗口位置和大小等。通过重写 PreCreateWindow 函数,你可以修改这些信息。以下是一个简单的例子:class CMyWnd : public CWnd {public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs);};BOOL CMyWnd::PreCreateWindow(CREATESTRUCT& cs) { // 在这里可以修改 cs 的成员,例如修改窗口样式、标题等 cs.style |= WS_OVERLAPPEDWINDOW; // 添加一些窗口样式 // 调用基类的 PreCreateWi...
MFC CWnd 类 公共方法:CWnd::PostMessage
CWnd::PostMessage 是 MFC 中的一个公共方法,用于将消息放入消息队列中,以便稍后由目标窗口处理。这个方法与 Windows API 中的 PostMessage 函数类似,用于异步地向窗口发送消息。函数原型如下:BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0); message 是要发送的消息类型,例如 WM_COMMAND、WM_USER 等。 wParam 和 lParam 是消息的参数,根据消息类型的不同而有所变化。下面是一个简单的例子:// 假设 pWnd 是指向 CWnd 对象的指针pWnd->PostMessage(WM_USER, 123, 456);上述示例中,WM_USER 是一个自定义消息,通过 PostMessage 将这个消息放入窗口消息队列中。123 和 456 分别作为 wParam 和 lParam 的参数传递给窗口消息处理函数。这种异步消息的发送方式适用于在不阻塞当前线程的情况下向窗口发送消息。请注意,异步消息的处理会在消息队列...
MFC CWnd 类 公共方法:CWnd::OpenClipboard
在 MFC 中,CWnd::OpenClipboard 并不是 CWnd 类的直接方法。相反,OpenClipboard 是 Windows API 中的一个函数,用于打开剪贴板,以便进行剪贴板操作。函数原型如下:BOOL OpenClipboard(HWND hWndNewOwner); hWndNewOwner 是要接管剪贴板的窗口句柄。这个函数打开剪贴板并返回一个布尔值,表示是否成功打开剪贴板。在使用剪贴板之前,通常需要调用 OpenClipboard 来确保它是打开的。以下是一个简单的例子:if (OpenClipboard(m_hWnd)) { // 在这里进行剪贴板操作 // 例如,调用 GetClipboardData、SetClipboardData 等函数 // 使用完毕后需要调用 CloseClipboard 关闭剪贴板 CloseClipboard();} else { // 打开剪贴板失败,处理错误}这个例子中,m_hWnd 是窗口的句柄,通过调用 OpenClipboard 打开剪贴板,然后进行剪贴板操作。使用完毕后,需要调用 C...
MFC CWnd 类 公共方法:CWnd::OnToolHitTest
CWnd::OnToolHitTest 不是 CWnd 类的标准公共方法,而是一个虚拟函数,通常被用于处理工具提示(tooltip)的相关操作。工具提示是一种用户界面元素,当用户将鼠标悬停在具有工具提示的控件上时,会显示一段简短的描述文本。在 MFC 中,你可以通过重写 OnToolHitTest 来自定义工具提示的行为。这个函数在鼠标移到窗口的一个子窗口上时被调用,你可以返回一个标识符,用于标识鼠标停留的控件,并在需要时提供工具提示的文本。以下是一个简单的例子:BOOL CMyWnd::OnToolHitTest(CPoint point, TOOLINFO* pTI) const { // 假设你有一个控件的标识符为ID_MY_CONTROL int nHit = 1; // 假设ID_MY_CONTROL对应的标识符为1 // 在此添加更多的条件来判断鼠标是否悬停在你感兴趣的控件上 if (nHit == 1) { // 设置工具提示信息 pTI->hwnd = m_hWnd; pTI->uId = (...
MFC CWnd 类 公共方法:CWnd::OnHelpIndex
在 MFC 中,CWnd::OnHelpIndex 通常是用于处理帮助索引的消息处理函数。帮助索引是一种允许用户通过关键字或主题查找帮助内容的方式。在 MFC 中,你可以通过消息映射将帮助索引命令映射到一个成员函数,例如:BEGIN_MESSAGE_MAP(CMyWnd, CWnd) ON_COMMAND(ID_HELP_INDEX, OnHelpIndex)END_MESSAGE_MAP()void CMyWnd::OnHelpIndex() { // 处理帮助索引命令的代码 // 可以打开帮助索引对话框等}上述示例中,ID_HELP_INDEX 是一个命令标识符,它对应于帮助索引菜单项的命令 ID。当用户点击帮助菜单的索引项时,OnHelpIndex 函数将会被调用,你可以在这个函数中实现打开帮助索引对话框等逻辑。需要注意的是,这只是一个通用的例子,具体的命令 ID 和消息映射可能会因你的应用程序的具体实现而有所不同。请根据你的代码和需求进行相应的调整。
MFC CWnd 类 公共方法:CWnd::OnHelp
在 MFC 中,CWnd::OnHelp 并不是 CWnd 类的直接方法。通常,OnHelp 是消息映射表中的一个特定消息处理函数,而不是 CWnd 类的成员函数。在 MFC 中,你可以使用 ON_COMMAND 宏将 ID_HELP 命令映射到一个成员函数。例如:BEGIN_MESSAGE_MAP(CMyWnd, CWnd) ON_COMMAND(ID_HELP, OnHelp)END_MESSAGE_MAP()void CMyWnd::OnHelp() { // 处理帮助命令的代码 // 可以打开帮助文件、显示帮助对话框等}上述示例中,OnHelp 是一个你自定义的成员函数,当用户点击帮助菜单项时,将会被调用。在这个函数中,你可以实现一些与帮助相关的逻辑,例如打开帮助文件、显示帮助对话框等。请注意,ID_HELP 是一个命令标识符,它对应于帮助菜单项的命令 ID。你可以根据实际情况调整消息映射表中的命令 ID。
MFC CWnd 类 公共方法:CWnd::MoveWindow
CWnd::MoveWindow 是 MFC 中用于移动窗口的成员函数。其函数原型如下:BOOL MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE); x 是窗口的新左上角 x 坐标。 y 是窗口的新左上角 y 坐标。 nWidth 是窗口的新宽度。 nHeight 是窗口的新高度。 bRepaint 是一个布尔值,指定在移动窗口后是否应该重绘窗口。如果为 TRUE,窗口将被重绘。这个函数通常在运行时用于更改窗口的位置和大小。例如:// 假设 pWnd 是指向 CWnd 对象的指针pWnd->MoveWindow(100, 100, 300, 200, TRUE); // 移动并重绘窗口上述示例中,MoveWindow 将窗口移动到 (100, 100) 的位置,并设置宽度为 300,高度为 200,然后重绘窗口。需要注意的是,MoveWindow 用于动态调整窗口的位置和大小,不同于创建窗口时指定的初始位置和大小。
MFC CWnd 类 公共方法:CWnd::ModifyStyleEx
在 MFC 中,CWnd::ModifyStyleEx 是用于修改窗口的扩展样式的成员函数。其函数原型如下:void CWnd::ModifyStyleEx( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0); dwRemove 是要从窗口扩展样式中移除的样式位。 dwAdd 是要添加到窗口扩展样式中的样式位。 nFlags 是一个标志,用于指定样式修改的方式。这个函数允许你在运行时动态地更改窗口的扩展样式。扩展样式通常用于指定窗口的一些高级特性,如透明度、图层样式等。以下是一个简单的示例:// 假设 pWnd 是指向 CWnd 对象的指针pWnd->ModifyStyleEx(WS_EX_CLIENTEDGE, WS_EX_STATICEDGE); // 修改窗口的边框样式上述示例中,ModifyStyleEx 将从窗口的扩展样式中移除 WS_EX_CLIENTEDGE 样式,并添加 WS_EX_STATICEDGE 样式,从而修改窗口的边框样式。需要注意的是,这个函数主要用于对窗口的扩展样式进行动态修改,不同于创建窗口时指...
MFC CWnd 类 公共方法:CWnd::ModifyStyle
在 MFC 中,CWnd::ModifyStyle 是一个用于修改窗口样式的成员函数。其函数原型如下:void CWnd::ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0); dwRemove 是要从窗口样式中移除的样式位。 dwAdd 是要添加到窗口样式中的样式位。 nFlags 是一个标志,用于指定样式修改的方式。这个函数允许你在运行时动态地更改窗口的样式。例如,你可以通过这个函数添加或移除 WS_DISABLED 样式位来启用或禁用窗口。以下是一个简单的示例:// 假设 pWnd 是指向 CWnd 对象的指针pWnd->ModifyStyle(WS_DISABLED, 0); // 启用窗口上述示例中,ModifyStyle 将移除 WS_DISABLED 样式,从而启用窗口。需要注意的是,这个函数主要用于对窗口的样式进行动态修改,不同于创建窗口时指定的样式。
MFC CWnd 类 公共方法:CWnd::MessageBox
CWnd::MessageBox 并不是 CWnd 类的直接成员函数。实际上,消息框的创建通常是通过全局的 MessageBox 函数来实现,而不是通过 CWnd 类的成员函数。在 MFC 中,你可以使用以下方式创建消息框:int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK);其中: lpszText 是消息框中显示的文本。 lpszCaption 是消息框的标题栏文本,可以为 NULL。 nType 是消息框的类型,可以通过按位 OR 运算符 (|) 组合多个选项。例如,MB_OK 表示只有一个“确定”按钮,MB_YESNO 表示有“是”和“否”两个按钮。这个函数通常是在窗口类的成员函数中调用的。例如:// 在一个 CWnd 派生类的成员函数中调用void CMyWnd::ShowMessageBox() { MessageBox(_T("Hello, this is a message!"), _T("Message Box&...
MFC CWnd 类 公共方法:CWnd::MapWindowPoints
CWnd::MapWindowPoints 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于将一个或多个点的坐标从一个窗口的客户区坐标系映射到另一个窗口的客户区坐标系。具体的函数原型如下:void CWnd::MapWindowPoints( CWnd* pWndTo, LPPOINT lpPoints, UINT nCount) const; pWndTo 是目标窗口的指针,表示要将坐标映射到哪个窗口。 lpPoints 是一个指向 POINT 结构数组的指针,包含要映射的点的坐标。 nCount 是要映射的点的数量。调用这个方法后,lpPoints 中的坐标将从调用窗口的客户区坐标系映射到目标窗口的客户区坐标系。例如,如果有一个窗口对象 pWnd,你可以这样使用 MapWindowPoints:POINT pt = {10, 20};pWnd->MapWindowPoints(pTargetWnd, &pt, 1);这将把 pt 中的坐标从 pWnd 的客户区坐标系映射到 pTargetWnd 的客户区坐标系...
MFC CWnd 类 公共方法:CWnd::LockWindowUpdate
CWnd::LockWindowUpdate 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于锁定或解锁窗口的更新。该方法的作用是防止窗口的重绘操作,直到调用 LockWindowUpdate 的窗口再次调用该方法并传递 NULL 参数为止。具体而言,CWnd::LockWindowUpdate 的原型如下:BOOL LockWindowUpdate(BOOL bLock); 参数 bLock 为 TRUE 时表示锁定窗口更新,为 FALSE 时表示解锁窗口更新。 返回值为 TRUE 表示成功,FALSE 表示失败。例如,如果你希望暂时锁定窗口的更新,可以在需要的地方调用 LockWindowUpdate(TRUE),然后在完成相关操作后再调用 LockWindowUpdate(FALSE) 来解锁窗口更新。请注意,使用这个方法时需要小心,确保在锁定期间不会导致用户界面出现不良的体验,因为在锁定期间窗口将不会被重绘。
MFC CWnd 类 公共方法:CWnd::KillTimer
CWnd::KillTimer 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个公共方法,用于停止一个先前由 SetTimer 方法启动的定时器。这个方法的语法如下:BOOL KillTimer( UINT_PTR nIDEvent);参数 nIDEvent 是先前由 SetTimer 分配的定时器标识符。通过调用 KillTimer 方法,你可以停止与指定标识符相关联的定时器。以下是一个简单的例子,演示了如何在 MFC 中使用 SetTimer 和 KillTimer:// 声明一个定时器标识符#define MY_TIMER_ID 1001// 在某个函数中设置定时器void CMyWnd::StartTimer(){ // 启动定时器,每1000毫秒触发一次 SetTimer(MY_TIMER_ID, 1000, nullptr);}// 在某个函数中停止定时器void CMyWnd::StopTimer(){ // 停止定时器 KillTimer(MY_TIMER_ID);}// 处理定时器消息的函数voi...
MFC CWnd 类 公共方法:CWnd::IsZoomed
CWnd::IsZoomed 是 MFC(Microsoft Foundation Classes)中的一个成员函数,用于检查窗口是否处于最大化状态(即是否已经被最大化)。这个函数返回一个 BOOL 类型的值,如果窗口最大化则返回非零值,否则返回零。以下是 CWnd::IsZoomed 的基本用法:BOOL IsWindowZoomed = YourWndObject.IsZoomed();其中,YourWndObject 是你的窗口对象的实例。如果 IsWindowZoomed 为非零,表示窗口当前处于最大化状态;如果为零,表示窗口不是最大化的。这个函数通常用于在程序中根据窗口状态执行相应的操作,例如动态调整界面布局或禁用一些功能。
MFC CWnd 类 公共方法:CWnd::IsWindowVisible
CWnd::IsWindowVisible 是 MFC(Microsoft Foundation Classes)中的 CWnd 类的公共方法之一,用于检查窗口是否可见。以下是该方法的基本信息:BOOL IsWindowVisible() const;返回值: 如果窗口可见,返回值为非零; 如果窗口不可见,返回值为零。使用示例:CWnd* pWnd = ...; // 通过某种方式获取 CWnd 对象的指针if (pWnd->IsWindowVisible()){ // 窗口可见}else{ // 窗口不可见}通过调用 IsWindowVisible 方法,您可以检查窗口是否处于可见状态。这在需要根据窗口可见状态执行不同操作时很有用。