MFC CWnd 类 公共数据成员:CWnd::m_hWnd
在 MFC 中,CWnd 类的公共数据成员 m_hWnd 是一个表示窗口句柄(HWND)的成员变量。每个窗口都有一个唯一的窗口句柄,由操作系统分配。m_hWnd 存储了 CWnd 对象关联的窗口句柄。你可以使用 m_hWnd 成员变量来访问和操作窗口句柄。例如,你可以使用它来发送窗口消息,获取窗口的属性,或者在代码中直接操作窗口。以下是一个简单的示例:CWnd* pWnd = ...; // 通过某种方式获取窗口对象HWND hWnd = pWnd->m_hWnd; // 获取窗口句柄// 使用窗口句柄进行操作::SendMessage(hWnd, WM_CLOSE, 0, 0); // 发送关闭窗口消息// 获取窗口的标题CString windowTitle;::GetWindowText(hWnd, windowTitle.GetBufferSetLength(256), 256);windowTitle.ReleaseBuffer();// 其他窗口操作...请注意,在使用 m_hWnd 之前,你应该确保 CWnd 对象已经被创建,否则 m_hWnd 可能为 NULL。另...
MFC CWnd 类 公共运算符:CWnd::operator ==
在 MFC(Microsoft Foundation Classes)中,CWnd 类表示窗口,它具有一些重要的运算符,其中之一就是 operator==。CWnd 类的 operator== 运算符用于比较两个窗口对象是否相等。具体而言,CWnd::operator== 用于比较两个 CWnd 对象的窗口句柄(HWND)。窗口句柄是操作系统为每个窗口分配的唯一标识符。通过比较窗口句柄,你可以确定两个 CWnd 对象是否表示同一个窗口。以下是 CWnd::operator== 的简单示例用法:CWnd* pWnd1 = ...; // 通过某种方式获取第一个窗口对象CWnd* pWnd2 = ...; // 通过某种方式获取第二个窗口对象if (pWnd1 != nullptr && pWnd2 != nullptr) { if (*pWnd1 == *pWnd2) { // 两个窗口对象相等 // 执行相应的操作 } else { // 两个窗口对象不相等 // 执行相应的操作 }}请注意,CW...
MFC CWnd 类 公共运算符:CWnd::operator HWND
在 MFC(Microsoft Foundation Classes)中,CWnd::operator HWND 是一个公共运算符重载,它允许将 CWnd 类型的对象转换为一个 HWND 句柄。具体而言,CWnd::operator HWND 的实现如下:CWnd::operator HWND() const;这个运算符重载允许你像下面这样将一个 CWnd 对象转换为 HWND:CWnd myWnd; // 假设有一个 CWnd 对象HWND hWnd = myWnd; // 将 CWnd 对象转换为 HWND这在某些情况下很方便,尤其是在需要使用 Windows API 函数或其他接受 HWND 参数的函数时。通过这种转换,你可以直接使用 CWnd 对象的句柄而无需显式调用 GetSafeHwnd() 或其他获取句柄的方法。例如:CWnd myWnd; // 假设有一个 CWnd 对象::SendMessage(myWnd, WM_CLOSE, 0, 0); // 直接使用 HWND 进行消息发送这里 ::SendMessage 是一个 Windows API 函数,它要求传递一个 ...
MFC CWnd 类 受保护方法:CWnd::WindowProc
CWnd::WindowProc 是 MFC(Microsoft Foundation Classes)中的一个受保护方法,用于处理窗口消息。在 MFC 中,CWnd 类是窗口类的基类,WindowProc 方法用于处理窗口的消息。WindowProc 方法的原型如下:LRESULT CWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam);在派生自 CWnd 的类中,你可以重写这个方法来处理特定的窗口消息。当窗口接收到消息时,MFC 将调用 WindowProc 方法,并将消息的类型、wParam、lParam 作为参数传递给该方法。你可以根据需要进行处理,并返回处理结果。以下是一个简单的示例,演示如何在派生类中重写 WindowProc 方法:class CMyWnd : public CWnd{public: // 构造函数等protected: // 重写 WindowProc 方法 virtual LRESULT WindowProc(UINT message, WPARAM wParam, L...
MFC CWnd 类 受保护方法:CWnd::PostNcDestroy
CWnd::PostNcDestroy 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于在窗口非客户区销毁后的处理。当窗口的非客户区(非工作区)被销毁时,PostNcDestroy 方法会被调用。你可以在派生类中覆盖这个方法,以便在窗口销毁后执行特定的操作。例如,释放与窗口相关的资源。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: virtual void PostNcDestroy(); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ...END_MESSAGE_MAP()void CMyWnd::PostNcDestroy(){ // 在这里添加窗口销毁后的处理代码 // 例如,释放与窗口相关的资源 // ... // 调用基类的处理以确保正常的销毁行为 CWnd::PostNcDestroy();}上面的代码中,CMyWnd 是你的派生...
MFC CWnd 类 受保护方法:CWnd::OnWndMsg
CWnd::OnWndMsg 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理特定的 Windows 消息。该方法允许你直接处理 Windows 消息,而不通过消息映射。通过覆盖 OnWndMsg 方法,你可以在派生类中处理任何未被 MFC 默认处理的 Windows 消息。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg LRESULT OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ...END_MESSAGE_MAP()LRESULT CMyWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam){ // 在这里添加处理特定 Windows 消息的代码 // 使用传递进来的参...
MFC CWnd 类 受保护方法:CWnd::OnWinIniChange
CWnd::OnWinIniChange 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理系统配置文件(win.ini)发生变化时的消息。当系统配置文件(win.ini)中的某些设置发生变化时,例如字体或颜色等,OnWinIniChange 方法会被调用。你可以在你的派生类中覆盖这个方法,以便在系统配置变化时执行特定的操作。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnWinIniChange(LPCTSTR lpszSectionName); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_WININICHANGE()END_MESSAGE_MAP()void CMyWnd::OnWinIniChange(LPCTSTR lpszSectionName){ // 在这里添加处理系统配置变化的代码 /...
MFC CWnd 类 受保护方法:CWnd::OnWindowPosChanging
CWnd::OnWindowPosChanging 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理窗口位置即将变化时的消息。当窗口的位置或大小即将发生变化时,OnWindowPosChanging 方法会被调用。你可以在你的派生类中覆盖这个方法,以便在窗口位置即将变化时执行特定的操作。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_WINDOWPOSCHANGING()END_MESSAGE_MAP()void CMyWnd::OnWindowPosChanging(WINDOWPOS* lpwndpos){ // 在这里添加处理窗口位置即将变化的代码 // 可以使用传递进来...
MFC CWnd 类 受保护方法:CWnd::OnWindowPosChanged
CWnd::OnWindowPosChanged 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理窗口位置变化的消息。当窗口的位置或大小发生变化时,OnWindowPosChanged 方法会被调用。你可以在你的派生类中覆盖这个方法,以便在窗口位置变化时执行特定的操作。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_WINDOWPOSCHANGED()END_MESSAGE_MAP()void CMyWnd::OnWindowPosChanged(WINDOWPOS* lpwndpos){ // 在这里添加处理窗口位置变化的代码 // 可以使用传递进来的参数 lpwndpos 进...
MFC CWnd 类 受保护方法:CWnd::OnVScroll
CWnd::OnVScroll 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理垂直滚动条的滚动事件。当一个拥有垂直滚动条的窗口或控件接收到 WM_VSCROLL 消息时,OnVScroll 方法会被调用。该方法允许你在垂直滚动发生时执行特定的操作,例如更新显示内容。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_VSCROLL()END_MESSAGE_MAP()void CMyWnd::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ // 在这里添加处理垂直滚动事件的代码 ...
MFC CWnd 类 受保护方法:CWnd::OnVKeyToItem
CWnd::OnVKeyToItem 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理在控件中按键与列表框或组合框中的项的映射关系。这个方法通常在响应控件的键盘输入时被调用。当用户在一个具有列表框或组合框风格的控件中按键时,OnVKeyToItem 可以用于确定按键与控件中的项之间的映射关系。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_VKEYTOITEM()END_MESSAGE_MAP()int CMyWnd::OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex){ // 在这里添加处理...
MFC CWnd 类 受保护方法:CWnd::OnUpdateUIState
CWnd::OnUpdateUIState 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理更新用户界面状态的消息。当窗口接收到 WM_UPDATEUISTATE 消息时,OnUpdateUIState 方法会被调用。这个方法通常用于响应用户界面状态的变化,例如激活、禁用或隐藏控件。你可以在你的派生类中覆盖这个方法,以便在接收到相应消息时执行特定的操作。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnUpdateUIState(UINT nAction, UINT nUIElement); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_UPDATEUISTATE()END_MESSAGE_MAP()void CMyWnd::OnUpdateUIState(UINT nAction, UINT nUIElement...
MFC CWnd 类 受保护方法:CWnd::OnUniChar
CWnd::OnUniChar 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理与 Unicode 字符相关的消息。当窗口接收到 WM_UNICHAR 消息时,OnUniChar 方法会被调用。这个方法通常用于处理键盘输入,特别是在输入 Unicode 字符时。你可以在你的派生类中覆盖这个方法,以便在接收到 Unicode 字符消息时执行特定的操作。以下是一个简单的示例:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnUniChar(UINT nChar, UINT nRepCnt, UINT nFlags); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_UNICHAR()END_MESSAGE_MAP()void CMyWnd::OnUniChar(UINT nChar, UINT nRepCnt, UINT nFlags){ ...
MFC CWnd 类 受保护方法:CWnd::OnTouchInput
CWnd::OnTouchInput 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理触摸输入事件。该方法在接收到触摸输入时被调用,允许应用程序响应和处理触摸屏幕的用户操作。具体而言,这个方法可以被子类覆盖(override),以便在触摸输入事件发生时执行特定的操作。在你的派生类中,你可以像下面这样覆盖这个方法:class CMyWnd : public CWnd{ // ...protected: afx_msg void OnTouchInput(CPoint pt, int nInputNumber, int nPressure, HANDLE hDevice, UINT dwID, DWORD dwTime); DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CMyWnd, CWnd) // ... ON_WM_TOUCH()END_MESSAGE_MAP()void CMyWnd::OnTouchInput(CPoint pt, int nInput...
MFC CWnd 类 受保护方法:CWnd::OnTimer
CWnd::OnTimer 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理定时器消息。当您启动一个定时器并且定时器触发时,系统将发送 WM_TIMER 消息,并调用这个方法。以下是 OnTimer 方法的典型声明:afx_msg void OnTimer(UINT_PTR nIDEvent); nIDEvent 参数是定时器的 ID,用于标识是哪个定时器触发了消息。在实际应用中,您可以重写这个方法以执行在定时器触发时需要进行的自定义操作。例如:void CYourWndClass::OnTimer(UINT_PTR nIDEvent){ // 执行定时器触发时的自定义操作 // 调用基类实现 CWnd::OnTimer(nIDEvent);}在这个方法中,您可以根据 nIDEvent 参数的值,判断是哪个定时器触发了消息,然后执行相应的操作。为了使用这个方法,您需要在消息映射中添加对应的宏,例如:BEGIN_MESSAGE_MAP(CYourWndClass, CWnd) // 其他消息映射......
MFC CWnd 类 受保护方法:CWnd::OnTimeChange
CWnd::OnTimeChange 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理系统时间发生变化时的操作。当系统时间发生变化时,系统将发送 WM_TIMECHANGE 消息,并调用这个方法。以下是 OnTimeChange 方法的典型声明:afx_msg void OnTimeChange();在实际应用中,您可以重写这个方法以执行在系统时间变化时需要进行的自定义操作。例如:void CYourWndClass::OnTimeChange(){ // 执行系统时间变化时的自定义操作 // 调用基类实现 CWnd::OnTimeChange();}在这个方法中,您可以执行与系统时间变化相关的操作,根据需要更新您的界面或执行其他逻辑。为了使用这个方法,您需要在消息映射中添加对应的宏,例如:BEGIN_MESSAGE_MAP(CYourWndClass, CWnd) // 其他消息映射... ON_WM_TIMECHANGE()END_MESSAGE_MAP()这样,当系统时间发生变化时,On...
MFC CWnd 类 受保护方法:CWnd::OnSysKeyUp
CWnd::OnSysKeyUp 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理窗口系统键释放的消息。当用户释放按下的系统键时,系统将发送 WM_SYSKEYUP 消息,并调用这个方法。以下是 OnSysKeyUp 方法的典型声明:afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); nChar 参数是释放的键的虚拟键码。 nRepCnt 参数是释放次数。 nFlags 参数是键盘扫描码和其他标志。在实际应用中,您可以重写这个方法以执行在系统键释放时需要进行的自定义操作。例如:void CYourWndClass::OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags){ // 执行系统键释放时的自定义操作 // 调用基类实现 CWnd::OnSysKeyUp(nChar, nRepCnt, nFlags);}在这个方法中,您可以根据 nChar 参数的值,判断用户释放的具体系统键,然后...
MFC CWnd 类 受保护方法:CWnd::OnSysKeyDown
CWnd::OnSysKeyDown 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理窗口系统键按下的消息。当用户按下系统键时,系统将发送 WM_SYSKEYDOWN 消息,并调用这个方法。以下是 OnSysKeyDown 方法的典型声明:afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); nChar 参数是按下的键的虚拟键码。 nRepCnt 参数是重复次数。 nFlags 参数是键盘扫描码和其他标志。在实际应用中,您可以重写这个方法以执行在系统键按下时需要进行的自定义操作。例如:void CYourWndClass::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags){ // 执行系统键按下时的自定义操作 // 调用基类实现 CWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);}在这个方法中,您可以根据 nChar 参数的值,判断用户按下...
MFC CWnd 类 受保护方法:CWnd::OnSysCommand
CWnd::OnSysCommand 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理窗口系统命令消息。当用户通过点击标题栏上的系统菜单、执行窗口最大化、最小化、还原等操作时,系统将发送 WM_SYSCOMMAND 消息,并调用这个方法。以下是 OnSysCommand 方法的典型声明:afx_msg void OnSysCommand(UINT nID, LPARAM lParam); nID 参数是 WM_SYSCOMMAND 消息的低16位,表示触发的系统命令。 lParam 参数是 WM_SYSCOMMAND 消息的高16位,通常包含鼠标位置等信息。在实际应用中,您可以重写这个方法以执行在系统命令消息发生时需要进行的自定义操作。例如:void CYourWndClass::OnSysCommand(UINT nID, LPARAM lParam){ // 执行系统命令消息时的自定义操作 // 调用基类实现 CWnd::OnSysCommand(nID, lParam);}在这个方法中,您可以根据 ...
MFC CWnd 类 受保护方法:CWnd::OnSysColorChange
CWnd::OnSysColorChange 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理系统颜色改变时的操作。当用户更改了系统的颜色方案时,系统会调用这个方法。以下是 OnSysColorChange 方法的典型声明:afx_msg void OnSysColorChange();在实际应用中,您可以重写这个方法以执行在系统颜色改变时需要进行的自定义操作。例如:void CYourWndClass::OnSysColorChange(){ // 执行系统颜色改变时的自定义操作 // 调用基类实现 CWnd::OnSysColorChange();}在这个方法中,您可以根据需要重新设置窗口的颜色、调整绘图对象的颜色等,以适应新的系统颜色方案。为了使用这个方法,您需要在消息映射中添加对应的宏,例如:BEGIN_MESSAGE_MAP(CYourWndClass, CWnd) // 其他消息映射... ON_WM_SYSCOLORCHANGE()END_MESSAGE_MAP()这样,当系统颜...