MFC CWnd 类 公共方法:CWnd::SetActiveWindow
在 MFC(Microsoft Foundation Classes)中,CWnd::SetActiveWindow 是一个公共方法,用于将窗口设置为活动窗口。函数原型如下:CWnd* SetActiveWindow();函数返回值: 如果函数成功,返回先前的活动窗口的 CWnd* 指针;如果失败,则返回 NULL。函数功能:SetActiveWindow 用于将窗口设置为活动窗口,使其成为接收键盘输入和其他用户输入的焦点。通常在处理窗口激活相关事件时,例如 WM_ACTIVATE 消息时,可以调用这个方法。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);CWnd* pPrevActiveWnd = pWnd->SetActiveWindow();// 可以在这里进行其他处理if (pPrevActiveWnd == NULL){ // 处理失败的情况}else{ // 处理成功的情况}上述示例中,SetActiveWindow 被调用后,pWnd 成为活动窗口,并返回了先前的活动窗口的指针。你可以根据需要对先前的...
MFC CWnd 类 公共方法:CWnd::SendNotifyMessage
在 MFC(Microsoft Foundation Classes)中,CWnd::SendNotifyMessage 是一个公共方法,用于向窗口或控件发送通知消息(WM_NOTIFY消息)。函数原型如下:BOOL SendNotifyMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0, LRESULT* pResult = NULL);参数解释: message:要发送的通知消息。 wParam 和 lParam:消息的参数。 pResult:指向 LRESULT 的指针,用于接收消息的返回值。函数返回值: 如果函数成功,则返回非零值;如果失败,则返回零。函数功能:SendNotifyMessage 主要用于发送通知消息给窗口或控件。通知消息是一种在控件之间通信的常见机制,例如在列表框中选择一项时,会发送 NM_CLICK 或 NM_SELCHANGE 通知消息。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);BOOL result = pWnd...
MFC CWnd 类 公共方法:CWnd::SendMessageToDescendants
在 MFC(Microsoft Foundation Classes)中,CWnd::SendMessageToDescendants 是一个公共方法,用于向窗口的所有子窗口发送指定的 Windows 消息。函数原型如下:BOOL SendMessageToDescendants( UINT message, WPARAM wParam = 0, LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);参数解释: message:要发送的消息。 wParam 和 lParam:消息的参数。 bDeep:一个布尔值,表示是否向所有子窗口的子窗口发送消息(TRUE 表示是,FALSE 表示否)。 bOnlyPerm:一个布尔值,表示是否只向永久性(permanent)子窗口发送消息。永久性子窗口是通过 Create() 或 CreateEx() 函数创建的,而不是通过对话框模板定义的。函数返回值: 如果函数成功,则返回非零值;如果失败,则返回零。函数功能:SendMessageToDescendants...
MFC CWnd 类 公共方法:CWnd::SendMessage
在 MFC(Microsoft Foundation Classes)中,CWnd::SendMessage 是一个公共方法,用于向窗口发送指定的 Windows 消息。函数原型如下:LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0);参数解释: message:要发送的消息。 wParam 和 lParam:消息的参数。函数返回值: 返回消息处理的结果。函数功能:SendMessage 允许你直接向窗口发送指定的 Windows 消息。这是一个底层的消息发送函数,通常用于与窗口交互或进行底层的系统操作。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);LRESULT result = pWnd->SendMessage(WM_CLOSE);上述示例中,SendMessage 用于向对话框中 ID 为 IDC_YOUR_DIALOG_ITEM 的子窗口发送 WM_CLOSE 消息,请求关闭该窗口。请注意,使用 SendMes...
MFC CWnd 类 公共方法:CWnd::SendDlgItemMessage
在 MFC(Microsoft Foundation Classes)中,CWnd::SendDlgItemMessage 是一个公共方法,用于向对话框中的指定子窗口发送消息。函数原型如下:LRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0) const;参数解释: nID:子窗口的标识符,通常是对话框模板中定义的控件 ID。 message:要发送的消息。 wParam 和 lParam:消息的参数。函数返回值: 返回消息处理的结果。函数功能:SendDlgItemMessage 允许你直接向对话框中的指定子窗口发送消息。这对于在对话框内部执行一些操作,而无需显式获取子窗口指针的情况下发送消息很有用。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);int nResult = pWnd->SendDlgItemMessage(IDC_YOUR_CONTROL_ID, WM_SETTEXT,...
MFC CWnd 类 公共方法:CWnd::ScrollWindowEx
在 MFC(Microsoft Foundation Classes)中,CWnd::ScrollWindowEx 是一个公共方法,用于在窗口中滚动客户区内容,并提供更多的滚动选项。函数原型如下:BOOL ScrollWindowEx( int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags);参数解释: dx:水平方向的滚动距离,正数向右滚动,负数向左滚动。 dy:垂直方向的滚动距离,正数向下滚动,负数向上滚动。 lpRectScroll:指向 RECT 结构体的指针,表示要滚动的客户区域。 lpRectClip:指向 RECT 结构体的指针,表示裁剪区域,以确保滚动不会超出指定区域。 prgnUpdate:指向 CRgn 对象的指针,表示要更新的区域。 lpRectUpdate:指向 RECT 结构体的指针,表示要更新的客户区域。 flags:滚动标志,可以是以下之一或它们的组合: - SW_S...
MFC CWnd 类 公共方法:CWnd::ScrollWindow
在 MFC(Microsoft Foundation Classes)中,CWnd::ScrollWindow 是一个公共方法,用于在窗口中滚动客户区内容。函数原型如下:BOOL ScrollWindow( int dx, int dy, LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL);参数解释: dx:水平方向的滚动距离,正数向右滚动,负数向左滚动。 dy:垂直方向的滚动距离,正数向下滚动,负数向上滚动。 lpRect:指向 RECT 结构体的指针,表示要更新的客户区域。如果为 NULL,则整个客户区域都会被滚动。 lpClipRect:指向 RECT 结构体的指针,表示要滚动的裁剪区域。函数返回值: 如果函数成功,则返回非零值;如果失败,则返回零。函数功能:ScrollWindow 用于在窗口中滚动客户区内容,从而改变用户在窗口中看到的部分。这个方法通常在处理滚动条消息时被调用。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);int scrollDistance...
MFC CWnd 类 公共方法:CWnd::ScreenToClient
在 MFC(Microsoft Foundation Classes)中,CWnd::ScreenToClient 是一个公共方法,用于将屏幕坐标转换为客户区坐标。函数原型如下:void ScreenToClient(LPPOINT lpPoint) const;void ScreenToClient(LPRECT lpRect) const;参数解释: lpPoint:指向 POINT 结构体的指针,表示要转换的屏幕坐标。 lpRect:指向 RECT 结构体的指针,表示要转换的屏幕坐标范围。函数功能:ScreenToClient 用于将屏幕坐标转换为相对于窗口客户区域的坐标。它是通过使用窗口的设备上下文(Device Context,简称 DC)进行转换的。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);POINT screenPoint;screenPoint.x = 100;screenPoint.y = 150;// 将屏幕坐标转换为客户区坐标pWnd->ScreenToClient(&screenPoint...
MFC CWnd 类 公共方法:CWnd::RunModalLoop
在 MFC(Microsoft Foundation Classes)中,CWnd::RunModalLoop 是一个公共方法,用于在模态对话框的消息循环中执行一次迭代。这个方法通常用于实现自定义模态对话框的消息处理。函数原型如下:int RunModalLoop(DWORD dwFlags = 0);参数解释: dwFlags:标志,控制模态循环的行为。可以是以下之一或它们的组合: - MLF_NOIDLEMSG:不发送 WM_ENTERIDLE 消息。 - MLF_NOKICKIDLE:在消息循环开始时不发送 WM_KICKIDLE 消息。函数返回值: 返回在 OnIdle 消息处理中使用的返回值。通常为 0。函数功能:RunModalLoop 用于在模态对话框的消息循环中执行一次迭代。通常,它会在对话框的 DoModal 函数中调用,以开始消息循环。该函数会一直运行,直到模态对话框被关闭。使用示例:CMyDialog dlg;int nRet = dlg.DoModal();// 在 DoModal 内部,通常会调用 RunModalLoop 来启动消息循环int nRunR...
MFC CWnd 类 公共方法:CWnd::RepositionBars
在 MFC(Microsoft Foundation Classes)中,CWnd::RepositionBars 是一个公共方法,用于重新定位窗口的控件栏(control bars)和其他相关的控件。这个函数通常在窗口大小发生变化时被调用,以确保控件栏和其他控件正确地适应新的窗口大小。函数原型如下:void RepositionBars( UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver, UINT nFlag = reposDefault, LPRECT lpRectParam = NULL, LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);参数解释: nIDFirst 和 nIDLast:控件栏和其他相关控件的 ID 范围。RepositionBars 将重新定位在这个范围内的控件。 nIDLeftOver:留下的控件的 ID。这个控件将保持在它的原始位置,不会被重新定位。 nFlag:控制栏的重新定位标志,可以是以下之一: - reposDefault:...
MFC CWnd 类 公共方法:CWnd::ReleaseDC
CWnd::ReleaseDC 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个公共方法,用于释放设备上下文(Device Context,简称 DC)的句柄。函数原型如下:void ReleaseDC( CDC* pDC // 指向要释放的设备上下文的指针);参数解释: pDC:指向要释放的设备上下文的指针,通常是通过 CWnd::GetDC 获取的。函数功能:ReleaseDC 用于释放通过 CWnd::GetDC 获得的设备上下文句柄,这样操作系统就可以回收相关资源。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);CDC* pDC = pWnd->GetDC();// 在此使用 pDC 进行绘图或其他操作pWnd->ReleaseDC(pDC); // 释放设备上下文句柄请注意,在使用 GetDC 获取设备上下文后,必须在不再需要它时使用 ReleaseDC 进行释放,以确保资源正确地被释放。
MFC CWnd 类 公共方法:CWnd::RedrawWindow
CWnd::RedrawWindow 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个公共方法,用于请求窗口重绘。该方法会导致窗口区域被标记为无效,并触发相应的重绘操作。函数原型如下:BOOL RedrawWindow( LPCRECT lpRectUpdate = NULL, // 指向一个矩形区域的指针,表示要更新的区域,如果为NULL,则重绘整个窗口 CRgn* prgnUpdate = NULL, // 指向一个剪辑区域对象的指针,表示要更新的区域 UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE // 重绘标志,可选,默认为 RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);参数解释: lpRectUpdate:指向一个 CRect 结构体或 RECT 结构体的指针,表示要更新的矩形区域。如果为 NULL,则表示重绘整个窗口。 prgnUpdate:指向一个 CRgn 对象的指针,表示要更新的剪辑区域。 fl...
MFC CWnd 类 公共方法:CWnd::PrintWindow
CWnd::PrintWindow 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个公共方法,用于将窗口内容打印到指定的设备上。函数原型如下:BOOL PrintWindow( CDC* pDC, // 指向要打印到的设备上下文的指针 UINT nFlags = 0 // 打印标志,可选,默认为0);参数解释: pDC:指向目标设备上下文(Device Context,简称 DC)的指针。这是打印操作的目标,表示打印到哪个设备上。 nFlags:打印标志,是一个可选参数,默认为0。可以根据需要设置不同的标志,例如 PW_CLIENTONLY 表示仅打印客户区域。函数返回值: 如果函数成功,则返回非零值;如果失败,则返回零。使用示例:CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);CDC dcPrint;dcPrint.CreatePrinterDC(); // 或者使用其他创建打印机 DC 的方法pWnd->PrintWindow(&dcPrin...
MFC CWnd 类 公共方法:CWnd::Print
在 MFC 中,CWnd::Print 并不是 CWnd 类的直接成员方法。通常,打印相关的操作是通过打印机设备上下文(Device Context)和打印相关的 MFC 类来实现的,例如 CPrintDialog、CDC(Device Context 类)等。如果你想在 MFC 应用程序中进行打印操作,通常的步骤是使用 CPrintDialog 选择打印机和设置打印参数,然后使用打印设备上下文 (CDC) 进行打印绘制。以下是一个简单的示例,演示了如何使用 CPrintDialog 和 CDC 进行打印:void CMyWnd::OnPrint(){ CPrintDialog printDlg(FALSE); if (printDlg.DoModal() == IDOK) { CDC dcPrint; dcPrint.Attach(printDlg.GetPrinterDC()); // 在 dcPrint 上进行打印绘制 // ... dcPrint.Detach(); }}在这个示例中,...
MFC CWnd 类 公共方法:CWnd::PreTranslateMessage
CWnd::PreTranslateMessage 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于在消息被派发到消息处理函数之前进行一些消息的预处理。通常用于实现键盘消息和鼠标消息的处理。以下是一个简单的示例,演示如何使用 PreTranslateMessage 函数:class CMyWnd : public CWnd{public: // ...protected: virtual BOOL PreTranslateMessage(MSG* pMsg);};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // 其他消息映射...END_MESSAGE_MAP()BOOL CMyWnd::PreTranslateMessage(MSG* pMsg){ // 在这里进行消息预处理 if (pMsg->message == WM_KEYDOWN) { // 处理键盘消息 if (pMsg->wParam == VK_ESCAPE) { ...
MFC CWnd 类 公共方法:CWnd::PreSubclassWindow
CWnd::PreSubclassWindow 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于在窗口控件与 MFC 对象关联之前进行一些预处理工作。这个函数在窗口控件被关联到 MFC 对象时被调用,通常在窗口创建后但在窗口显示之前。以下是一个简单的示例,演示如何使用 PreSubclassWindow 函数:class CMyWnd : public CWnd{public: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); // ...protected: afx_msg void PreSubclassWindow(); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // 其他消息映射... ON_WM_PAINT() ON_WM_LBUTTONDOWN()END_MESSAGE_MAP()void CMyWnd::Pr...
MFC CWnd 类 公共方法:CWnd::PreCreateWindow
CWnd::PreCreateWindow 不是一个公共方法,而是一个虚拟函数,允许你在创建窗口之前对窗口的创建进行一些自定义设置。你需要在派生自 CWnd 的窗口类中重写这个函数以实现自定义的窗口创建过程。下面是一个简单的示例,演示如何重写 PreCreateWindow 函数:class CMyWnd : public CWnd{public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs);};BOOL CMyWnd::PreCreateWindow(CREATESTRUCT& cs){ // 在这里进行窗口创建前的设置 cs.style |= WS_BORDER; // 为窗口添加边框样式 return CWnd::PreCreateWindow(cs);}在这个示例中,PreCreateWindow 函数在窗口创建之前被调用,允许你修改 CREATESTRUCT 结构体的成员,以定制窗口的样式、大小、位置等属性。这里的例子简单地在窗口样式中添加了 WS_BORDER 边框样式。你可以根据具...
MFC CWnd 类 公共方法:CWnd::PostMessage
CWnd::PostMessage 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于将消息发送到窗口。该方法的声明如下:BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0);这个方法用于将指定的消息(message)发送到窗口的消息队列。可以通过 wParam 和 lParam 参数传递消息的附加信息。以下是一个简单的示例,演示如何使用 PostMessage 方法:// 向窗口发送自定义消息 WM_MY_MESSAGEPostMessage(WM_MY_MESSAGE, 123, 456);上述代码中,WM_MY_MESSAGE 是一个自定义的消息值,你可以定义为你的应用程序需要的任何值。123 和 456 是 wParam 和 lParam 参数,用于传递额外的信息。需要注意的是,PostMessage 方法将消息放入接收窗口的消息队列中,并立即返回,而不等待消息被处理。这是一个异步的消息发送方法。如果你需要同步地等待消息被处理,可以使用 S...
MFC CWnd 类 公共方法:CWnd::OnToolHitTest
CWnd::OnToolHitTest 不是 CWnd 类的直接成员方法。通常,OnToolHitTest 是在 MFC 应用程序中用于处理工具提示(tooltip)相关事件的消息处理函数。如果你想要处理工具提示的事件,你可以使用 ON_WM_NOTIFY 宏或者 ON_NOTIFY 宏,并捕获 TTN_NEEDTEXT 消息。以下是一个简单的示例:BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // 其他消息映射... ON_NOTIFY(TTN_NEEDTEXT, 0, OnToolHitTest)END_MESSAGE_MAP()// 处理 TTN_NEEDTEXT 消息的成员函数afx_msg void OnToolHitTest(NMHDR* pNMHDR, LRESULT* pResult);// 在你的窗口类中实现 OnToolHitTest 函数void CMyWnd::OnToolHitTest(NMHDR* pNMHDR, LRESULT* pResult){ // 在这里处理工具提示相关的逻辑 // 根据需要设置工具提示文本和工具提...
MFC CWnd 类 公共方法:CWnd::OnHelp
CWnd::OnHelp 不是 CWnd 类的直接成员方法。在 MFC 中,处理帮助相关的功能通常会使用消息映射机制和相应的消息处理函数。MFC 提供了 WM_HELP 消息来处理帮助相关的操作。你可以在你的窗口类中添加一个消息映射,以便处理这个消息。例如:BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // 其他消息映射... ON_WM_HELP()END_MESSAGE_MAP()// 处理 WM_HELP 消息的成员函数afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);在上面的例子中,ON_WM_HELP() 宏添加了 WM_HELP 消息的消息映射。然后,你需要在窗口类中实现相应的成员函数,例如 OnHelpInfo:BOOL CMyWnd::OnHelpInfo(HELPINFO* pHelpInfo){ // 在这里处理帮助相关的逻辑 // 返回 TRUE 表示已处理,返回 FALSE 表示未处理 return TRUE;}在这个处理函数中,你可以添加你希望执行的帮助相关逻辑。请注意,这只是一个简...