CWnd 類別

提供 MFC 程式庫中所有視窗類別的基本功能。

語法

class CWnd : public CCmdTarget

成員

公用建構函式

名稱 描述
CWnd::CWnd 建構 CWnd 物件。

公用方法

名稱 描述
CWnd::accDoDefaultAction 由架構呼叫以執行物件的預設動作。
CWnd::accHitTest 由架構呼叫以擷取畫面中給定點的子項目或子物件。
CWnd::accLocation 由架構呼叫以擷取指定物件目前畫面的位置。
CWnd::accNavigate 由架構呼叫以便於周遊容器內的另一使用者介面項目並擷取物件 (如果可能)。
CWnd::accSelect 由架構呼叫以修改選取或移動指定物件的鍵盤焦點。
CWnd::AnimateWindow 建立相關聯的視窗物件的動畫。
CWnd::ArrangeIconicWindows 排列所有最小化 (圖示) 子視窗。
CWnd::Attach 將 Windows 控制代碼附加至 CWnd 物件。
CWnd::BeginModalState 呼叫此成員函式以製作框架視窗強制回應。
CWnd::BeginPaint 準備 CWnd 進行繪製。
CWnd::BindDefaultProperty 將呼叫物件的預設簡單繫結屬性 (在類型程式庫中標示),繫結至資料來源控制項相關聯的游標。
CWnd::BindProperty 將資料繫結控制項上的游標繫結屬性繫結至資料來源控制項,並註冊該關聯性與 MFC 繫結管理員。
CWnd::BringWindowToTop CWnd 帶到重疊視窗堆疊的最上層。
CWnd::CalcWindowRect 呼叫可從用戶端矩形計算視窗矩形。
CWnd::CancelToolTips 停用工具提示控制項。
CWnd::CenterWindow 將相對於其父系的視窗置中。
CWnd::ChangeClipboardChain 從剪貼簿檢視器的鏈結中移除 CWnd
CWnd::CheckDlgButton 在按鈕控制項旁放置核取記號,或從中移除核取記號。
CWnd::CheckRadioButton 檢查指定的選項按鈕,及移除指定的按鈕群組中所有其他選項按鈕的核取記號。
CWnd::ChildWindowFromPoint 判斷 (如果有的話) 是否有子視窗包含指定的點。
CWnd::ClientToScreen 將畫面上指定的點或矩形的用戶端座標,轉換為螢幕座標。
CWnd::CloseWindow 將視窗最小化。
CWnd::ContinueModal 繼續視窗的強制回應狀態。
CWnd::Create 建立並初始化 CWnd 物件相關聯的子視窗。
CWnd::CreateAccessibleProxy 建立指定物件的 Active Accessibility Proxy。
CWnd::CreateCaret 建立系統游標的新形狀,並取得插入號的擁有權。
CWnd::CreateControl 建立將由 CWnd 物件在 MFC 程式中表示的 ActiveX 控制項。
CWnd::CreateEx 建立 Windows 重疊、快顯視窗或子視窗,並將其附加至 CWnd 物件。
CWnd::CreateGrayCaret 建立系統游標的灰色區塊,並取得插入號的擁有權。
CWnd::CreateSolidCaret 建立系統游標的實心區塊,並取得插入號的擁有權。
CWnd::DeleteTempMap CWinApp 閒置時間處理常式自動呼叫,並刪除 FromHandle 建立的任何暫存 CWnd 物件。
CWnd::DestroyWindow 終結附加的 Windowd 視窗。
CWnd::Detach CWnd 物件卸離 Windows 控制代碼,並傳回控制代碼。
CWnd::DlgDirList 使用檔案或目錄清單填入清單方塊。
CWnd::DlgDirListComboBox 使用檔案或目錄清單來填入下拉式方塊的清單方塊。
CWnd::DlgDirSelect 從清單方塊擷取目前的選取範圍。
CWnd::DlgDirSelectComboBox 從下拉式方塊的清單方塊中擷取目前的選取範圍。
CWnd::DragAcceptFiles 指出視窗將接受拖曳的檔案。
CWnd::DragDetect 擷取滑鼠並追蹤其移動,直到使用者放開左側按鈕、按下 ESC 鍵,或將滑鼠移到指定點周圍的拖曳矩形外。
CWnd::DrawAnimatedRects 繪製框線矩形,並以動畫效果呈現它來指出圖示的開頭,或最小化或最大化視窗。
CWnd::DrawCaption 繪製標題。
CWnd::DrawMenuBar 重新繪製功能表列。
CWnd::EnableActiveAccessibility 啟用使用者定義的 Active Accessibility 函式。
CWnd::EnableDynamicLayout 可在使用者調整視窗大小時,動態調整子視窗的位置與大小。
CWnd::EnableD2DSupport 啟用或停用視窗 D2D 支援。 初始化主視窗之前先呼叫這個方法。
CWnd::EnableScrollBar 啟用或停用一個捲軸的一或兩個箭號。
CWnd::EnableScrollBarCtrl 啟用或停用同層級捲軸控制項。
CWnd::EnableToolTips 啟用工具提示控制項。
CWnd::EnableTrackingToolTips 啟用追蹤模式中的工具提示控制項。
CWnd::EnableWindow 啟用或停用滑鼠和鍵盤輸入。
CWnd::EndModalLoop 結束視窗的強制回應狀態。
CWnd::EndModalState 呼叫此成員函式,將框架視窗從強制回應變更為非強制回應。
CWnd::EndPaint 標記繪製的結束。
CWnd::ExecuteDlgInit 初始化對話方塊資源。
CWnd::FilterToolTipMessage 擷取對話方塊中控制項相關聯的標題或文字。
CWnd::FindWindow 傳回由其視窗名稱和視窗類別識別的視窗控制代碼。
CWnd::FindWindowEx 傳回由其視窗名稱和視窗類別識別的視窗控制代碼。
CWnd::FlashWindow 閃爍視窗一次。
CWnd::FlashWindowEx 閃爍視窗與其他功能。
CWnd::FromHandle 將控制代碼提供給視窗時,將指標傳回至 CWnd 物件。 CWnd如果物件未附加至控制碼,則會建立並附加暫存 CWnd 物件。
CWnd::FromHandlePermanent 將控制代碼提供給視窗時,將指標傳回至 CWnd 物件。
CWnd::get_accChild 由架構呼叫以擷取指定子系的 IDispatch 介面位址。
CWnd::get_accChildCount 由架構呼叫以擷取屬於此物件的子物件數目。
CWnd::get_accDefaultAction 由架構呼叫以擷取具有物件預設動作描述的字串。
CWnd::get_accDescription 由架構呼叫以擷取含有指定物件的視覺外觀描述的字串。
CWnd::get_accFocus 由架構呼叫以擷取具有鍵盤焦點的物件。
CWnd::get_accHelp 由架構呼叫以擷取物件的 Help 屬性字串。
CWnd::get_accHelpTopic 由架構呼叫以擷取 WinHelp 檔 (與指定物件和該檔案中適切主題的識別項關聯) 的完整路徑。
CWnd::get_accKeyboardShortcut 由架構呼叫以擷取指定物件的快速鍵或便捷鍵。
CWnd::get_accName 由架構呼叫以擷取指定物件的名稱。
CWnd::get_accParent 由架構呼叫以擷取物件之父代的 IDispatch 介面。
CWnd::get_accRole 由架構呼叫以擷取含有指定物件的角色描述資訊。
CWnd::get_accSelection 由架構呼叫以擷取此物件的選取子物件。
CWnd::get_accState 由架構呼叫以擷取指定物件的目前狀態。
CWnd::get_accValue 由架構呼叫以擷取指定物件的值。
CWnd::GetActiveWindow 擷取使用中視窗。
CWnd::GetAncestor 擷取指定視窗的上階視窗物件。
CWnd::GetCapture 擷取具有滑鼠捕捉的 CWnd
CWnd::GetCaretPos 擷取插入號之目前位置的用戶端座標。
CWnd::GetCheckedRadioButton 傳回按鈕群組中目前核取的選項按鈕的識別碼。
CWnd::GetClientRect 取得 CWnd 工作區的維度。
CWnd::GetClipboardOwner 擷取剪貼簿的目前擁有者的指標。
CWnd::GetClipboardViewer 擷取剪貼簿檢視器鏈結中的第一個視窗的指標。
CWnd::GetControlUnknown 擷取至未知 ActiveX 控制項的指標。
CWnd::GetDC 擷取工作區的顯示內容。
CWnd::GetDCEx 擷取工作區的顯示內容,並在繪製時啟用裁剪。
CWnd::GetDCRenderTarget 擷取裝置內容 (DC) 會呈現 CWnd 視窗的目標。
CWnd::GetDescendantWindow 搜尋所有下階視窗,並傳回具有指定識別碼的視窗。
CWnd::GetDesktopWindow 擷取 Windows 桌面視窗。
CWnd::GetDlgCtrlID 如果 CWnd 是子視窗,呼叫這個函式會傳回它的識別碼值。
CWnd::GetDlgItem 從指定的對話方塊中擷取具有指定識別碼的控制項。
CWnd::GetDlgItemInt 將指定對話方塊中的控制項文字轉譯成整數值。
CWnd::GetDlgItemText 擷取與控制項相關聯的標題或文字。
CWnd::GetDSCCursor 擷取料來源控制項的 DataSource、UserName、Password 和 SQL 屬性所定義之基礎游標的指標。
CWnd::GetDynamicLayout 擷取動態配置管理員物件的指標。
CWnd::GetExStyle 傳回視窗的延伸樣式。
CWnd::GetFocus 擷取目前具有輸入焦點的 CWnd
CWnd::GetFont 擷取目前的字型。
CWnd::GetForegroundWindow 讓指標回到前景視窗 (使用者目前使用的最上層視窗)。
CWnd::GetIcon 擷取圖示的控制代碼。
CWnd::GetLastActivePopup 判斷 CWnd 擁有的快顯視窗哪一個是最近啟用的。
CWnd::GetLayeredWindowAttributes 擷取分層視窗的不透明和透明色鍵。
CWnd::GetMenu 擷取指定功能表的指標。
CWnd::GetNextDlgGroupItem 搜尋控制項群組內的下一個 (或上一個) 控制項。
CWnd::GetNextDlgTabItem 擷取第一個控制項, WS_TABSTOP 其樣式緊接在指定的控制項後面(或之前)。
CWnd::GetNextWindow 傳回視窗管理員清單中的下一個 (或上一個) 視窗。
CWnd::GetOleControlSite 擷取指定的 ActiveX 控制項的自訂網站。
CWnd::GetOpenClipboardWindow 擷取目前已開啟剪貼簿的視窗指標。
CWnd::GetOwner 擷取 CWnd 擁有者的指標。
CWnd::GetParent 擷取 CWnd 的父視窗 (如果有的話)。
CWnd::GetParentFrame 擷取 CWnd 物件的父框架視窗。
CWnd::GetParentOwner 傳回子視窗的父視窗指標。
CWnd::GetProperty 擷取 ActiveX 控制項屬性。
CWnd::GetRenderTarget 取得與此視窗相關聯的呈現目標。
CWnd::GetSafeHwnd 如果指標為 Null, this 則傳 m_hWnd 回 或 Null。
CWnd::GetSafeOwner 擷取給定視窗的安全擁有者。
CWnd::GetScrollBarCtrl 傳回一個同層級捲軸控制項。
CWnd::GetScrollBarInfo 擷取所指定之捲軸的相關資訊。
CWnd::GetScrollInfo 擷取 SCROLLINFO 結構維護的捲軸相關資訊。
CWnd::GetScrollLimit 擷取捲軸的限制。
CWnd::GetScrollPos 擷取捲動方塊的目前位置。
CWnd::GetScrollRange 複製給定捲軸目前的最小和最大捲軸位置。
CWnd::GetStyle 傳回目前的視窗樣式。
CWnd::GetSystemMenu 可讓應用程式存取控制功能表以進行複製和修改。
CWnd::GetTitleBarInfo 擷取指定之標題列的相關資訊。
CWnd::GetTopLevelFrame 擷取視窗的最上層框架視窗。
CWnd::GetTopLevelOwner 擷取最上層視窗。
CWnd::GetTopLevelParent 擷取視窗的最上層父代。
CWnd::GetTopWindow 傳回屬於 CWnd 的第一個子視窗。
CWnd::GetUpdateRect 擷取完全圍住 CWnd 更新區域的最小矩形座標。
CWnd::GetUpdateRgn 擷取 CWnd 更新區域。
CWnd::GetWindow 傳回與此視窗具有指定關聯性的視窗。
CWnd::GetWindowContextHelpId 擷取說明內容識別碼。
CWnd::GetWindowDC 擷取整個視窗的顯示內容,包括標題列、功能表和捲軸。
CWnd::GetWindowedChildCount 傳回相關聯子視窗的數目。
CWnd::GetWindowInfo 傳回視窗的相關資訊。
CWnd::GetWindowlessChildCount 傳回相關聯的無視窗子視窗數目。
CWnd::GetWindowPlacement 擷取視窗的顯示狀態和一般 (還原)、最小化和最大化位置。
CWnd::GetWindowRect 取得 CWnd 的螢幕座標。
CWnd::GetWindowRgn 擷取視窗的視窗區域複本。
CWnd::GetWindowText 傳回視窗文字或標題 (如果有的話)。
CWnd::GetWindowTextLength 傳回視窗的文字或標題的長度。
CWnd::HideCaret 藉由從顯示畫面移除插入號來隱藏該插入號。
CWnd::HiliteMenuItem 反白顯示或從最上層 (功能表列) 的功能表項目中移除反白顯示。
CWnd::HtmlHelp 呼叫以初始化 HTMLHelp 應用程式。
CWnd::Invalidate 使整個工作區失效。
CWnd::InvalidateRect 將矩形加入至目前的更新區域,使給定矩形內的工作區失效。
CWnd::InvalidateRgn 將區域加入至目前的更新區域,使給定區域內的工作區失效。
CWnd::InvokeHelper 叫用 ActiveX 控制項方法或屬性。
CWnd::IsChild 指出 CWnd 是子視窗,還是指定視窗的其他直屬下階。
CWnd::IsD2DSupportEnabled 判斷是否啟用 D2D 支援。
CWnd::IsDialogMessage 判斷指定的訊息是否適用於非強制回應對話方塊,若是則處理它。
CWnd::IsDlgButtonChecked 決定是否核取按鈕控制項。
CWnd::IsDynamicLayoutEnabled 決定是否在這個視窗上啟用動態配置。 如果啟用動態配置時,則使用者可在調整父視窗大小時變更子視窗的位置與大小。
CWnd::IsIconic 決定是否將 CWnd 降到最低 (圖示)。
CWnd::IsTouchWindow 指定 CWnd 是否有觸控支援。
CWnd::IsWindowEnabled 決定是否為滑鼠和鍵盤輸入啟用視窗。
CWnd::IsWindowVisible 決定視窗是否可見。
CWnd::IsZoomed 決定是否將 CWnd 最大化。
CWnd::KillTimer 刪除系統計時器。
CWnd::LockWindowUpdate 停用或重新啟用在給定視窗中繪製。
CWnd::MapWindowPoints 將一組點從 CWnd 的座標空間轉換 (對應) 至另一個視窗的座標空間。
CWnd::MessageBox 建立並顯示視窗,其中包含應用程式提供的訊息和標題。
CWnd::ModifyStyle 修改目前的視窗樣式。
CWnd::ModifyStyleEx 修改視窗的延伸樣式。
CWnd::MoveWindow 變更 CWnd 的位置和維度。
CWnd::NotifyWinEvent 表示發生預先定義之事件的系統。
CWnd::OnAmbientProperty 實作環境屬性值。
CWnd::OnDrawIconicThumbnailOrLivePreview 需要取得點陣圖,在 Windows 7 索引標籤上顯示為縮圖時,或顯示在用戶端上以查看應用程式時,由架構呼叫。
CWnd::OnHelp 在應用程式 (使用目前的內容) 中處理 F1 說明。
CWnd::OnHelpFinder ID_HELP_FINDER處理 和 ID_DEFAULT_HELP 命令。
CWnd::OnHelpIndex ID_HELP_INDEX處理命令並提供預設的 [說明] 主題。
CWnd::OnHelpUsing 處理 ID_HELP_USING 命令。
CWnd::OnToolHitTest 決定一個點是否位於指定工具的周框中並擷取工具的相關資訊。
CWnd::OpenClipboard 開啟剪貼簿。 在呼叫 Windows CloseClipboard 函式之前,其他應用程式將無法修改剪貼簿。
CWnd::PaintWindowlessControls 在控制項容器上繪製無視窗控制項。
CWnd::PostMessage 在應用程式佇列中放置訊息,然後傳回,而不需等待視窗處理訊息。
CWnd::PreCreateWindow 在建立附加至此 CWnd 物件的 Windows 視窗前呼叫。
CWnd::PreSubclassWindow 允許在呼叫之前 SubclassWindow 進行其他必要的子類別設定。
CWnd::PreTranslateMessage CWinApp 使用,可先篩選視窗訊息,再將它們分派至 TranslateMessageDispatchMessage Windows 函式。
CWnd::Print 在指定的裝置內容中繪製目前的視窗。
CWnd::PrintClient 在指定的裝置內容中繪製任何視窗 (通常是印表機裝置內容)。
CWnd::PrintWindow 將視覺視窗複製到指定的裝置內容,通常是印表機 DC。
CWnd::RedrawWindow 更新工作區中指定的矩形或區域。
CWnd::RegisterTouchWindow 註冊/取消註冊視窗 Windows 觸控支援。
CWnd::ReleaseDC 釋放用戶端和視窗裝置內容,釋放這些內容供其他應用程式使用。
CWnd::RepositionBars 工作區中的重新置放控制列。
CWnd::RunModalLoop 擷取、轉換或分派處於強制回應狀態之視窗的訊息。
CWnd::ScreenToClient 將畫面上指定的點或矩形的螢幕座標,轉換為用戶端座標。
CWnd::ScrollWindow 捲動工作區的內容。
CWnd::ScrollWindowEx 捲動工作區的內容。 類似於 ScrollWindow,但具有額外的功能。
CWnd::SendChildNotifyLastMsg 從父視窗中將通知訊息提供給子視窗,讓子視窗可以處理工作。
CWnd::SendDlgItemMessage 將訊息傳送至指定的控制項。
CWnd::SendMessage 傳送訊息給 CWnd 物件,在處理訊息後才會傳回。
CWnd::SendMessageToDescendants 傳送訊息給視窗的所有下階視窗。
CWnd::SendNotifyMessage 將指定的訊息傳送至視窗並儘速傳回,視呼叫執行緒是否建立視窗而定。
CWnd::SetActiveWindow 啟用視窗。
CWnd::SetCapture 導致所有後續滑鼠輸入傳送至 CWnd
CWnd::SetCaretPos 將插入號移動到指定的位置。
CWnd::SetClipboardViewer CWnd 新增到視窗的鏈結,每當剪貼簿的內容變更時就會通知這些視窗。
CWnd::SetDlgCtrlID 設定視窗或視窗的控制項識別碼 (這可以是任何子視窗,而不只是對話方塊中的控制項)。
CWnd::SetDlgItemInt 將控制項的文字設為表示整數值的字串。
CWnd::SetDlgItemText 在指定的對話方塊中設定控制項的標題或文字。
CWnd::SetFocus 宣告輸入焦點。
CWnd::SetFont 設定目前的字型。
CWnd::SetForegroundWindow 將建立視窗的執行緒放置到前景並啟動視窗。
CWnd::SetIcon 將控制代碼設為特定的圖示。
CWnd::SetLayeredWindowAttributes 設定分層視窗的不透明和透明色鍵。
CWnd::SetMenu 將功能表設定為指定的功能表。
CWnd::SetOwner 變更 CWnd 的擁有者。
CWnd::SetParent 變更父視窗。
CWnd::SetProperty 設定 ActiveX 控制項屬性。
CWnd::SetRedraw 允許重新繪製 CWnd 中的變更,或防止重新繪製進行變更。
CWnd::SetScrollInfo 設定捲軸的相關資訊。
CWnd::SetScrollPos 設定捲動方塊的目前位置,而且如果指定,會重新繪製捲軸以反映新位置。
CWnd::SetScrollRange 設定給定捲軸的最小和最大位置值。
CWnd::SetTimer 安裝系統計時器,以在觸發時傳送 WM_TIMER 訊息。
CWnd::SetWindowContextHelpId 設定說明內容識別碼。
CWnd::SetWindowPlacement 設定視窗的顯示狀態和一般 (還原)、最小化和最大化位置。
CWnd::SetWindowPos 變更大小、位置和子系順序、快顯視窗,和最上層視窗。
CWnd::SetWindowRgn 設定視窗的區域。
CWnd::SetWindowText 將視窗文字或標題 (如果有的話) 設為指定的文字。
CWnd::ShowCaret 在畫面上插入號的目前位置上顯示插入號。 顯示後,插入號會開始自動閃爍。
CWnd::ShowOwnedPopups 顯示或隱藏視窗擁有的所有快顯視窗。
CWnd::ShowScrollBar 顯示或隱藏捲軸。
CWnd::ShowWindow 顯示或隱藏視窗。
CWnd::SubclassDlgItem 將 Windows 控制項附加至 CWnd 物件,並使其透過 CWnd 的訊息對應來路由訊息。
CWnd::SubclassWindow 將視窗附加至 CWnd 物件,並使其透過 CWnd 的訊息對應來路由訊息。
CWnd::UnlockWindowUpdate 解除鎖定已使用 CWnd::LockWindowUpdate 鎖定的視窗。
CWnd::UnsubclassWindow CWnd 物件中斷連結視窗
CWnd::UpdateData 從對話方塊中初始化或擷取資料。
CWnd::UpdateDialogControls 呼叫以更新對話方塊按鈕和其他控制項的狀態。
CWnd::UpdateLayeredWindow 更新分層視窗的位置、大小、形狀、內容和透明度。
CWnd::UpdateWindow 更新工作區。
CWnd::ValidateRect 從目前的更新區域中移除矩形,驗證給定矩形內的工作區。
CWnd::ValidateRgn 從目前的更新區域中移除區域,驗證給定區域內的工作區。
CWnd::WindowFromPoint 識別包含指定點的視窗。
CWnd::WinHelp 呼叫以初始化 WinHelp 應用程式。

受保護的方法

名稱 描述
CWnd::Default 呼叫預設視窗程序,提供應用程式不會處理的任何視窗訊息的預設處理程序。
CWnd::DefWindowProc 呼叫預設視窗程序,提供應用程式不會處理的任何視窗訊息的預設處理程序。
CWnd::DoDataExchange 適用於對話方塊資料交換和驗證。 由 UpdateData 呼叫。
CWnd::GetCurrentMessage 傳回此視窗目前正在處理的訊息指標。 只有在訊息處理常式成員函式中 OnMessage 時,才應該呼叫 。
CWnd::InitDynamicLayout 由架構呼叫以初始化視窗的動態配置。
CWnd::LoadDynamicLayoutResource 從資源檔載入動態配置資訊。
CWnd::OnActivate CWnd 啟動或停用時呼叫。
CWnd::OnActivateApp 當應用程式即將啟動或停用時呼叫。
CWnd::OnAppCommand 當使用者產生應用程式命令事件時呼叫。
CWnd::OnAskCbFormatName 當剪貼簿擁有者將顯示剪貼簿內容時,由剪貼簿檢視器應用程式呼叫。
CWnd::OnCancelMode 呼叫以讓 CWnd 取消任何內部的模式,例如滑鼠捕捉。
CWnd::OnCaptureChanged 將訊息傳送至正失去滑鼠捕捉的視窗。
CWnd::OnChangeCbChain 通知正在從鏈結中移除指定的視窗。
CWnd::OnChangeUIState 應變更使用者介面 (UI) 狀態時呼叫。
CWnd::OnChar 按鍵轉譯為非系統字元時呼叫。
CWnd::OnCharToItem 由子清單方塊呼叫,其中包含回應 WM_CHAR 訊息的 LBS_WANTKEYBOARDINPUT 樣式。
CWnd::OnChildActivate 每當 CWnd 的大小或位置變更,或 CWnd 已啟動時,針對多重文件介面 (MDI) 子視窗呼叫。
CWnd::OnChildNotify 由父視窗呼叫,讓通知控制項有機會回應控制項通知。
CWnd::OnClipboardUpdate 於剪貼簿內容已變更時呼叫。
CWnd::OnClose 呼叫以表示 CWnd 應該關閉。
CWnd::OnColorizationColorChanged 當非工作區的轉譯原則已變更時呼叫。
CWnd::OnCommand 當使用者選取命令時呼叫。
CWnd::OnCompacting 當 Windows 偵測到系統記憶體過低時呼叫。
CWnd::OnCompareItem 呼叫以判斷子排序之主控描繪的下拉式方塊或清單方塊中新項目的相對位置。
CWnd::OnCompositionChanged 當桌面視窗管理員 (DWM) 組合啟用或停用時,為所有最上層視窗呼叫。
CWnd::OnContextMenu 當使用者在視窗中按一下滑鼠右鍵時呼叫。
CWnd::OnCopyData 在應用程式之間複製資料。
CWnd::OnCreate 在視窗建立過程中呼叫。
CWnd::OnCtlColor 即將繪製控制項時,如果CWnd 是控制項的父代則呼叫。
CWnd::OnDeadChar 當按鍵轉譯為非系統無效字元 (例如強調符號) 時呼叫。
CWnd::OnDeleteItem 當主控描繪子清單方塊或下拉式方塊損毀,或從控制項移除項目時呼叫。
CWnd::OnDestroy CWnd 正在損毀時呼叫。
CWnd::OnDestroyClipboard 當剪貼簿透過 Windows EmptyClipboard 函式的呼叫清空時呼叫。
CWnd::OnDeviceChange 將裝置或電腦的硬體組態變更通知應用程式或裝置驅動程式。
CWnd::OnDevModeChange 當使用者變更裝置模式設定時,針對所有最上層視窗呼叫。
CWnd::OnDrawClipboard 於剪貼簿內容變更時呼叫。
CWnd::OnDrawItem 主控描繪子按鈕控制項、下拉式方塊控制項、清單方塊控制項或功能表的視覺外觀必須繪製時呼叫。
CWnd::OnDropFiles 當使用者在視窗 (已本身註冊為捨棄檔案的收件者) 上放開滑鼠按鈕時呼叫。
CWnd::OnEnable 啟用或停用 CWnd 時呼叫。
CWnd::OnEndSession 當工作階段正在結束時呼叫。
CWnd::OnEnterIdle 呼叫此函式,可將強制回應對話方塊或功能表正在進入閒置狀態的訊息,通知應用程式的主視窗程序。
CWnd::OnEnterMenuLoop 已進入功能表強制回應迴圈時呼叫。
CWnd::OnEnterSizeMove 在受影響的視窗進入移動或調整大小的強制回應迴圈後呼叫。
CWnd::OnEraseBkgnd 視窗背景需要清除時呼叫。
CWnd::OnExitMenuLoop 已結束功能表強制回應迴圈時呼叫。
CWnd::OnExitSizeMove 在受影響的視窗結束移動或調整大小的強制回應迴圈後呼叫。
CWnd::OnFontChange 字型資源的集區變更時呼叫。
CWnd::OnGetDlgCode 呼叫控制項,讓控制項可以處理方向鍵和 TAB 鍵輸入本身。
CWnd::OnGetMinMaxInfo 每當 Windows 必須知道最大化的位置或維度,或最小或最大的追蹤大小時呼叫。
CWnd::OnHelpInfo 當使用者按下 F1 鍵時,由架構呼叫。
CWnd::OnHotKey 當使用者按下全系統的便捷鍵時呼叫。
CWnd::OnHScroll 當使用者按一下 CWnd 的水平捲軸時呼叫。
CWnd::OnHScrollClipboard 當剪貼簿擁有者應該捲動剪貼簿影像、使適當的區段失效,及更新捲軸值時呼叫。
CWnd::OnIconEraseBkgnd CWnd 減到最小 (圖示),且必須先填入圖示的背景再繪製圖示時呼叫。
CWnd::OnInitMenu 當功能表即將變成現用時呼叫。
CWnd::OnInitMenuPopup 當快顯功能表即將變成現用時呼叫。
CWnd::OnInputDeviceChange 從系統中新增或移除 I/O 裝置時呼叫。
CWnd::OnInputLangChange 在應用程式的輸入語言變更後呼叫。
CWnd::OnInputLangChangeRequest 當使用者選擇新的輸入語言時呼叫。
CWnd::OnKeyDown 按下非系統鍵時呼叫。
CWnd::OnKeyUp 放開非系統鍵時呼叫。
CWnd::OnKillFocus CWnd 遺失輸入焦點前立即呼叫。
CWnd::OnLButtonDblClk 當使用者按兩下滑鼠左鍵時呼叫。
CWnd::OnLButtonDown 當使用者按下滑鼠左鍵時呼叫。
CWnd::OnLButtonUp 當使用者放開滑鼠左鍵時呼叫。
CWnd::OnMButtonDblClk 當使用者按兩下滑鼠中鍵時呼叫。
CWnd::OnMButtonDown 當使用者按下滑鼠中鍵時呼叫。
CWnd::OnMButtonUp 當使用者放開滑鼠中鍵時呼叫。
CWnd::OnMDIActivate 當 MDI 子視窗啟用或停用時呼叫。
CWnd::OnMeasureItem 建立控制項時,針對主控描繪子下拉式方塊、清單方塊或功能表項目呼叫。 CWnd 會將控制項維度通知 Windows。
CWnd::OnMenuChar 當使用者按下功能表的助憶鍵字元,且該字元不符合目前功能表中任何預先定義的助憶鍵時呼叫。
CWnd::OnMenuDrag 當使用者開始拖曳功能表項目時呼叫。
CWnd::OnMenuGetObject 當滑鼠游標進入功能表項目,或從項目中央移到項目上方或下方時呼叫。
CWnd::OnMenuRButtonUp 當游標位於功能表項目上,而使用者放開滑鼠右鍵時呼叫。
CWnd::OnMenuSelect 當使用者選取功能表項目時呼叫。
CWnd::OnMouseActivate 當游標處於非使用中視窗,且使用者按下滑鼠按鈕時呼叫。
CWnd::OnMouseHover 當游標停留在視窗的工作區上,在之前呼叫 中指定的一段時間時呼叫 TrackMouseEvent
CWnd::OnMouseHWheel 當滑鼠的水準滾動滾輪傾斜或旋轉時呼叫。
CWnd::OnMouseLeave 當游標離開之前呼叫 中所指定視窗的工作區時呼叫 TrackMouseEvent
CWnd::OnMouseMove 當滑鼠游標移動時呼叫。
CWnd::OnMouseWheel 當使用者旋轉滑鼠滾輪時呼叫。 使用 Windows NT 4.0 訊息處理。
CWnd::OnMove CWnd 的位置變更後呼叫。
CWnd::OnMoving 指出使用者正在移動 CWnd 物件。
CWnd::OnNcActivate 當非工作區需要變更以表示作用中或非作用中狀態時呼叫。
CWnd::OnNcCalcSize 需要計算工作區的大小和位置時呼叫。
CWnd::OnNcCreate 建立非工作區之前 OnCreate 呼叫。
CWnd::OnNcDestroy 當非工作區正在損毀時呼叫。
CWnd::OnNcHitTest 每次移動滑鼠時,如果 CWnd 包含游標,或已使用 SetCapture 擷取滑鼠輸入時呼叫。
CWnd::OnNcLButtonDblClk 當使用者按兩下滑鼠左鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcLButtonDown 當使用者按下滑鼠左鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcLButtonUp 當使用者放開滑鼠左鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcMButtonDblClk 當使用者按兩下滑鼠中鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcMButtonDown 當使用者按下滑鼠中鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcMButtonUp 當使用者放開滑鼠中鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcMouseHover 當游標停留在視窗的非工作區上,在之前呼叫 中所指定的一段時間內呼叫 時呼叫 TrackMouseEvent
CWnd::OnNcMouseLeave 當游標離開之前呼叫 TrackMouseEvent 中所指定視窗的非工作區時,架構會呼叫這個成員函式。
CWnd::OnNcMouseMove 當游標在 CWnd 的非工作區內移動時呼叫。
CWnd::OnNcPaint 當非工作區需要繪製時呼叫。
CWnd::OnNcRButtonDblClk 當使用者按兩下滑鼠右鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcRButtonDown 當使用者按下滑鼠右鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcRButtonUp 當使用者放開滑鼠右鍵,而游標位於 CWnd 的非工作區內時呼叫。
CWnd::OnNcRenderingChanged 當非工作區的轉譯原則已變更時呼叫。
CWnd::OnNcXButtonDblClk 當使用者按兩下 XBUTTON1XBUTTON2 游標位於視窗的非工作區時呼叫。
CWnd::OnNcXButtonDown 當使用者按下 XBUTTON1 滑鼠或 XBUTTON2 滑鼠時,游標位於視窗的非工作區時呼叫。
CWnd::OnNcXButtonUp 當使用者放開 XBUTTON1 滑鼠或在 XBUTTON2 游標位於視窗的非工作區時呼叫。
CWnd::OnNextMenu 當使用向右鍵或向左鍵切換功能表列和系統功能表時呼叫。
CWnd::OnNotify 由架構呼叫,將其中一個控制項已發生的事件,或控制項需要資訊等狀況通知父視窗。
CWnd::OnNotifyFormat 呼叫 以判斷目前視窗是否接受通知訊息中的 WM_NOTIFY ANSI 或 Unicode 結構。
CWnd::OnPaint 呼叫以重新繪製視窗的一部份。
CWnd::OnPaintClipboard 當需要重新繪製剪貼簿檢視器的工作區時呼叫。
CWnd::OnPaletteChanged 呼叫以允許使用調色盤的視窗調整其邏輯色板的大小,並更新其工作區。
CWnd::OnPaletteIsChanging 當應用程式即將實現其邏輯色板時通知其他應用程式。
CWnd::OnParentNotify 建立或終結子視窗時,或當使用者按一下滑鼠按鈕,而游標移至子視窗上方時,進行呼叫。
CWnd::OnPowerBroadcast 電源管理事件發生時呼叫。
CWnd::OnQueryDragIcon 最小化 (圖示化) CWnd 即將由使用者拖曳時呼叫。
CWnd::OnQueryEndSession 當使用者選擇結束 Windows 工作階段時呼叫。
CWnd::OnQueryNewPalette 通知 CWnd 即將接收輸入焦點。
CWnd::OnQueryOpen CWnd 是圖示,且使用者要求開啟圖示時呼叫。
CWnd::OnQueryUIState 呼叫以擷取視窗的使用者介面 (UI) 狀態。
CWnd::OnRawInput 當目前視窗取得原始輸入時呼叫。
CWnd::OnRButtonDblClk 當使用者按兩下滑鼠右鍵時呼叫。
CWnd::OnRButtonDown 當使用者按下滑鼠右鍵時呼叫。
CWnd::OnRButtonUp 當使用者放開滑鼠右鍵時呼叫。
CWnd::OnRenderAllFormats 當擁有者應用程式正在被破壞,而且需要呈現其所有格式時呼叫。
CWnd::OnRenderFormat 需要呈現具有延遲轉譯需求的特定格式時,針對剪貼簿擁有者呼叫。
CWnd::OnSessionChange 呼叫以將工作階段狀態的變更通知應用程式。
CWnd::OnSetCursor 如果未擷取滑鼠輸入,而且滑鼠會在視窗中造成游標移動,則呼叫 。
CWnd::OnSetFocus CWnd 取得輸入焦點後呼叫。
CWnd::OnSettingChange 當 Win32 SystemParametersInfo 函式變更整個系統的設定時呼叫。
CWnd::OnShowWindow CWnd 要隱藏或顯示時呼叫。
CWnd::OnSize CWnd 大小變更後呼叫。
CWnd::OnSizeClipboard 當剪貼簿檢視器視窗中的工作區大小變更後呼叫。
CWnd::OnSizing 表示使用者正在重新調整矩形的大小。
CWnd::OnSpoolerStatus 每當加入工作或從列印管理員佇列中移除工作時,從列印管理員呼叫。
CWnd::OnStyleChanged 表示 SetWindowLong Windows 函式已變更視窗的一或多個樣式。
CWnd::OnStyleChanging 指出 SetWindowLong Windows 函式即將變更視窗的一或多個樣式。
CWnd::OnSysChar 按鍵轉譯為系統字元時呼叫。
CWnd::OnSysColorChange 當系統色彩設定中進行變更時,為所有最上層視窗呼叫。
CWnd::OnSysCommand 當使用者從 [控制] 功能表中選取命令時,或在使用者選取 [最大化] 或 [最小化] 按鈕時呼叫。
CWnd::OnSysDeadChar 當按鍵轉譯為系統無效字元 (例如強調符號) 時呼叫。
CWnd::OnSysKeyDown 當使用者按住 ALT 鍵,然後按下另一個按鍵時呼叫。
CWnd::OnSysKeyUp 當使用者在按住 ALT 鍵時放開按下的按鍵時呼叫。
CWnd::OnTCard 使用者按一下可設計的按鈕時呼叫。
CWnd::OnTimeChange 在系統時間變更後,針對所有最上層視窗呼叫。
CWnd::OnTimer 在 中指定的 SetTimer 每個間隔之後呼叫。
CWnd::OnTouchInput 處理來自 Windows 觸控的單一輸入。
CWnd::OnTouchInputs 處理來自 Windows 觸控的輸入。
CWnd::OnUniChar 按下按鍵時呼叫。 也就是說,目前的視窗具有鍵盤焦點,而且 WM_KEYDOWN 函式會 TranslateMessage 翻譯訊息。
CWnd::OnUnInitMenuPopup 於下拉式功能表或子功能表被終結時呼叫。
CWnd::OnUpdateUIState 呼叫以變更指定的視窗及其所有子視窗的使用者介面 (UI) 狀態。
CWnd::OnUserChanged 在使用者登入或登出後呼叫。
CWnd::OnVKeyToItem 由擁有 CWnd 的清單方塊呼叫,以回應 WM_KEYDOWN 訊息。
CWnd::OnVScroll 當使用者按一下視窗的垂直捲軸時呼叫。
CWnd::OnVScrollClipboard 當擁有者應該捲動剪貼簿影像、使適當的區段失效,及更新捲軸值時呼叫。
CWnd::OnWindowPosChanged 當大小、位置或 Z 順序因呼叫 或其他視窗管理函式而變更時呼叫 SetWindowPos
CWnd::OnWindowPosChanging 當大小、位置或 Z 順序即將因為呼叫 或其他視窗管理函式而變更時呼叫 SetWindowPos
CWnd::OnWinIniChange 在 Windows 初始化檔案 WIN.INI 之後,針對所有最上層視窗呼叫 ,變更 。
CWnd::OnWndMsg 指出是否已處理視窗訊息。
CWnd::OnXButtonDblClk 當使用者按兩下 XBUTTON1XBUTTON2 游標位於視窗的工作區時呼叫。
CWnd::OnXButtonDown 當使用者按下 XBUTTON1XBUTTON2 游標位於視窗的工作區時呼叫。
CWnd::OnXButtonUp 當使用者放開 XBUTTON1XBUTTON2 游標位於視窗的工作區時呼叫。
CWnd::PostNcDestroy 在視窗終結之後,預設 OnNcDestroy 函式會呼叫此虛擬函式。
CWnd::ReflectChildNotify 協助程式函式,其會反映其來源的訊息。
CWnd::ReflectLastMsg 將最後一個訊息反映到子視窗。
CWnd::ResizeDynamicLayout 如果已啟用視窗的動態配置,則會在視窗大小變更以調整子視窗的版面配置時由架構呼叫。
CWnd::WindowProc 提供 CWnd 的視窗程序。 透過訊息對應的預設分派訊息。

公用運算子

名稱 描述
CWnd::operator HWND 呼叫以取得視窗的控制代碼。
CWnd::operator != 判斷視窗是否與控制碼為 m_hWnd 的視窗不同。
CWnd::operator == 判斷視窗是否與控制碼為 m_hWnd 的視窗相同。

公用資料成員

名稱 描述
CWnd::m_hWnd 表示附加至這個 CWnd 的 HWND。

備註

CWnd 物件不同於 Windows 視窗,但兩者緊密連結。 CWnd 物件是由 CWnd 建構函式和解構函式所建立或終結。 另一方面,Windows 視窗是 Windows 內部的資料結構,由 Create 成員函式所建立,並由虛擬解構函式終結 CWnd 。 函 DestroyWindow 式會終結 Windows 視窗,而不會終結 物件。

類別 CWnd 和訊息對應機制會隱藏函式 WndProc 。 傳入的 Windows 通知訊息會自動透過訊息對應路由傳送至適當的 On Message CWnd 成員函式。 您可以覆寫 On Message 成員函式,以處理衍生類別中成員的特定訊息。

CWnd 類別也可讓您建立應用程式的 Windows 子視窗。 自 CWnd 衍生類別,然後將成員變數加入至衍生類別以儲存應用程式的特定資料。 實作訊息處理常式成員函式,和衍生類別中對應的訊息,以指定訊息被導向至視窗時會發生什麼事。

您在兩個步驟中建立子視窗。 首先,呼叫建構函式 CWnd 來建構 CWnd 物件,然後呼叫 Create 成員函式來建立子視窗,並將它附加至 CWnd 物件。

當使用者終止子視窗時,摧毀 CWnd 物件,或呼叫 DestroyWindow 成員函式來移除視窗並摧毀其資料結構。

在 Microsoft Foundation 類別庫中,會自 CWnd 衍生進一步類別以提供特定的視窗類型。 其中許多類別,包括 CFrameWndCMDIFrameWndCMDIChildWndCView 、 和 CDialog ,都是針對進一步衍生而設計的。 衍生自 CWnd 的控制項類別,例如 CButton ,可以直接使用,或可用於進一步衍生類別。

如需使用 CWnd 的詳細資訊,請參閱 Frame Windows Window 物件

繼承階層架構

CObject

CCmdTarget

CWnd

需求

標題: afxwin.h

CWnd::accDoDefaultAction

由架構呼叫以執行物件的預設動作。

virtual HRESULT accDoDefaultAction(VARIANT varChild);

參數

varChild
指定要叫用的預設動作是 物件或其中一個物件的子專案。 這個參數可以是CHILDID_SELF(若要執行物件的預設動作)或子識別碼(若要執行其中一個物件的子項目的預設動作)。

傳回值

傳回成功時S_OK失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的 IAccessible::accDoDefaultAction 中的傳回值

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

覆寫衍生類別中的 CWnd 這個函式,以執行物件的預設動作。 如需詳細資訊,請參閱 Windows SDK 中的 IAccessible::accDoDefaultAction

CWnd::accHitTest

由架構呼叫以擷取畫面中給定點的子項目或子物件。

virtual HRESULT accHitTest(
    long xLeft,
    long yTop,
    VARIANT* pvarChild);

參數

xLeft
要點擊測試之點的 X 座標(以螢幕單位為單位)。

yTop
要點擊測試之點的 Y 座標(以螢幕單位為單位)。

pvarChild
接收在 和 yTopxLeft 指定之點識別物件的資訊。 IAccessible::accHitTest請參閱 pvarID Windows SDK 中的 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::accHitTest

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::accHitTest Windows SDK 中的 。

CWnd::accLocation

由架構呼叫以擷取指定物件目前畫面的位置。

virtual HRESULT accLocation(
    long* pxLeft,
    long* pyTop,
    long* pcxWidth,
    long* pcyHeight,
    VARIANT varChild);

參數

pxLeft
接收物件左上角的 X 座標(以螢幕單位為單位)。

pyTop
接收物件的左上角 (以螢幕單位為單位) 的 Y 座標。

pcxWidth
接收物件的寬度(以螢幕單位為單位)。

pcyHeight
接收物件的高度(以螢幕單位為單位)。

varChild
指定要擷取的位置是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

傳回值

傳回成功時S_OK失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::accLocation

備註

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::accLocation Windows SDK 中的 。

CWnd::accNavigate

由架構呼叫以便於周遊容器內的另一使用者介面項目並擷取物件 (如果可能)。

virtual HRESULT accNavigate(
    long navDir,
    VARIANT varStart,
    VARIANT* pvarEndUpAt);

參數

navDir
指定要巡覽的方向。 IAccessible::accNavigate請參閱 navDir Windows SDK 中的 。

varStart
指定起始物件。 IAccessible::accNavigate請參閱 varStart Windows SDK 中的 。

pvarEndUpAt
接收目的地使用者介面物件的相關資訊。 IAccessible::accNavigate請參閱 pvarEnd Windows SDK 中的 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::accNavigate

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::accNavigate Windows SDK 中的 。

CWnd::accSelect

由架構呼叫以修改選取或移動指定物件的鍵盤焦點。

virtual HRESULT accSelect(
    long flagsSelect,
    VARIANT varChild);

參數

flagsSelect
指定如何變更目前的選取範圍或焦點。 IAccessible::accSelect請參閱 flagsSelect Windows SDK 中的 。

varChild
指定要選取的物件。 此參數可以是 CHILDID_SELF (若要選取物件本身)或子識別碼(若要選取其中一個物件的子系)。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::accSelect

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::accSelect Windows SDK 中的 。

CWnd::AnimateWindow

顯示或隱藏視窗時產生特殊效果。

BOOL AnimateWindow(
    DWORD dwTime,
    DWORD dwFlags);

參數

dwTime
指定以毫秒為單位播放動畫所需的時間。 一般而言,動畫需要 200 毫秒才能播放。

dwFlags
指定動畫的類型。 如需可能值的完整清單,請參閱 AnimateWindow

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 AnimateWindow ,如 Windows SDK 中所述。

CWnd::ArrangeIconicWindows

排列所有最小化 (圖示) 子視窗。

UINT ArrangeIconicWindows();

傳回值

如果函式成功,則為一列圖示的高度;否則為 0。

備註

此成員函式也會排列桌面視窗上的圖示,其涵蓋整個畫面。 成員 GetDesktopWindow 函式會擷取桌面視窗物件的指標。

若要在 MDI 用戶端視窗中排列標誌性的 MDI 子視窗,請呼叫 CMDIFrameWnd::MDIIconArrange

範例

// arrange minimized MDI child windows
// called from menu item; CMdiChildFrame is derived from CMDIChildWnd
void CMdiChildFrame::OnActionArrangeIconicWindows()
{
   UINT height = GetParent()->ArrangeIconicWindows();   
   TRACE(_T("height = %d\n"), height);
}

CWnd::Attach

將 Windows 視窗附加至 CWnd 物件。

BOOL Attach(HWND hWndNew);

參數

hWndNew
指定 Windows 視窗的控制碼。

傳回值

如果成功則為非零;否則為 0。

範例

此範例示範如何使用 AttachDetach 對應至 MDI 用戶端視窗。

// Declare a CWnd member of CMainFrame
public:
CWnd m_wndMDIClient;

 

// detach MDI client window in CMainFrame destructor
m_wndMDIClient.Detach();

 

// In CMainFrame::OnCreate, attach MDI client window

if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
   return -1;

// attach MDI client window
if (m_wndMDIClient.Attach(m_hWndMDIClient) == 0)
{
   TRACE(_T("Failed to attach MDIClient.\n"));
   return -1; // fail to create
}

CWnd::BeginModalState

呼叫此成員函式以製作框架視窗強制回應。

virtual void BeginModalState();

CWnd::BeginPaint

CWnd準備繪製並填入 PAINTSTRUCT 資料結構與繪製的相關資訊。

CDC* BeginPaint(LPPAINTSTRUCT lpPaint);

參數

lpPaint
指向 PAINTSTRUCT 要接收繪製資訊的結構。

傳回值

識別 的 CWnd 裝置內容。 指標可能是暫時的,不應該儲存在 的範圍 EndPaint 之外。

備註

繪製結構包含一個 RECT 資料結構,該資料結構具有最小矩形,該矩形會完全封入更新區域,以及指定是否已清除背景的旗標。

更新區域是由 InvalidateInvalidateRectInvalidateRgn 成員函式所設定,並在系統調整、移動、建立、捲動或執行會影響工作區的任何其他作業之後設定。 如果更新區域標示為清除, BeginPaint 請傳送 WM_ONERASEBKGND 訊息。

除了回應 WM_PAINT 訊息以外, BeginPaint 請勿呼叫成員函式。 對成員函式的每個呼叫 BeginPaint 都必須有對成員函式的 EndPaint 相符呼叫。 如果插入號位於要繪製的區域, BeginPaint 成員函式會自動隱藏插入號,以防止清除插入號。

範例

// Use BeginPaint and EndPaint when responding to WM_PAINT message
// An alternative method is to use CPaintDC in place of
// BeginPaint and EndPaint
void CMdiView::OnPaint()
{
   PAINTSTRUCT ps;
   CDC *pDC = BeginPaint(&ps);

   pDC->Rectangle(CRect(0, 0, 100, 100));

   EndPaint(&ps);

   // Do not call CView::OnPaint() for painting messages
}

CWnd::BindDefaultProperty

將呼叫物件的預設簡單綁定屬性(例如編輯控制項)系結至資料來源控制項的 、 UserNamePasswordSQL 屬性所 DataSource 定義的基礎資料指標。

void BindDefaultProperty(
    DISPID dwDispID,
    VARTYPE vtProp,
    LPCTSTR szFieldName,
    CWnd* pDSCWnd);

參數

dwDispID
指定要 DISPID 系結至資料來源控制項之資料繫結控制項上的 屬性。

vtProp
指定要系結之屬性的類型。 例如、 VT_BSTRVT_VARIANT 等。

szFieldName
在資料來源控制項所提供的資料指標中,指定要系結屬性的資料行名稱。

pDSCWnd
指向裝載要系結屬性之資料來源控制項的視窗。 使用 DCS 主機視窗的資源識別碼呼叫 GetDlgItem ,以擷取此指標。

備註

CWnd您呼叫此函式的物件必須是資料繫結控制項。

範例

BindDefaultProperty 可能用於下列內容:

BOOL CMyDlg::OnInitDialog()
{
   CWnd *pDSC = GetDlgItem(IDC_DATASOURCE);
   CWnd *pMyBound = GetDlgItem(IDC_MYBOUNDCTRL1);
   pMyBound->BindDefaultProperty(0x1, VT_BSTR, _T("ContactFirstName"), pDSC);
   return TRUE;
}

CWnd::BindProperty

將資料繫結控制項上的資料指標系結屬性(例如方格控制項)系結至資料來源控制項,並註冊該關聯性與 MFC 系結管理員。

void BindProperty(
    DISPID dwDispId,
    CWnd* pWndDSC);

參數

dwDispId
指定要 DISPID 系結至資料來源控制項之資料繫結控制項上的 屬性。

pWndDSC
指向裝載要系結屬性之資料來源控制項的視窗。 使用 DCS 主機視窗的資源識別碼呼叫 GetDlgItem ,以擷取此指標。

備註

CWnd您呼叫此函式的物件必須是資料繫結控制項。

範例

BindProperty 可能用於下列內容:

BOOL CMyDlg::OnInitDialog()
{
   CWnd *pDSC = GetDlgItem(IDC_DATASOURCE);
   CWnd *pMyBound = GetDlgItem(IDC_MYBOUNDCTRL2);
   pMyBound->BindProperty(0x1, pDSC);
   return TRUE;
}

CWnd::BringWindowToTop

CWnd 帶到重疊視窗堆疊的最上層。

void BringWindowToTop();

備註

此外,BringWindowToTop 會啟用快顯、最上層和 MDI 子視窗。 需使用 BringWindowToTop 成員函式,才能顯示出重疊視窗部分或完全遮住的視窗。

此函式只會呼叫 Win32 BringWindowToTop 函式。 呼叫 函 SetWindowPos 式,以在 Z 順序中變更視窗的位置。 BringWindowToTop 函式不會將視窗樣式變更為最上層視窗。 如需詳細資訊,請參閱 和 之間的差異 HWND_TOPHWND_TOPMOST

範例

// Moves MDI child windows to the top when a mouse passes
// over it. CMdiView is derived from CView.
void CMdiView::OnMouseMove(UINT nFlags, CPoint point) 
{
   UNREFERENCED_PARAMETER(nFlags);
   UNREFERENCED_PARAMETER(point);

   GetParentFrame()->BringWindowToTop();
}

CWnd::CalcWindowRect

計算可以包含指定用戶端矩形的視窗矩形。

virtual void CalcWindowRect(
    LPRECT lpClientRect,
    UINT nAdjustType = adjustBorder);

參數

lpClientRect
[in, out]矩形結構的指標。 在輸入時,這個結構包含用戶端矩形。 方法完成之後,這個結構會包含可包含指定用戶端矩形的視窗矩形。

nAdjustType
[in]使用 CWnd::adjustBorder 來計算沒有樣式的 WS_EX_CLIENTEDGE 視窗座標,否則請使用 CWnd::adjustOutside

備註

匯出視窗矩形的大小不包含功能表列的空間。

如需更多使用限制,請參閱 AdjustWindowRectEx

範例

// Uses CalcWindowRect to determine size for new CFrameWnd
// based on the size of the current view. The end result is a
// top level frame window of the same size as CMdiView's frame.
void CMdiView::OnMyCreateFrame()
{
   CFrameWnd *pFrameWnd = new CFrameWnd;
   CRect myRect;
   GetClientRect(myRect);
   pFrameWnd->Create(NULL, _T("My Frame"));
   pFrameWnd->CalcWindowRect(&myRect, CWnd::adjustBorder);
   pFrameWnd->MoveWindow(0, 0, myRect.Width(), myRect.Height());
   pFrameWnd->ShowWindow(SW_SHOW);
}

CWnd::CancelToolTips

如果目前顯示工具提示,請呼叫此成員函式,從畫面移除工具提示。

static void PASCAL CancelToolTips(BOOL bKeys = FALSE);

參數

bKeys
TRUE 表示按下按鍵時取消工具提示,並將狀態列文字設定為預設值;否則 FALSE 為 。

備註

注意

使用此成員函式不會影響程式碼所管理的工具提示。 它只會影響 由 CWnd::EnableToolTips 管理的工具提示控制項。

範例

// In this example, tool tips were set up to
// pop up when the user moves the mouse
// over this edit control.
// If the mouse is moved to the upper left-hand
// corner, the tool tip would disappear because of
// calling CancelToolTips.
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
{
   CRect corner(0, 0, 10, 10);
   if (corner.PtInRect(point))
      CancelToolTips();
   CEdit::OnMouseMove(nFlags, point);
}

CWnd::CenterWindow

將相對於其父系的視窗置中。

void CenterWindow(CWnd* pAlternateOwner = NULL);

參數

pAlternateOwner
相對於要置中之替代視窗的指標(父視窗以外)。

備註

通常從 CDialog::OnInitDialog 呼叫至中心對話方塊,相對於應用程式主視窗。 根據預設,函式會將子視窗置中相對於其父視窗,以及相對於其擁有者的快顯視窗。 如果快顯視窗未擁有,則會相對於螢幕置中。 若要將視窗置中相對於不是擁有者或父系的特定視窗, pAlternateOwner 參數可能會設定為有效的視窗。 若要強制相對於螢幕置中,請將 所 CWnd::GetDesktopWindow 傳回的值傳遞為 pAlternateOwner

範例

BOOL CAboutDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   CenterWindow();

   return TRUE;
}

CWnd::ChangeClipboardChain

CWnd從剪貼簿檢視器的鏈結中移除,並讓鏈結中祖系的 CWnd 子代所 hWndNext 指定的視窗。

BOOL ChangeClipboardChain(HWND hWndNext);

參數

hWndNext
識別剪貼簿檢視器鏈結中後續的 CWnd 視窗。

傳回值

如果成功則為非零;否則為 0。

CWnd::CheckDlgButton

選取 (將核取記號放在旁) 或清除 (從 中移除核取記號) 按鈕,或變更三狀態按鈕的狀態。

void CheckDlgButton(
    int nIDButton,
    UINT nCheck);

參數

nIDButton
指定要修改的按鈕。

nCheck
指定要採取的動作。 如果 nCheck 為非零, CheckDlgButton 則成員函式會在按鈕旁邊放置核取記號;如果為 0,則會移除核取記號。 如果是三個狀態按鈕,如果 nCheck 為 2,則按鈕狀態為不確定。

備註

函式 CheckDlgButton 會將 BM_SETCHECK 訊息傳送至指定的按鈕。

範例

// Sets 3 check buttons in various ways.  Note BST_INDETERMINATE
// requires BS_3STATE or BS_AUTO3STATE in the button's style.
void CMyDlg::OnMarkButtons()
{
   CheckDlgButton(IDC_CHECK1, BST_UNCHECKED);     // 0
   CheckDlgButton(IDC_CHECK2, BST_CHECKED);       // 1
   CheckDlgButton(IDC_CHECK3, BST_INDETERMINATE); // 2
}

CWnd::CheckRadioButton

選取 [新增核取記號至] 群組中的指定選項按鈕,並清除群組中所有其他選項按鈕的 [移除核取記號]。

void CheckRadioButton(
    int nIDFirstButton,
    int nIDLastButton,
    int nIDCheckButton);

參數

nIDFirstButton
指定群組中第一個選項按鈕的整數識別碼。

nIDLastButton
指定群組中最後一個選項按鈕的整數識別碼。

nIDCheckButton
指定要檢查之選項按鈕的整數識別碼。

備註

函式 CheckRadioButton 會將 BM_SETCHECK 訊息傳送至指定的選項按鈕。

範例

// Of the 4 radio buttons, selects radio button 3.
void CMyDlg::OnMarkRadio()
{
   CheckRadioButton(IDC_RADIO1, IDC_RADIO4, IDC_RADIO3);
}

CWnd::ChildWindowFromPoint

判斷屬於 CWnd 哪個子視窗的子視窗包含指定的點。

CWnd* ChildWindowFromPoint(POINT point) const;

CWnd* ChildWindowFromPoint(
    POINT point,
    UINT nFlags) const;

參數

point
指定要測試之點的用戶端座標。

nflags
指定要略過的子視窗。 此參數可以是下列值的組合:

意義
CWP_ALL 不要略過任何子視窗
CWP_SKIPINVISIBLE 略過不可見的子視窗
CWP_SKIPDISABLED 略過停用的子視窗
CWP_SKIPTRANSPARENT 略過透明子視窗

傳回值

識別包含點的子視窗。 如果指定的點位於工作區之外,則為 NULL 。 如果點位於工作區內,但未包含在任何子視窗內, CWnd 則會傳回 。

此成員函式會傳回隱藏或停用的子視窗,其中包含指定的點。

一個以上的視窗可能包含指定的點。 不過,此函式只會 CWnd 傳回包含該點之第一個視窗的 * 。

CWnd 回的 * 可能是暫時的,不應該儲存以供日後使用。

範例

void CMyDlg::OnFindCenterChild() 
{
   CRect rect;
   GetClientRect(&rect);
   CWnd* pWnd = ChildWindowFromPoint(
      CPoint(rect.Width()/2, rect.Height()/2), 
      // Top left is always 0, 0.
      CWP_SKIPINVISIBLE);
   TRACE(_T("Center window is 0x%08x\n"), pWnd->m_hWnd);
}

CWnd::ClientToScreen

將畫面上指定的點或矩形的用戶端座標,轉換為螢幕座標。

void ClientToScreen(LPPOINT lpPoint) const;  void ClientToScreen(LPRECT lpRect) const;

參數

lpPoint
指向 POINT 包含要轉換之用戶端座標的結構 CPoint 物件。

lpRect
指向 RECT 包含要轉換之用戶端座標的結構 CRect 物件。

備註

成員 ClientToScreen 函式會使用 或 結構中的用戶端座標 POINTRECT 或 或 CPoint 所指向 lpPoint 的 或 CRect 物件,或 lpRect 計算新的螢幕座標;然後,它會以新的座標取代 結構中的座標。 新的螢幕座標相對於系統顯示左上角。

成員 ClientToScreen 函式假設指定的點或矩形位於用戶端座標中。

範例

// resize dialog to client's size
void CMyDlg::OnSizeToClient()
{
   CRect myRect;
   GetClientRect(&myRect);

   ClientToScreen(myRect);
   MoveWindow(myRect.left, myRect.top,
              myRect.Width(), myRect.Height());
}

CWnd::CloseWindow

將視窗最小化。

void CloseWindow();

備註

此成員函式會模擬 函式的功能 CloseWindow ,如 Windows SDK 中所述。

CWnd::ContinueModal

呼叫這個成員函 RunModalLoop 式,以判斷何時應該結束強制回應狀態。

virtual BOOL ContinueModal();

傳回值

如果要繼續強制回應迴圈,則為非零;呼叫 時 EndModalLoop 為 0。

備註

根據預設,它會傳回非零,直到 EndModalLoop 呼叫 為止。

CWnd::Create

建立指定的子視窗,並將它附加至 CWnd 物件。

virtual BOOL Create(
    LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    Const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    CCreateContext* pContext = NULL);

參數

lpszClassName
[in]包含已註冊系統視窗類別名稱之 Null 終止字串的指標;或預先定義系統視窗類別的名稱。

lpszWindowName
[in]包含視窗顯示名稱之 Null 終止字串的指標;否則 NULL 為沒有視窗顯示名稱。

dwStyle
[in]視窗樣式 位組合 (OR) 。 此選項 WS_POPUP 不是有效的樣式。

rect
[in]相對於父視窗左上角的視窗大小和位置。

pParentWnd
[in]父視窗的指標。

nID
[in]視窗的識別碼。

pContext
[in] CCreateContext 用來自訂應用程式檔檢視架構之結構的指標。

傳回值

TRUE 如果方法成功,則為 ;否則 FALSE 為 。

備註

警告

CWnd::PreCreateWindow如果功能表是 NULL ,而且樣式包含 WS_CHILD ,則現在會將其 CREATESTRUCT 參數的成員指派 hMenuthis 指標。 如需適當的功能,請確定您的對話方塊控制項具有不是 NULL 的識別碼。

這項變更可修正 Managed/原生 Interop 案例中的當機狀況。 TRACE問題的開發人員會 CWnd::Create 發出警示的語句。

使用 函式 AfxRegisterWndClass 來註冊視窗類別。 使用者定義視窗類別可在註冊的模組中取得。

方法 CWnd::OnCreate 會在 Create 方法傳回之前呼叫,並在視窗變成可見之前呼叫。

範例

// Dynamically create static control using CWnd::Create,
// instead of with CStatic::Create, which doesn't
// need the "STATIC" class name.
void CMyDlg::OnCreateStatic() 
{
   // m_pWndStatic is a CWnd* member of CMyDlg
   m_pWndStatic = new CWnd;
   m_pWndStatic->Create(_T("STATIC"), _T("Hi"), WS_CHILD | WS_VISIBLE,
       CRect(0, 0, 20, 20), this, 1234);
}

CWnd::CreateAccessibleProxy

建立指定物件的 Active Accessibility Proxy。

virtual HRESULT CreateAccessibleProxy(
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* pResult);

參數

wParam
識別 Active Accessibility Proxy 所存取的物件。 可以為下列其中一個值

意義
OBJID_CLIENT 是指視窗的工作區。

lParam
提供其他訊息相依資訊。

pResult
儲存結果碼之 的指標 LRESULT

備註

建立指定物件的 Active Accessibility Proxy。

CWnd::CreateCaret

建立系統插入號的新圖形,並宣告插入號的擁有權。

void CreateCaret(CBitmap* pBitmap);

參數

pBitmap
識別定義插入號圖形的點陣圖。

備註

點陣圖先前必須由成員函式、 CreateDIBitmap Windows 函式或 CBitmap::LoadBitmap 成員函式建立 CBitmap::CreateBitmap

CreateCaret 如果有任何,則會自動終結先前的插入號圖形,而不論哪個視窗擁有插入號。 建立之後,插入號一開始就會隱藏。 若要顯示插入號, ShowCaret 必須呼叫成員函式。

系統插入號是共用資源。 CWnd 只有當插入號具有輸入焦點或作用中時,才應該建立插入號。 它應該會在失去輸入焦點或變成非使用中之前終結插入號。

範例

// Changes the caret of the edit control in this dialog box
void CMyDlg::OnChangeCaret()
{
   m_pBitmapCaret = new CBitmap;
   m_pBitmapCaret->LoadBitmap(IDB_HAPPY_BITMAP);
   m_MyEdit.CreateCaret(m_pBitmapCaret);
   m_MyEdit.ShowCaret();
}

CWnd::CreateControl

使用此成員函式建立 ActiveX 控制項,此控制項將由 物件在 MFC 程式中 CWnd 表示。

BOOL CreateControl(
    LPCTSTR pszClass,
    LPCTSTR pszWindowName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    CFile* pPersist = NULL,
    BOOL bStorage = FALSE,
    BSTR bstrLicKey = NULL);

BOOL CreateControl(
    REFCLSID clsid,
    LPCTSTR pszWindowName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    CFile* pPersist = NULL,
    BOOL bStorage = FALSE,
    BSTR bstrLicKey = NULL);

BOOL CreateControl(
    REFCLSID clsid,
    LPCTSTR pszWindowName,
    DWORD dwStyle,
    const POINT* ppt,
    const SIZE* psize,
    CWnd* pParentWnd,
    UINT nID,
    CFile* pPersist = NULL,
    BOOL bStorage = FALSE,
    BSTR bstrLicKey = NULL);

參數

pszClass
此字串可能包含 類別的 OLE 「short name」 ( ProgID ) 。 例如: "CIRC3.Circ3Ctrl.1" 。 名稱必須符合 控制項所註冊的相同名稱。 或者,字串可能包含 的字串形式 CLSID ,包含在大括弧中。 例如: "{9DBAFCCF-592F-101B-85CE-00608CEC297B}" 。 不論是哪一種情況, CreateControl 將字串轉換成對應的類別識別碼。

pszWindowName
要顯示在 控制項中之文字的指標。 設定控制項的 Caption 或 Text 屬性的值(如果有的話)。 如果 NULL 為 ,則不會變更控制項的 Caption 或 Text 屬性。

dwStyle
視窗樣式。 可用的樣式列在 [備註] 底下。

rect
指定控制項的大小和位置。 它可以是 CRect 物件或 RECT 結構

ppt
POINT 指向包含控制項左上角的結構或 CPoint 物件。

pSize
指向 SIZE 包含控制項大小的結構或 CSize 物件

*pParentWnd*
指定控制項的父視窗。 它不得為 NULL

nID
指定控制項的識別碼。

pPersist
的指標 CFile ,包含 控制項的永續性狀態。 預設值為 NULL ,表示控制項會初始化本身,而不會從任何永續性儲存體還原其狀態。 如果不是 NULL ,它應該是衍生物件的指標 CFile ,其中包含控制項的永續性資料,格式為數據流或儲存體。 此資料可能已儲存在用戶端先前的啟用中。 CFile可以包含其他資料,但必須在呼叫 CreateControl 時將其讀寫指標設定為持續性資料的第一個位元組。

bStorage
指出 中的資料 pPersist 是否應該解譯為 IStorageIStream 資料。 如果 中的資料 pPersist 是儲存體, bStorage 應該是 TRUE 。 如果 中的資料 pPersist 是資料流程, bStorage 應該是 FALSE 。 預設值是 FALSE

bstrLicKey
選擇性授權金鑰資料。 此資料僅適用于建立需要執行時間授權金鑰的控制項。 如果控制項支援授權,您必須提供授權金鑰,才能成功建立控制項。 預設值是 NULL

clsid
控制項的唯一類別 ID。

傳回值

如果成功則為非零;否則為 0。

備註

CreateControl 是函式的 CWnd::Create 直接類比,可建立 的 CWnd 視窗。 CreateControl 會建立 ActiveX 控制項,而不是一般視窗。

僅支援 CreateControl 的 Windows dwStyle 旗標子集:

  • WS_VISIBLE 建立一開始可見的視窗。 如果您想要讓控制項立即顯示,則需要 ,就像一般視窗一樣。

  • WS_DISABLED 建立一開始停用的視窗。 停用的視窗無法從使用者接收輸入。 如果控制項具有 Enabled 屬性,可以設定。

  • WS_BORDER 建立具有細線框線的視窗。 如果控制項具有 BorderStyle 屬性,則可以設定 。

  • WS_GROUP 指定控制項群組的第一個控制項。 使用者可以使用方向鍵,將鍵盤焦點從群組中的一個控制項變更為下一個控制項。 第一個控制項屬於相同群組之後, WS_GROUP 以樣式定義的所有控制項。 樣式結束群組的 WS_GROUP 下一個控制項,並啟動下一個群組。

  • WS_TABSTOP 指定當使用者按下 TAB 鍵時,可以接收鍵盤焦點的控制項。 按下 TAB 鍵會將鍵盤焦點變更為樣式的 WS_TABSTOP 下一個控制項。

範例

class CGenocx : public CWnd
{
protected:
   DECLARE_DYNCREATE(CGenocx)
public:
   CLSID const &GetClsid()
   {
      static CLSID const clsid = {0x20DD1B9E, 0x87C4, 0x11D1, {0x8B, 0xE3, 0x0, 0x0, 0xF8, 0x75, 0x4D, 0xA1}};
      return clsid;
   }

   // This code is generated by the Control Wizard.
   // It wraps the call to CreateControl in the call to Create.
   virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
                       const RECT &rect, CWnd *pParentWnd, UINT nID,
                       CCreateContext *pContext = NULL)
   {
      UNREFERENCED_PARAMETER(pContext);
      UNREFERENCED_PARAMETER(lpszClassName);

      return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
   }

   // remainder of class declaration omitted...

CWnd::CreateEx

建立指定的視窗,並將它附加至 CWnd 物件。

virtual BOOL CreateEx(
    DWORD dwExStyle,
    LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    int x,
    int y,
    int nWidth,
    int nHeight,
    HWND hWndParent,
    HMENU nIDorHMenu,
    LPVOID lpParam = NULL);

virtual BOOL CreateEx(
    DWORD dwExStyle,
    LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    LPVOID lpParam = NULL);

參數

dwExStyle
延伸視窗樣式 位組合(OR),否則 NULL 為預設延伸視窗樣式。

lpszClassName
包含已註冊系統視窗類別名稱之 Null 終止字串的指標;或預先定義系統視窗類別的名稱。

lpszWindowName
包含視窗顯示名稱之 Null 終止字串的指標;否則 NULL 為沒有視窗顯示名稱。

dwStyle
視窗樣式 位組合(OR),否則 NULL 為預設視窗樣式。

x
視窗與螢幕左側或父視窗的初始水準距離。

y
視窗從螢幕頂端或父視窗的初始垂直距離。

nWidth
視窗的寬度,以圖元為單位。

nHeight
視窗的高度,以圖元為單位。

hwndParent
如果是子視窗,則為父視窗的控制碼;否則,如果視窗具有擁有者,則為擁有者視窗的控制碼。

nIDorHMenu
如果是子視窗,則為視窗識別碼;否則,視窗功能表的識別碼。

lpParam
傳遞至 CWnd::OnCreate 欄位中方法 lpCreateParams 之使用者資料的指標。

rect
相對於螢幕或父視窗的視窗大小和位置。

pParentWnd
針對子視窗,指向父視窗的指標;否則,如果視窗具有擁有者,則為擁有者視窗的指標。

nID
如果是子視窗,則為視窗識別碼;否則,視窗功能表的識別碼。

傳回值

TRUE 如果方法成功,則為 ;否則 FALSE 為 。

備註

警告

CWnd::PreCreateWindow如果功能表是 NULL ,而且樣式包含 WS_CHILD ,則現在會將其 CREATESTRUCT 參數的成員指派 hMenuthis 指標。 如需適當的功能,請確定您的對話方塊控制項具有不是 NULL 的識別碼。

這項變更可修正 Managed/原生 Interop 案例中的當機狀況。 TRACE問題的開發人員會 CWnd::Create 發出警示的語句。

預設延伸視窗樣式為 WS_EX_LEFT 。 預設視窗樣式為 WS_OVERLAPPED

使用 函式 AfxRegisterWndClass 來註冊視窗類別。 使用者定義視窗類別可在註冊的模組中取得。

子視窗的維度相對於父視窗工作區的左上角。 最上層視窗的維度相對於畫面左上角。

方法 CWnd::OnCreate 會在 CreateEx 方法傳回之前呼叫,並在視窗變成可見之前呼叫。

範例

void CMyDlg::OnCreateExtendedControl() 
{
   // m_pWndStaticEx is a CWnd* member of CMyDlg
   m_pWndStaticEx = new CStatic;
   m_pWndStaticEx->CreateEx(WS_EX_CLIENTEDGE, // Make a client edge label.
      _T("STATIC"), _T("Hi"),
      WS_CHILD | WS_TABSTOP | WS_VISIBLE,
      5, 5, 30, 30, m_hWnd, (HMENU)2345);
}

CWnd::CreateGrayCaret

建立系統插入號的灰色矩形,並宣告插入號的擁有權。

void CreateGrayCaret(
    int nWidth,
    int nHeight);

參數

nWidth
指定插入號的寬度(以邏輯單位為單位)。 如果此參數為 0,寬度會設定為系統定義的視窗框線寬度。

nHeight
指定插入號的高度(以邏輯單位為單位)。 如果此參數為 0,高度會設定為系統定義的視窗框線高度。

備註

插入號圖形可以是線條或區塊。

參數 nWidthnHeight 指定插入號的寬度和高度(以邏輯單位表示):確切的寬度和高度(以圖元為單位)取決於對應模式。

Windows 函式可以使用 和 SM_CYBORDER 索引來擷取 GetSystemMetricsSM_CXBORDER 系統的視窗框線寬度或高度。 使用視窗框線寬度或高度可確保插入號會顯示在高解析度顯示器上。

不論哪個視窗擁有插入號,成員 CreateGrayCaret 函式都會自動終結先前的插入號圖形。 建立之後,插入號一開始就會隱藏。 若要顯示插入號, ShowCaret 必須呼叫成員函式。

系統插入號是共用資源。 CWnd 只有當插入號具有輸入焦點或作用中時,才應該建立插入號。 它應該會在失去輸入焦點或變成非使用中之前終結插入號。

範例

// Create a 5x10 gray caret in the edit control.
void CMyDlg::OnCreateGrayCaret()
{
   m_MyEdit.CreateGrayCaret(5, 10);
   m_MyEdit.ShowCaret();
}

CWnd::CreateSolidCaret

建立系統插入號的實心矩形,並宣告插入號的擁有權。

void CreateSolidCaret(
    int nWidth,
    int nHeight);

參數

nWidth
指定插入號的寬度(以邏輯單位為單位)。 如果此參數為 0,寬度會設定為系統定義的視窗框線寬度。

nHeight
指定插入號的高度(以邏輯單位為單位)。 如果此參數為 0,高度會設定為系統定義的視窗框線高度。

備註

插入號圖形可以是線條或區塊。

參數 nWidthnHeight 指定插入號的寬度和高度(以邏輯單位表示):確切的寬度和高度(以圖元為單位)取決於對應模式。

Windows 函式可以使用 和 SM_CYBORDER 索引來擷取 GetSystemMetricsSM_CXBORDER 系統的視窗框線寬度或高度。 使用視窗框線寬度或高度可確保插入號會顯示在高解析度顯示器上。

不論哪個視窗擁有插入號,成員 CreateSolidCaret 函式都會自動終結先前的插入號圖形。 建立之後,插入號一開始就會隱藏。 若要顯示插入號, ShowCaret 必須呼叫成員函式。

系統插入號是共用資源。 CWnd 只有當插入號具有輸入焦點或作用中時,才應該建立插入號。 它應該會在失去輸入焦點或變成非使用中之前終結插入號。

範例

// Create a 5x10 solid caret in the edit control.
void CMyDlg::OnCreateSolidCaret()
{
   m_MyEdit.CreateSolidCaret(5, 10);
   m_MyEdit.ShowCaret();
}

CWnd::CWnd

建構 CWnd 物件。

CWnd();

備註

在呼叫 或 Create 成員函式之前 CreateEx ,不會建立及附加 Windows 視窗。

CWnd::Default

呼叫預設視窗程式。

LRESULT Default();

傳回值

取決於傳送的訊息。

備註

預設視窗程式會針對應用程式未處理的任何視窗訊息提供預設處理。 此成員函式可確保處理每個訊息。

範例

// This sample shows how to avoid any button handling in base class,
// if any, and call the default window procedure directly.
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   UNREFERENCED_PARAMETER(point);

   CWnd::Default();
}

CWnd::DefWindowProc

呼叫預設視窗程式,它提供應用程式未處理之任何視窗訊息的預設處理。

virtual LRESULT DefWindowProc(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

參數

message
指定要處理的 Windows 訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

傳回值

取決於傳送的訊息。

備註

此成員函式可確保處理每個訊息。 它應該使用與視窗程式收到的參數相同的參數來呼叫。

CWnd::DeleteTempMap

由 物件的閒置時間處理常式 CWinApp 自動呼叫。

static void PASCAL DeleteTempMap();

備註

刪除成員函式所 FromHandle 建立的任何暫存 CWnd 物件。

範例

// DeleteTempMap() is a static member and does not need 
// to be called within the scope of an instantiated CWnd object.
CWnd::DeleteTempMap();

CWnd::DestroyWindow

終結附加至 CWnd 物件的 Windows 視窗。

virtual BOOL DestroyWindow();

傳回值

如果視窗被終結,則為非零;否則為 0。

備註

成員 DestroyWindow 函式會將適當的訊息傳送至視窗,以停用並移除輸入焦點。 它也會終結視窗的功能表、排清應用程式佇列、終結未處理的計時器、移除剪貼簿擁有權,如果 CWnd 位於檢視器鏈結的頂端,則會中斷剪貼簿檢視器鏈結。 它會將 和 WM_NCDESTROY 訊息傳送 WM_DESTROY 至視窗。 它不會終結 CWnd 物件。

DestroyWindow 是執行清理的地點持有者。 因為 DestroyWindow 是虛擬函式,所以會顯示在類別檢視中任何 CWnd 衍生類別中。 但是,即使您在衍生類別中 CWnd 覆寫此函式, DestroyWindow 也不一定呼叫。 如果 DestroyWindow MFC 程式碼中未呼叫,則如果您想要呼叫它,則必須在自己的程式碼中明確呼叫它。

例如,假設您已在衍生類別中 CViewDestroyWindow 寫。 由於 MFC 原始程式碼不會在其任何 CFrameWnd 衍生類別中呼叫 DestroyWindow ,除非您明確呼叫它,否則不會呼叫覆寫 DestroyWindow

如果視窗是任何視窗的父代,當父視窗終結時,這些子視窗會自動終結。 成員函式會 DestroyWindow 先終結子視窗,然後再終結視窗本身。

成員 DestroyWindow 函式也會終結 所建立的 CDialog::Create 無強制回應對話方塊。

如果被終結的 CWnd 是子視窗,而且沒有 WS_EX_NOPARENTNOTIFY 設定樣式,則會 WM_PARENTNOTIFY 將訊息傳送至父系。

範例

// CModeless is a CDialog class representing a modeless dialog
// Destruction of the modeless dialog involves calling DestroyWindow in 
// OnOK() & OnCancel() handlers
void CModeless::OnOK() 
{ 
   if (!UpdateData(TRUE)) 
   {
      TRACE(_T("UpdateData failed during dialog termination\n"));
      // The UpdateData routine will set focus to correct item
      return;
   }
   DestroyWindow();
}

void CModeless::OnCancel()
{
   DestroyWindow();
}

CWnd::Detach

CWnd 物件卸離 Windows 控制代碼,並傳回控制代碼。

HWND Detach();

傳回值

HWNDWindows 物件的 。

範例

請參閱 的 CWnd::Attach 範例。

CWnd::DlgDirList

使用檔案或目錄清單填入清單方塊。

int DlgDirList(
    LPTSTR lpPathSpec,
    int nIDListBox,
    int nIDStaticPath,
    UINT nFileType);

參數

lpPathSpec
指向包含路徑或檔案名的 Null 終止字串。 DlgDirList 修改此字串,其長度應該足以包含修改。 如需詳細資訊,請參閱下列一節。

nIDListBox
指定清單方塊的識別碼。 如果 nIDListBox 為 0, DlgDirList 則假設沒有清單方塊存在,而且不會嘗試填滿一個清單方塊。

nIDStaticPath
指定用來顯示目前磁片磁碟機和目錄之靜態文字控制項的識別碼。 如果 nIDStaticPath 為 0, DlgDirList 則假設沒有這類文字控制項存在。

nFileType
指定要顯示之檔案的屬性。 它可以是下列值的任何組合:

  • DDL_READWRITE 沒有其他屬性的讀寫資料檔案。

  • DDL_READONLY 唯讀檔案。

  • DDL_HIDDEN 隱藏的檔案。

  • DDL_SYSTEM 系統檔案。

  • DDL_DIRECTORY 目錄。

  • DDL_ARCHIVE 檔案。

  • DDL_POSTMSGSLB_DIR 國旗。 LB_DIR如果設定旗標,Windows 會將 所產生的 DlgDirList 訊息放在應用程式的佇列中;否則,它們會直接傳送至對話方塊程式。

  • DDL_DRIVES 磁碟機。 DDL_DRIVES如果設定旗標,則 DDL_EXCLUSIVE 會自動設定旗標。 因此,若要建立包含磁片磁碟機和檔案的目錄清單,您必須呼叫 DlgDirList 兩次:一次 DDL_DRIVES 具有旗標集,一次使用清單其餘部分的旗標。

  • DDL_EXCLUSIVE 獨佔位。 如果已設定獨佔位,則只會列出指定類型的檔案;否則會列出指定類型的一般檔案和檔案。

傳回值

如果函式成功則為非零,否則為 0。

備註

DlgDirList會將 和 LB_DIR 訊息傳送 LB_RESETCONTENT 至清單方塊。 它會以符合 所指定 lpPathSpec 路徑的所有檔案名填入所指定的 nIDListBox 清單方塊。

參數 lpPathSpec 的格式如下:

[drive:] [ [\u]directory[\idirectory]...\u] [filename]

在此範例中, drive 是磁碟機號、 directory 是有效的目錄名稱,而且 filename 是必須包含至少一個萬用字元的有效檔案名。 萬用字元是問號 ( ),這表示符合任何字元,而星號 ( * ), 表示符合任意數目的字元。

如果您為 lpPathSpec 指定 0 長度的字串,或如果您只指定目錄名稱,但不包含任何檔案規格,字串將會變更為 「*.*」。

如果 lpPathSpec 包含磁片磁碟機和/或目錄名稱,則會在填入清單方塊之前,將目前的磁片磁碟機和目錄變更為指定的磁片磁碟機和目錄。 所 nIDStaticPath 識別的文字控制項也會以新的磁片磁碟機和/或目錄名稱進行更新。

填滿清單方塊之後, lpPathSpec 會移除路徑的磁片磁碟機和/或目錄部分來更新。

範例

// If pDialog points to a CDialog object with a list box
// with the identifier IDC_DIRLIST, this call will populate
// the box with only the non-hidden subdirectories in the root
// directory of the C:\ drive.
TCHAR path[MAX_PATH];
_tcscpy_s(path, MAX_PATH, _T("C:\\"));

pDialog->DlgDirList(path, IDC_DIRLIST, 0, DDL_EXCLUSIVE | DDL_DIRECTORY);

CWnd::DlgDirListComboBox

使用檔案或目錄清單來填入下拉式方塊的清單方塊。

int DlgDirListComboBox(
    LPTSTR lpPathSpec,
    int nIDComboBox,
    int nIDStaticPath,
    UINT nFileType);

參數

lpPathSpec
指向包含路徑或檔案名的 Null 終止字串。 DlgDirListComboBox 修改此字串,因此此資料不應以字串常值的形式呈現。 請參閱下列一節。

nIDComboBox
指定對話方塊中下拉式方塊的識別碼。 如果 nIDComboBox 為 0, DlgDirListComboBox 則假設沒有下拉式方塊存在,而且不會嘗試填滿一個。

nIDStaticPath
指定用來顯示目前磁片磁碟機和目錄之靜態文字控制項的識別碼。 如果 nIDStaticPath 為 0, DlgDirListComboBox 則假設沒有這類文字控制項存在。

nFileType
指定要顯示之檔案的 DOS 檔案屬性。 它可以是下列值的任何組合:

  • DDL_READWRITE 沒有其他屬性的讀寫資料檔案。

  • DDL_READONLY 唯讀檔案。

  • DDL_HIDDEN 隱藏的檔案。

  • DDL_SYSTEM 系統檔案。

  • DDL_DIRECTORY 目錄。

  • DDL_ARCHIVE 檔案。

  • DDL_POSTMSGSCB_DIR 國旗。 CB_DIR如果設定旗標,Windows 會將 所產生的 DlgDirListComboBox 訊息放在應用程式的佇列中;否則,它們會直接傳送至對話方塊程式。

  • DDL_DRIVES 磁碟機。 DDL_DRIVES如果設定旗標,則 DDL_EXCLUSIVE 會自動設定旗標。 因此,若要建立包含磁片磁碟機和檔案的目錄清單,您必須呼叫 DlgDirListComboBox 兩次:一次 DDL_DRIVES 具有旗標集,一次使用清單其餘部分的旗標。

  • DDL_EXCLUSIVE 獨佔位。 如果已設定獨佔位,則只會列出指定類型的檔案;否則會列出指定類型的一般檔案和檔案。

傳回值

指定函式的結果。 如果已建立清單,甚至是空白清單,則為非零。 0 傳回值表示輸入字串未包含有效的搜尋路徑。

備註

DlgDirListComboBox會將 和 CB_DIR 訊息傳送 CB_RESETCONTENT 至下拉式方塊。 它會填入 所 nIDComboBox 指定下拉式方塊的清單方塊,以及符合 所 lpPathSpec 指定路徑的所有檔案名。

參數 lpPathSpec 的格式如下:

[drive:] [ [\u]directory[\idirectory]...\u] [filename]

在此範例中, drive 是磁碟機號、 directory 是有效的目錄名稱,而且 filename 是必須包含至少一個萬用字元的有效檔案名。 萬用字元是問號 ( ),這表示符合任何字元,而星號 ( * ),這表示符合任意數目的字元。

如果您為 指定長度為零的字串 lpPathSpec ,則會使用目前的目錄, lpPathSpec 而且不會修改。 如果您只指定目錄名稱,但不包含任何檔案規格,字串將會變更為 「*」。

如果 lpPathSpec 包含磁片磁碟機和/或目錄名稱,則會在填入清單方塊之前,將目前的磁片磁碟機和目錄變更為指定的磁片磁碟機和目錄。 所 nIDStaticPath 識別的文字控制項也會以新的磁片磁碟機和/或目錄名稱進行更新。

填滿下拉式方塊清單方塊之後, lpPathSpec 會移除路徑的磁片磁碟機和/或目錄部分來更新。

範例

// If pDialog points to a CDialog object with a combo box
// with the identifier IDC_DIRCOMBO, this call will populate
// the box with only the non-hidden subdirectories in the root
// directory of the C:\ drive.

TCHAR szPath[MAX_PATH];
_tcsncpy_s(szPath, MAX_PATH, _T("C:\\"), MAX_PATH);
pDialog->DlgDirListComboBox(szPath, IDC_DIRCOMBO, 0, DDL_EXCLUSIVE | DDL_DIRECTORY);

// Note that the first argument is a string and not a string
// literal. This is necessary because DlgDirListComboBox
// modifies the supplied string. Passing a string literal
// will result in an access violation.

CWnd::DlgDirSelect

從清單方塊擷取目前的選取範圍。

BOOL DlgDirSelect(
    LPTSTR lpString,
    int nIDListBox);

參數

lpString
指向要接收清單方塊中目前選取範圍的緩衝區。

nIDListBox
指定對話方塊中清單方塊的整數識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

它假設清單方塊已由 DlgDirList 成員函式填入,而且選取範圍是磁碟機號、檔案或目錄名稱。

成員 DlgDirSelect 函式會將選取範圍複製到 所 lpString 指定的緩衝區。 如果沒有選取專案, lpString 則不會變更。

DlgDirSelect會將 和 LB_GETTEXT 訊息傳送 LB_GETCURSEL 至清單方塊。

它不允許從清單方塊傳回一個以上的檔案名。 清單方塊不得為多重選取清單方塊。

CWnd::DlgDirSelectComboBox

從下拉式方塊的清單方塊中擷取目前的選取範圍。

BOOL DlgDirSelectComboBox(
    LPTSTR lpString,
    int nIDComboBox);

參數

lpString
指向要接收選取路徑的緩衝區。

nIDComboBox
指定對話方塊中下拉式方塊的整數識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

它假設清單方塊已由 DlgDirListComboBox 成員函式填入,而且選取範圍是磁碟機號、檔案或目錄名稱。

成員 DlgDirSelectComboBox 函式會將選取範圍複製到指定的緩衝區。 如果沒有選取專案,則不會變更緩衝區的內容。

DlgDirSelectComboBox會將 和 CB_GETLBTEXT 訊息傳送 CB_GETCURSEL 至下拉式方塊。

它不允許從下拉式方塊傳回多個檔案名。

CWnd::DoDataExchange

由架構呼叫以交換和驗證對話資料。

virtual void DoDataExchange(CDataExchange* pDX);

參數

pDX
CDataExchange 物件的指標。

備註

永遠不要直接呼叫此函式。 成員函式 UpdateData 會呼叫它。 呼叫 UpdateData 以初始化對話方塊的控制項,或從對話方塊擷取資料。

當您從 CDialog 衍生應用程式特定對話類別時,如果您想要利用架構的自動資料交換和驗證,則必須覆寫此成員函式。 [新增變數精靈] 會為您撰寫此成員函式的覆寫版本,其中包含對話資料交換 (DDX) 和驗證 (DDV) 全域函式呼叫所需的「資料對應」。

若要自動產生此成員函式的覆寫版本,請先使用對話方塊編輯器建立對話資源,然後衍生應用程式特定的對話類別。 然後使用 [新增變數精靈] 將變數、資料和驗證範圍與新對話方塊中的各種控制項產生關聯。 然後精靈會寫入覆 DoDataExchange 寫的 ,其中包含資料對應。 以下是新增變數精靈所產生的範例 DDX/DDV 程式碼區塊:

void CPenWidthsDlg::DoDataExchange(CDataExchange *pDX)
{
   CDialog::DoDataExchange(pDX);
   DDX_Text(pDX, IDC_THINPENWIDTH, m_nThinWidth);
   DDV_MinMaxInt(pDX, m_nThinWidth, 1, 20);
   DDX_Text(pDX, IDC_THICKPENWIDTH, m_nThickWidth);
   DDV_MinMaxInt(pDX, m_nThickWidth, 1, 20);
}

DoDataExchange覆寫的成員函式必須位於原始程式檔中的巨集式之前。

如需對話方塊資料交換和驗證的詳細資訊,請參閱 在表單 對話方塊資料交換和驗證 中顯示和運算元據。 如需新增變數精靈所產生的DDX_和DDV_宏的描述,請參閱 Technical Note 26

CWnd::DragAcceptFiles

使用 CWnd 您應用程式函式中的 CWinApp::InitInstance 指標,從視窗內呼叫此成員函式,以指出視窗接受 Windows 檔案管理員或檔案總管卸載的檔案。

void DragAcceptFiles(BOOL bAccept = TRUE);

參數

BAccept
旗標,指出是否接受拖曳的檔案。

備註

只有使用 參數設定為 TRUE 呼叫 DragAcceptFilesbAccept 視窗,才會將本身識別為能夠處理 Windows 訊息 WM_DROPFILES 。 例如,在 MDI 應用程式中,如果在 CMDIFrameWnd 函式呼叫中使用 DragAcceptFiles 視窗指標,則只有 CMDIFrameWnd 視窗會取得 WM_DROPFILES 訊息。 此訊息不會傳送至所有開啟 CMDIChildWnd 的視窗。 若要讓 CMDIChildWnd 視窗接收此訊息,您必須使用 CMDIChildWnd 視窗指標呼叫 DragAcceptFiles

若要停止接收拖曳的檔案,請呼叫成員函式,並將 bAccept 設定為 FALSE

CWnd::DragDetect

擷取滑鼠並追蹤其移動,直到使用者放開左側按鈕、按下 ESC 鍵,或將滑鼠移到指定點周圍的拖曳矩形外。

BOOL DragDetect(POINT pt) const;

參數

pt
滑鼠的初始位置,以螢幕座標表示。 函式會使用這個點來決定拖曳矩形的座標。

傳回值

如果使用者在按住左按鈕時將滑鼠移到拖曳矩形外,則傳回值為非零值。

如果使用者在按住左按鈕時未將滑鼠移到拖曳矩形外,則傳回值為零。

備註

此成員函式會模擬 函式的功能 DragDetect ,如 Windows SDK 中所述。

CWnd::DrawAnimatedRects

繪製框線矩形,並以動畫效果呈現它來指出圖示的開頭,或最小化或最大化視窗。

BOOL DrawAnimatedRects(
    int idAni,
    CONST RECT* lprcFrom,
    CONST RECT* lprcTo);

參數

idAni
指定動畫的類型。 如果您指定 IDANI_CAPTION ,則視窗標題會從 所 lprcFrom 指定的位置動畫到 所 lprcTo 指定的位置。 效果類似于最小化或最大化視窗。

lprcFrom
RECT結構的指標,指定圖示的位置和大小或最小化視窗。

lprcTo
RECT結構指標,指定還原視窗的位置和大小

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 DrawAnimatedRects ,如 Windows SDK 中所述。

CWnd::DrawCaption

繪製視窗標題。

BOOL DrawCaption(
    CDC* pDC,
    LPCRECT lprc,
    UINT uFlags);

參數

pDC
裝置內容的指標。 函式會將視窗標題繪製到此裝置內容中。

lprc
結構的指標 RECT ,指定視窗的周框標題。

uFlags
指定繪圖選項。 如需值的完整清單,請參閱 DrawCaption

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 DrawCaption ,如 Windows SDK 中所述。

CWnd::DrawMenuBar

重新繪製功能表列。

void DrawMenuBar();

備註

如果在 Windows 建立視窗之後變更功能表列,請呼叫此函式來繪製變更的功能表列。

範例

請參閱 的 CWnd::GetMenu 範例。

CWnd::EnableActiveAccessibility

啟用使用者定義的 Active Accessibility 函式。

void EnableActiveAccessibility();

備註

MFC 的預設 Active Accessibility 支援足以用於標準視窗和控制項,包括 ActiveX 控制項;不過,如果您的 CWnd 衍生類別包含非windowed使用者介面元素,MFC 無法知道它們。 在此情況下,您必須覆寫類別中適當的 Active Accessibility 成員函 式,而且您必須在類別的建構函式中呼叫 EnableActiveAccessibility

CWnd::EnableDynamicLayout

啟用或停用動態配置管理員。 啟用動態配置時,會在使用者調整視窗大小時動態調整子視窗的位置與大小。

void EnableDynamicLayout(BOOL bEnable = TRUE);

參數

bEnable
TRUE 表示啟用動態配置; FALSE 以停用動態版面配置。

備註

如果您想要啟用動態配置,除了呼叫這個方法之外,還必須執行其他作業。 您還必須提供動態配置資訊,該資訊指定視窗中的控制項如何回應大小變更。 您可以在資源編輯器中或以程式設計方式,為每個控制項指定這項資訊。 請參閱 動態版面配置

CWnd::EnableD2DSupport

啟用或停用視窗 D2D 支援。 初始化主視窗之前先呼叫這個方法。

void EnableD2DSupport(
    BOOL bEnable = TRUE,
    BOOL bUseDCRenderTarget = FALSE);

參數

bEnable
指定是否開啟或關閉 D2D 支援。

bUseDCRenderTarget
物種是否要使用裝置內容 (DC) 轉譯目標, CDCRenderTarget 。 如果為 FALSE,則會使用 CHwndRenderTarget

CWnd::EnableScrollBar

啟用或停用一個捲軸的一或兩個箭號。

BOOL EnableScrollBar(
    int nSBFlags,
    UINT nArrowFlags = ESB_ENABLE_BOTH);

參數

nSBFlags
指定捲軸類型。 可以有下列其中一個值:

  • SB_BOTH 啟用或停用與視窗相關聯的水準和垂直捲動條箭號。

  • SB_HORZ 啟用或停用與視窗相關聯的水準捲軸箭號。

  • SB_VERT 啟用或停用與視窗相關聯之垂直捲動條的箭號。

nArrowFlags
指定是否啟用或停用捲軸箭號,以及啟用或停用哪些箭號。 可以有下列其中一個值:

  • ESB_ENABLE_BOTH 啟用捲軸的兩個箭號(預設值)。

  • ESB_DISABLE_LTUP 停用水準捲軸的向左箭號或垂直捲動條的向上箭號。

  • ESB_DISABLE_RTDN 停用水準捲軸的向右箭號或垂直捲動條的向下箭號。

  • ESB_DISABLE_BOTH 停用捲軸的兩個箭號。

傳回值

如果箭號已啟用或停用指定,則為非零。 否則為 0,表示箭號已處於要求狀態或發生錯誤。

CWnd::EnableScrollBarCtrl

啟用或停用此視窗的捲軸。

void EnableScrollBarCtrl(
    int nBar,
    BOOL bEnable = TRUE);

參數

nBar
捲軸識別碼。

bEnable
指定要啟用或停用捲軸。

備註

如果視窗具有同層級捲軸控制項,則會使用該捲軸;否則會使用視窗自己的捲軸。

CWnd::EnableToolTips

啟用指定視窗的工具提示。

BOOL EnableToolTips(BOOL bEnable = TRUE);

參數

bEnable
指定是否啟用或停用工具提示控制項。 TRUE 啟用 控制項; FALSE 會停用 控制項。

傳回值

TRUE 如果已啟用工具提示,則為 ;否則 FALSE 為 。

備註

覆寫 OnToolHitTest 以提供 TOOLINFO 視窗的結構或結構。

注意

某些視窗,例如 CToolBar ,提供 的內建實作 OnToolHitTest

如需此結構的詳細資訊,請參閱 TOOLINFO Windows SDK。

除非父視窗衍生自 CFrameWnd ,否則只要呼叫 EnableToolTips 就不足以顯示子控制項的工具提示。 這是因為 CFrameWnd 提供通知的預設處理常式 TTN_NEEDTEXT 。 如果您的父視窗不是衍生自 CFrameWnd ,也就是說,如果是對話方塊或表單檢視,除非您提供工具提示通知的 TTN_NEEDTEXT 處理常式,否則子控制項的工具提示將不會正確顯示。 請參閱 工具提示

為視窗 EnableToolTips 提供的預設工具提示沒有與其相關聯的文字。 若要擷取要顯示之工具提示的文字, TTN_NEEDTEXT 通知會傳送至工具提示控制項的父視窗,再顯示工具提示視窗。 如果此訊息沒有處理常式將某些值指派給 pszText 結構的成員 TOOLTIPTEXT ,則工具提示不會顯示任何文字。

範例

// From message map for CMdiView, a CView-derived class
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, &CMdiView::OnToolTipNotify)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, &CMdiView::OnToolTipNotify)

 

void CMdiView::OnInitialUpdate()
{
   CView::OnInitialUpdate();

   m_Edit.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
                 CRect(10, 10, 100, 100), this, IDC_TTEDIT);
   EnableToolTips(TRUE); // enable tool tips for view
}

//Notification handler
BOOL CMdiView::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
   UNREFERENCED_PARAMETER(id);
   UNREFERENCED_PARAMETER(pResult);

   // need to handle both ANSI and UNICODE versions of the message
   TOOLTIPTEXTA *pTTTA = (TOOLTIPTEXTA*)pNMHDR;
   TOOLTIPTEXTW *pTTTW = (TOOLTIPTEXTW*)pNMHDR;
   CStringA strTipText;
   UINT_PTR nID = pNMHDR->idFrom;
   if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
       pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
   {
      // idFrom is actually the HWND of the tool
      nID = ::GetDlgCtrlID((HWND)nID);
   }

   if (nID != 0) // will be zero on a separator
      strTipText.Format("Control ID = %d", nID);

   if (pNMHDR->code == TTN_NEEDTEXTA)
   {
      strncpy_s(pTTTA->szText, sizeof(pTTTA->szText), strTipText,
                strTipText.GetLength() + 1);
   }
   else
   {
      ::MultiByteToWideChar(CP_ACP, 0, strTipText, strTipText.GetLength() + 1,
                            pTTTW->szText, sizeof(pTTTW->szText) / (sizeof pTTTW->szText[0]));
   }

   return TRUE; // message was handled
}

CWnd::EnableTrackingToolTips

啟用或停用追蹤工具提示。

BOOL EnableTrackingToolTips(BOOL bEnable = TRUE);

參數

bEnable
指定是否啟用或停用追蹤工具提示。 如果此參數為 TRUE ,則會啟用追蹤工具提示。 如果此參數為 FALSE ,將會停用追蹤工具提示。

傳回值

指出呼叫成員函式之前 EnableWindow 的狀態。 如果先前停用視窗,則傳回值為非零值。 如果先前啟用視窗或發生錯誤,則傳回值為 0。

備註

追蹤工具提示是工具提示視窗,您可以在畫面上動態定位。 藉由快速更新位置,工具提示視窗似乎會順暢地移動,或「追蹤」。如果您需要工具提示文字來追蹤指標移動時的位置,這項功能會很有用。

CWnd::EnableWindow

啟用或停用滑鼠和鍵盤輸入。

BOOL EnableWindow(BOOL bEnable = TRUE);

參數

bEnable
指定要啟用或停用指定的視窗。 如果此參數為 TRUE ,則會啟用視窗。 如果此參數為 FALSE ,則會停用視窗。

傳回值

指出呼叫成員函式之前 EnableWindow 的狀態。 如果先前停用視窗,則傳回值為非零值。 如果先前啟用視窗或發生錯誤,則傳回值為 0。

備註

停用輸入時,會忽略滑鼠按一下和按鍵等輸入。 啟用輸入時,視窗會處理所有輸入。

如果啟用的狀態正在變更,則會 WM_ENABLE 在傳回此函式之前傳送訊息。

如果停用,則所有子視窗都會隱含停用,但不會傳送 WM_ENABLE 訊息。

必須先啟用視窗,才能啟用視窗。 例如,如果應用程式顯示無強制回應對話方塊且已停用其主視窗,則必須先啟用主視窗,才能終結對話方塊。 否則,另一個視窗會取得輸入焦點並啟動。 如果停用子視窗,當 Windows 嘗試判斷哪個視窗應該取得滑鼠訊息時,就會忽略它。

根據預設,視窗會在建立時啟用。 應用程式可以在 或 CreateEx 成員函式中 Create 指定 WS_DISABLED 樣式,以建立一開始停用的視窗。 建立視窗之後,應用程式也可以使用 EnableWindow 成員函式來啟用或停用視窗。

應用程式可以使用此函式來啟用或停用對話方塊中的控制項。 停用的控制項無法接收輸入焦點,也無法讓使用者存取它。

範例

//CMyFileDialog is a CFileDialog-derived class
//OnInitDialog is the handler for WM_INITDIALOG
BOOL CMyFileDialog::OnInitDialog()
{
   CFileDialog::OnInitDialog();

   CWnd *pWndParent = GetParent();

   //make sure you add #include <dlgs.h> for IDs 'edt1' & 'stc3'

   //disables the 'file name' edit and static control
   //of the standard file open dialog

   //get handle of 'file name' combobox control & disable it
   CWnd *pWnd = pWndParent->GetDlgItem(cmb13);
   pWnd->EnableWindow(FALSE);

   //get handle of 'file name' static control & disable it
   pWnd = pWndParent->GetDlgItem(stc3);
   pWnd->EnableWindow(FALSE);

   return TRUE;
}

CWnd::EndModalLoop

終止 對 RunModalLoop 的呼叫。

virtual void EndModalLoop(int nResult);

參數

nResult
包含要傳回給 呼叫端的值 RunModalLoop

備註

參數 nResult 會傳播至 的 RunModalLoop 傳回值。

CWnd::EndModalState

呼叫此成員函式,將框架視窗從強制回應變更為非強制回應。

virtual void EndModalState();

CWnd::EndPaint

標記指定視窗中繪製的結尾。

void EndPaint(LPPAINTSTRUCT lpPaint);

參數

lpPaint
指向 PAINTSTRUCT 結構,其中包含成員函式所擷取的 BeginPaint 繪製資訊。

備註

每個 EndPaint 對成員函式的呼叫 BeginPaint 都需要成員函式,但只有在繪製完成之後。

如果成員函式隱藏 BeginPaint 插入號, EndPaint 請將插入號還原至畫面。

範例

請參閱 的 CWnd::BeginPaint 範例。

CWnd::ExecuteDlgInit

初始化對話方塊資源。

BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
BOOL ExecuteDlgInit(LPVOID lpResource);

參數

lpszResourceName
指定資源名稱之 Null 終止字串的指標。

lpResource
資源的指標。

傳回值

TRUE 如果執行對話資源,則為 ;否則 FALSE 為 。

備註

ExecuteDlgInit 會使用系結至執行模組的資源,或來自其他來源的資源。 若要達成此目的, ExecuteDlgInit 請呼叫 AfxFindResourceHandle 來尋找資源控制碼。 如果您的 MFC 應用程式未使用共用 DLL (MFCx0[U][D].DLL), AfxFindResourceHandle 則會呼叫 AfxGetResourceHandle ,這會傳回可執行檔目前的資源控制碼。 如果您的 MFC 應用程式使用 MFCx0[U][D].DLL, AfxFindResourceHandleCDynLinkLibrary 周遊共用和 MFC 延伸模組 DLL 的物件清單,以尋找正確的資源控制碼。

CWnd::FilterToolTipMessage

由架構呼叫以顯示工具提示訊息。

void FilterToolTipMessage(MSG* pMsg);

參數

pMsg
工具提示訊息的指標。

備註

在大部分的 MFC 應用程式中,此方法是由 和 EnableToolTips 的架構 PreTranslateMessage 所呼叫,您不需要自行呼叫它。

不過,在某些應用程式中,例如某些 ActiveX 控制項,這些方法可能不會由架構叫用,而且您必須自行呼叫 FilterToolTipMessage 。 如需詳細資訊,請參閱 建立工具提示 的方法。

CWnd::FindWindow

傳回最上層 CWnd ,其視窗類別是由 lpszClassName 指定,而其視窗名稱或標題是由 lpszWindowName 提供。

static CWnd* PASCAL FindWindow(
    LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName);

參數

lpszClassName
指向以 Null 結尾的字串,指定視窗的類別名稱( WNDCLASS 結構)。 如果 lpClassNameNULL ,則所有類別名稱都相符。

lpszWindowName
指向以 Null 結尾的字串,指定視窗名稱(視窗的標題)。 如果 lpWindowNameNULL ,則所有視窗名稱都相符。

傳回值

識別具有指定類別名稱和視窗名稱的視窗。 NULL如果找不到這類視窗,則為 。

CWnd* 可能是暫時的,不應該儲存以供日後使用。

備註

此函式不會搜尋子視窗。

範例

// activate an application with a window with a specific class name
BOOL CMyApp::FirstInstance()
{
   CWnd *pWndPrev, *pWndChild;

   // Determine if a window with the class name exists...
   pWndPrev = CWnd::FindWindow(_T("MyNewClass"), NULL);
   if (NULL != pWndPrev)
   {
      // If so, does it have any popups?
      pWndChild = pWndPrev->GetLastActivePopup();

      // If iconic, restore the main window
      if (pWndPrev->IsIconic())
         pWndPrev->ShowWindow(SW_RESTORE);

      // Bring the main window or its popup to the foreground
      pWndChild->SetForegroundWindow();

      // and you are done activating the other application
      return FALSE;
   }

   return TRUE;
}

CWnd::FindWindowEx

擷取其類別名稱和視窗名稱符合指定字串的 window 物件。

static CWnd* FindWindowEx(
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow);

參數

hwndParent
要搜尋其子視窗的父視窗控制碼。

hwndChildAfter
子視窗的控制碼。 搜尋會以 Z 順序的下一個子視窗開始。 子視窗必須是 的 hwndParent 直接子視窗,而不只是子系視窗。

lpszClass
Null 終止字串的指標,指定先前呼叫 RegisterClassRegisterClassEx 所建立的類別名稱或類別 Atom。

lpszWindow
指定視窗名稱的 Null 終止字串指標(視窗標題)。 如果此參數為 NULL ,則所有視窗名稱都相符。

傳回值

如果函式成功,傳回值是具有指定類別和視窗名稱之視窗物件的指標。 如果函式失敗,傳回值為 NULL

備註

此成員函式會模擬 函式的功能 FindWindowEx ,如 Windows SDK 中所述。

CWnd::FlashWindow

閃爍指定的視窗一次。

BOOL FlashWindow(BOOL bInvert);

參數

bInvert
指定要 CWnd 閃爍或傳回至其原始狀態。 如果 bInvertTRUE ,則會 CWnd 從某個狀態閃爍至另一個狀態。 如果 bInvertFALSE ,則會將視窗傳回至其原始狀態(使用中或非使用中)。

傳回值

如果視窗在成員函式呼叫 FlashWindow 之前為使用中,則為非零;否則為 0。

備註

若要連續閃爍,請建立系統計時器並重複呼叫 FlashWindow 。 閃爍 CWnd 表示變更其標題列的外觀,就好像 CWnd 從非作用中狀態變更為作用中狀態,反之亦然。 (非作用中的標題列會變更為使用中的標題列;作用中的標題列會變更為非作用中的標題列。

一般而言,視窗會閃爍,通知使用者需要注意,但目前沒有輸入焦點。

bInvert只有在視窗取得輸入焦點且不再閃爍 TRUE 時,參數才應該 FALSE 在等候取得輸入焦點時連續呼叫。

此函式一律會針對最小化視窗傳回非零值。 如果視窗最小化, FlashWindow 則會閃爍視窗的圖示; bInvert 會忽略最小化視窗。

範例

BOOL CPenWidthsDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // set timer to cause dialog to flash
   SetTimer(1, 500, NULL);
   return TRUE; // return TRUE unless you set the focus to a control
}

void CPenWidthsDlg::OnTimer(UINT_PTR nIDEvent)
{
   // cause the dialog to flash
   FlashWindow(TRUE);
   CDialog::OnTimer(nIDEvent);
}

CWnd::FlashWindowEx

閃爍指定的視窗。

BOOL FlashWindowEx(
    DWORD dwFlags,
    UINT uCount,
    DWORD dwTimeout);

參數

*dwFlags*
指定快閃狀態。 如需值的完整清單,請參閱 FLASHWINFO 結構。

uCount
指定要閃爍視窗的次數。

dwTimeout
指定視窗會閃爍的速率,以毫秒為單位。 如果 dwTimeout 為零,函式會使用預設的資料指標閃爍頻率。

傳回值

傳回值會指定函式呼叫 FlashWindowEx 之前視窗的狀態。 如果視窗標題在呼叫之前繪製為使用中,則傳回值為非零值。 否則,傳回值為零。

備註

此方法會模擬 函式的功能 FlashWindowEx ,如 Windows SDK 中所述。

CWnd::FromHandle

將控制代碼提供給視窗時,將指標傳回至 CWnd 物件。 CWnd如果物件未附加至控制碼,則會建立並附加暫存 CWnd 物件。

static CWnd* PASCAL FromHandle(HWND hWnd);

參數

hWnd
HWNDWindows 視窗的 。

傳回值

將控制代碼提供給視窗時,將指標傳回至 CWnd 物件。 CWnd如果物件未附加至控制碼,則會建立並附加暫存 CWnd 物件。

指標可能是暫時的,不應該儲存以供日後使用。

CWnd::FromHandlePermanent

將控制代碼提供給視窗時,將指標傳回至 CWnd 物件。

static CWnd* PASCAL FromHandlePermanent(HWND hWnd);

參數

hWnd
HWNDWindows 視窗的 。

傳回值

CWnd 物件的指標。

備註

CWnd如果物件未附加至控制碼, NULL 則會傳回 。

此函式與 不同 FromHandle ,不會建立暫存物件。

CWnd::get_accChild

由架構呼叫以擷取指定子系的 IDispatch 介面位址。

virtual HRESULT get_accChild(
    VARIANT varChild,
    IDispatch** ppdispChild);

參數

varChild
識別要擷取其介面的 IDispatch 子系。

ppdispChild
接收子物件介面的 IDispatch 位址。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accChild

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::get_accChild Windows SDK 中的 。

CWnd::get_accChildCount

由架構呼叫以擷取屬於此物件的子物件數目。

virtual HRESULT get_accChildCount(long* pcountChildren);

參數

pcountChildren
接收子系的數目。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accChildCount

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。 呼叫基類版本,然後新增非windowed 子專案。

如需詳細資訊,請參閱 IAccessible::get_accChildCount Windows SDK 中的 。

CWnd::get_accDefaultAction

由架構呼叫以擷取具有物件預設動作描述的字串。

virtual HRESULT get_accDefaultAction(
    VARIANT varChild,
    BSTR* pszDefaultAction);

參數

varChild
指定要擷取的預設動作是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pszDefaultAction
BSTR接收當地語系化字串的位址,描述指定之物件的預設動作,如果 NULL 這個物件沒有預設動作,則為 。

傳回值

傳回成功時S_OK失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的 IAccessible::get_accDefaultAction 傳回值

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

覆寫衍生類別中的 CWnd 這個函式,以描述物件的預設動作。

如需詳細資訊,請參閱 IAccessible::get_accDefaultAction Windows SDK 中的 。

CWnd::get_accDescription

由架構呼叫以擷取含有指定物件的視覺外觀描述的字串。

virtual HRESULT get_accDescription(
    VARIANT varChild,
    BSTR* pszDescription);

參數

varChild
指定要擷取的描述是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pszDescription
BSTR位址,接收描述指定之物件的當地語系化字串,如果 NULL 這個物件沒有可用的描述,則為 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accDescription

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

覆寫衍生類別中的 CWnd 這個函式,以描述您的物件。 呼叫基類版本並新增您的描述。

如需詳細資訊,請參閱 IAccessible::get_accDescription Windows SDK 中的 。

CWnd::get_accFocus

由架構呼叫以擷取具有鍵盤焦點的物件。

virtual HRESULT get_accFocus(VARIANT* pvarChild);

參數

pvarChild
接收具有焦點之物件的相關資訊。 IAccessible::get_accFocus請參閱 pvarID Windows SDK 中的 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accFocus

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::get_accFocus Windows SDK 中的 。

CWnd::get_accHelp

由架構呼叫以擷取物件的 Help 屬性字串。

virtual HRESULT get_accHelp(
    VARIANT varChild,
    BSTR* pszHelp);

參數

varChild
指定要擷取的說明資訊是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pszHelp
BSTR接收當地語系化字串的位址,其中包含指定之物件的說明資訊,如果沒有 NULL 可用的說明資訊,則為 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accHelp

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

覆寫衍生類別中的 CWnd 這個函式,為您的物件提供解說文字。

如需詳細資訊,請參閱 IAccessible::get_accHelp Windows SDK 中的 。

CWnd::get_accHelpTopic

由架構呼叫,以擷取與指定物件相關聯之 WinHelp 檔案的完整路徑 ,以及該檔案中適當主題的識別碼。

virtual HRESULT get_accHelpTopic(
    BSTR* pszHelpFile,
    VARIANT varChild,
    long* pidTopic);

參數

pszHelpFile
BSTR位址,這個位址會接收與指定物件相關聯之檔案的完整路徑 WinHelp ,如果有的話。

varChild
指定要擷取的 [說明] 主題是否為 物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的 [說明主題] 或子識別碼 (若要取得其中一個物件的子專案的說明主題)。

pidTopic
識別與指定物件相關聯的說明檔主題。 IAccessible::get_accHelpTopic請參閱 pidTopic Windows SDK 中的 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accHelpTopic

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

覆寫衍生類別中的 CWnd 這個函式,以提供物件的相關說明資訊。

如需詳細資訊,請參閱 IAccessible::get_accHelpTopic Windows SDK 中的 。

CWnd::get_accKeyboardShortcut

由架構呼叫以擷取指定物件的快速鍵或便捷鍵。

virtual HRESULT get_accKeyboardShortcut(
    VARIANT varChild,
    BSTR* pszKeyboardShortcut);

參數

varChild
指定要擷取的鍵盤快速鍵是否為物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pszKeyboardShortcut
BSTR接收當地語系化字串的 位址,識別鍵盤快速鍵,如果沒有 NULL 與指定的物件相關聯,則為 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accKeyboardShortcut

備註

此函式是 MFC 支援的一 Active Accessibility 部分。

覆寫衍生類別中的 CWnd 這個函式,以識別物件的鍵盤快速鍵。

如需詳細資訊,請參閱 IAccessible::get_accKeyboardShortcut Windows SDK 中的 。

CWnd::get_accName

由架構呼叫以擷取指定物件的名稱。

virtual HRESULT get_accName(
    VARIANT varChild,
    BSTR* pszName);

參數

varChild
指定要擷取的名稱是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pszName
BSTR接收包含指定物件名稱之字串的 位址。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accName

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

覆寫衍生類別中的 CWnd 這個函式,以傳回物件的名稱。

如需詳細資訊,請參閱 IAccessible::get_accName Windows SDK 中的 。

CWnd::get_accParent

由架構呼叫以擷取物件之父代的 IDispatch 介面。

virtual HRESULT get_accParent(IDispatch** ppdispParent);

參數

ppdispParent
接收父物件的 IDispatch 介面位址。 如果沒有任何父代存在,或子系無法存取其父代,變數就會設定為 NULL

傳回值

在成功時傳 S_OK 回錯誤碼。失敗時會傳 COM 回錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accParent

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

在大部分情況下,您不需要覆寫此函式。

如需詳細資訊,請參閱 IAccessible::get_accParent Windows SDK 中的 。

CWnd::get_accRole

由架構呼叫以擷取含有指定物件的角色描述資訊。

virtual HRESULT get_accRole(
    VARIANT varChild,
    VARIANT* pvarRole);

參數

varChild
指定要擷取的角色資訊是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pvarRole
接收角色資訊。 IAccessible::get_accRole請參閱 pvarRole Windows SDK 中的 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accRole

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::get_accRole Windows SDK 中的 。

CWnd::get_accSelection

由架構呼叫以擷取此物件的選取子物件。

virtual HRESULT get_accSelection(VARIANT* pvarChildren);

參數

pvarChildren
接收選取哪些子系的相關資訊。 IAccessible::get_accSelection請參閱 pvarChildren Windows SDK 中的 。

傳回值

傳回成功時S_OK失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accSelection

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::get_accSelection Windows SDK 中的 。

CWnd::get_accState

由架構呼叫以擷取指定物件的目前狀態。

virtual HRESULT get_accState(
    VARIANT varChild,
    VARIANT* pvarState);

參數

varChild
指定要擷取的狀態資訊是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pvarState
接收物件狀態的相關資訊。 IAccessible::get_accState請參閱 pvarState Windows SDK 中的 。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accState

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::get_accState Windows SDK 中的 。

CWnd::get_accValue

由架構呼叫以擷取指定物件的值。

virtual HRESULT get_accValue(
    VARIANT varChild,
    BSTR* pszValue);

參數

varChild
指定要擷取的值資訊是物件或其中一個物件的子專案。 這個參數可以是 CHILDID_SELF (若要取得物件的相關資訊)或子識別碼(以取得物件子專案的相關資訊)。

pszValue
BSTR位址,接收包含物件目前值的當地語系化字串。

傳回值

在成功時傳 S_OK 回失敗的 COM 錯誤碼。 請參閱 Windows SDK 中的傳回值 IAccessible::get_accValue

備註

此函式是 MFC 的作用中協助工具 支援的一部分。

如果您有非windowed使用者介面元素,則覆寫衍生類別中的 CWnd 此函式(MFC 會處理的非視窗 ActiveX 控制項)。

如需詳細資訊,請參閱 IAccessible::get_accValue Windows SDK 中的 。

CWnd::GetActiveWindow

擷取使用中視窗的指標。

static CWnd* PASCAL GetActiveWindow();

傳回值

使用中的視窗, NULL 如果呼叫時沒有使用中視窗,則為 。 指標可能是暫時的,不應該儲存以供日後使用。

備註

使用中視窗是具有目前輸入焦點的視窗,或是成員函式明確設為作用中的 SetActiveWindow 視窗。

CWnd::GetAncestor

擷取指定視窗的上階視窗物件。

CWnd* GetAncestor(UINT gaFlags) const;

參數

gaFlags
指定要擷取的上階。 如需可能值的完整清單,請參閱 GetAncestor

傳回值

如果函式成功,則傳回值是上階視窗物件的指標。 如果函式失敗,傳回值為 NULL

備註

此成員函式會模擬 函式的功能 GetAncestor ,如 Windows SDK 中所述。

CWnd::GetCapture

擷取具有滑鼠擷取的視窗。

static CWnd* PASCAL GetCapture();

傳回值

識別具有滑鼠擷取的視窗。 如果沒有視窗具有滑鼠擷取,則為 NULL

傳回值可能是暫時的,不應該儲存以供日後使用。

備註

在任何指定時間,只有一個視窗具有滑鼠擷取。 呼叫成員函式時 SetCapture ,視窗會收到滑鼠擷取。 此視窗會接收滑鼠輸入,不論游標是否在其框線內。

CWnd::GetCaretPos

擷取插入號目前位置的用戶端座標,並以 傳回它們。 CPoint

static CPoint PASCAL GetCaretPos();

傳回值

CPoint 物件,包含插入號位置的座標。

備註

插入號位置是在視窗的 CWnd 用戶端座標中提供。

CWnd::GetCheckedRadioButton

擷取指定群組中目前核取選項按鈕的識別碼。

int GetCheckedRadioButton(
    int nIDFirstButton,
    int nIDLastButton);

參數

nIDFirstButton
指定群組中第一個選項按鈕的整數識別碼。

nIDLastButton
指定群組中最後一個選項按鈕的整數識別碼。

傳回值

核取選項按鈕的識別碼,如果未選取任何按鈕,則為 0。

CWnd::GetClientRect

將工作區的 CWnd 用戶端座標複製到 所 lpRect 指向的結構中。

void GetClientRect(LPRECT lpRect) const;

參數

lpRect
指向 RECT 要接收用戶端座標的結構 CRect 物件。 lefttop 成員將會是 0。 rightbottom 成員將包含視窗的寬度和高度。

備註

用戶端座標會指定工作區的左上角和右下角。 由於用戶端座標相對於工作區的 CWnd 左上角,左上角的座標是 (0,0)。

範例

請參閱 的 CWnd::IsIconic 範例。

CWnd::GetClipboardOwner

擷取剪貼簿的目前擁有者。

static CWnd* PASCAL GetClipboardOwner();

傳回值

識別如果函式成功,則識別擁有剪貼簿的視窗。 否則為 NULL

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

剪貼簿仍然可以包含資料,即使資料目前尚未擁有也一樣。

CWnd::GetClipboardViewer

擷取剪貼簿檢視器鏈結中的第一個視窗。

static CWnd* PASCAL GetClipboardViewer();

傳回值

識別目前負責在成功時顯示剪貼簿的視窗;否則 NULL 為 (例如,如果沒有檢視器)。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

CWnd::GetControlUnknown

呼叫這個成員函式,以擷取未知 OLE 控制項的指標。

LPUNKNOWN GetControlUnknown();

傳回值

這個 CWnd 物件所表示之 OLE 控制項介面的指標 IUnknown 。 如果這個物件不代表 OLE 控制項,則傳回值為 NULL

備註

您不應該釋放此 IUnknown 指標。 一般而言,您會使用 來取得 控制項的特定介面。

GetControlUnknown 傳回的介面指標不會計算參考計數。 除非您先前已呼叫指標,否則請勿 IUnknown::Release 在指標上呼叫 IUnknown::AddRef

範例

// The following code fragment is taken from CMyDlg::OnInitDialog
// CMyDlg is a CDialog-derived class.

// IDC_MSACALCTRL1 is the ID of the Calendar control OCX embedded
// on this dialog
CWnd *pWndCal = GetDlgItem(IDC_MSACALCTRL1);

// Use the IUnknown of the control
LPUNKNOWN pUnk = pWndCal->GetControlUnknown();

// From there get the IDispatch interface of control
LPDISPATCH pDisp = NULL;
pUnk->QueryInterface(IID_IDispatch, (LPVOID*)&pDisp);

// use IDispatch method to invoke the control's functionality

CWnd::GetCurrentMessage

傳回此視窗目前正在處理的訊息指標。 只有在 On Message 訊息處理常式成員函式中 時,才應該呼叫 。

static const MSG* PASCAL GetCurrentMessage();

傳回值

傳回結構指標 MSG ,其中包含視窗目前正在處理的訊息。 只有在 On Message 處理常式中 時,才應該呼叫 。

範例

請參閱 的 CMDIFrameWnd::MDICascade 範例。

CWnd::GetDC

根據 指定的 CWnd 類別樣式,擷取工作區的通用、類別或私人裝置內容的指標。

CDC* GetDC();

傳回值

如果成功,識別工作區的 CWnd 裝置內容,否則傳回值為 NULL 。 指標可能是暫時的,不應該儲存以供日後使用。

備註

針對常見的裝置內容,在每次擷取內容時, GetDC 將預設屬性指派給內容。 針對類別和私用內容, GetDC 保留先前指派的屬性不變。 裝置內容可用於後續圖形裝置介面 (GDI) 函式,以在工作區中繪製。

除非裝置內容屬於視窗類別, ReleaseDC 否則必須呼叫成員函式,才能在繪製之後釋放內容。

如果 CS_OWNDCCS_CLASSDC 、 或 CS_PARENTDC 是在註冊 類別時,當類別註冊時,成員函式會傳回 GetDC 屬於 CWnd 類別的 WNDCLASS 裝置內容。

CWnd::GetDCEx

擷取視窗裝置內容的 CWnd 控制碼。

CDC* GetDCEx(
    CRgn* prgnClip,
    DWORD flags);

參數

prgnClip
識別可能與用戶端視窗可見區域結合的裁剪區域。

flags
可以有下列其中一個預設值:

  • DCX_CACHE 從快取傳回裝置內容,而不是 OWNDCCLASSDC 視窗。 覆寫 CS_OWNDCCS_CLASSDC

  • DCX_CLIPCHILDREN 排除視窗下方 CWnd 所有子視窗的可見區域。

  • DCX_CLIPSIBLINGS 排除視窗上方 CWnd 所有同層級視窗的可見區域。

  • DCX_EXCLUDERGN 從傳回裝置內容的可見區域排除 所 prgnClip 識別的裁剪區域。

  • DCX_INTERSECTRGN 與所傳回裝置內容可見區域內所識別 prgnClip 的裁剪區域相交。

  • DCX_LOCKWINDOWUPDATE 允許繪圖,即使有 LockWindowUpdate 有效的呼叫,否則會排除此視窗。 此值用於追蹤期間繪製。

  • DCX_PARENTCLIP 使用父視窗的可見區域,並忽略父視窗的 WS_CLIPCHILDRENWS_PARENTDC 樣式位。 此值會將裝置內容的原點設定為視窗左上角 CWnd

  • DCX_WINDOW 傳回對應至視窗矩形而非用戶端矩形的裝置內容。

傳回值

如果函式成功,則為指定視窗的裝置內容;否則 NULL 為 。

備註

裝置內容可用於後續的 GDI 函式中,以在工作區中繪製。

此函式是函式的 GetDC 延伸模組,可讓應用程式更充分掌控視窗的裝置內容如何及是否裁剪。

除非裝置內容屬於視窗類別,否則必須呼叫 函 ReleaseDC 式,才能在繪圖之後釋放內容。 由於在任何指定時間只能使用五個通用裝置內容,因此無法釋放裝置內容可能會防止其他應用程式存取裝置內容。

若要取得快取的裝置內容,應用程式必須指定 DCX_CACHE 。 如果未指定DCX_CACHE,而且視窗既不是 CS_OWNDC ,也不是 CS_CLASSDC ,則此函式會傳 NULL 回 。

如果註冊 類別時,函式會傳回 GetDCEx 具有特殊特性的裝置內容,如果 CS_CLASSDC 已在 結構中 WNDCLASS 指定 、 CS_OWNDCCS_PARENTDC 樣式。

如需這些特性的詳細資訊,請參閱 Windows SDK 中結構的描述 WNDCLASS

CWnd::GetDCRenderTarget

擷取裝置內容 (DC) 會呈現 CWnd 視窗的目標。

CDCRenderTarget* GetDCRenderTarget();

傳回值

如果函式成功,則指定視窗的裝置內容轉譯目標;否則 NULL 為 。

備註

CWnd::GetDescendantWindow

呼叫這個成員函式,以尋找指定識別碼所指定的子代視窗。

CWnd* GetDescendantWindow(
    int nID,
    BOOL bOnlyPerm = FALSE) const;

參數

nID
指定要擷取之控制項或子視窗的識別碼。

bOnlyPerm
指定要傳回的視窗是否為暫時的。 如果 TRUE 為 ,則只能傳回永久視窗;如果 FALSE 為 ,則函式可以傳回暫存視窗。 如需暫存視窗的詳細資訊,請參閱 技術附注 3

傳回值

物件的指標 CWnd ,如果找不到子視窗, NULL 則為 。

備註

這個成員函式會搜尋子視窗的整個樹狀結構,而不只是直接子系的視窗。

CWnd::GetDesktopWindow

傳回 Windows 桌面視窗。

static CWnd* PASCAL GetDesktopWindow();

傳回值

識別 Windows 桌面視窗。 此指標可能是暫時的,不應該儲存以供日後使用。

備註

桌面視窗會涵蓋整個螢幕,而且是所有圖示和其他視窗都繪製在頂端的區域。

CWnd::GetDlgCtrlID

傳回任何子視窗的視窗或控制項識別碼值,不只傳回對話方塊中控制項的視窗或控制項識別碼值。

int GetDlgCtrlID() const;

傳回值

如果函式成功,則為子視窗的 CWnd 數值識別碼,否則為 0。

備註

由於最上層視窗沒有識別碼值,如果 CWnd 是最上層視窗,則此函式的傳回值無效。

範例

請參閱 的 CWnd::OnCtlColor 範例。

CWnd::GetDlgItem

擷取對話方塊或其他視窗中指定控制項或子視窗的指標。

CWnd* GetDlgItem(int nID) const;

void GetDlgItem(
    int nID,
    HWND* phWnd) const;

參數

nID
指定要擷取之控制項或子視窗的識別碼。

phWnd
子視窗的指標。

傳回值

指定控制項或子視窗的指標。 如果參數指定 nID 之整數識別碼的控制項不存在,則值為 NULL

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

傳回的指標通常會轉換成 所 nID 識別的控制項類型。

範例

// uses GetDlgItem to return a pointer to a user interface control
CEdit *pBoxOne;
pBoxOne = (CEdit*)GetDlgItem(IDC_MYEDIT);
GotoDlgCtrl(pBoxOne);

CWnd::GetDlgItemInt

擷取 所 nID 識別之控制項的文字。

UINT GetDlgItemInt(
    int nID,
    BOOL* lpTrans = NULL,
    BOOL bSigned = TRUE) const;

參數

nID
指定要轉譯之對話方塊控制項的整數識別碼。

lpTrans
指向要接收已轉譯旗標的布林變數。

bSigned
指定要擷取的值是否帶正負號。

傳回值

指定對話方塊專案文字的翻譯值。 由於 0 是有效的傳回值, lpTrans 因此必須用來偵測錯誤。 如果需要帶正負號的傳回值,請將它 int 轉換成類型。

如果翻譯的數位大於 INT_MAX (若為帶正負號的數位)或 UINT_MAX (未帶正負號),則函式會傳回 0。

發生錯誤時,例如遇到非數值字元且超過上述最大值, GetDlgItemInt 會將 0 複製到 所 lpTrans 指向的位置。 如果沒有錯誤, lpTrans 則會收到非零值。 如果 lpTransNULLGetDlgItemInt 則不會警告錯誤。

備註

它會將指定對話方塊中指定控制項的文字轉譯為整數值,方法是在文字開頭去除任何額外的空格,並轉換小數位數。 它會在到達文字結尾或遇到任何非數值字元時停止翻譯。

如果 bSignedTRUEGetDlgItemInt 則會檢查文字開頭的減號 (-),並將文字轉譯為帶正負號的數位。 否則,它會建立不帶正負號的值。

它會將訊息傳送 WM_GETTEXT 至 控制項。

CWnd::GetDlgItemText

呼叫這個成員函式,以擷取與對話方塊中控制項相關聯的標題或文字。

int GetDlgItemText(
    int nID,
    LPTSTR lpStr,
    int nMaxCount) const;

int GetDlgItemText(
    int nID,
    CString& rString) const;

參數

nID
指定要擷取標題之控制項的整數識別碼。

lpStr
指向緩衝區以接收控制項的標題或文字。

nMaxCount
指定要複製到 lpStr 之字串的最大長度(以字元為單位)。 如果字串超過 nMaxCount ,則會截斷字串。

rString
CString 參考。

傳回值

指定複製到緩衝區的實際字元數,不包括終止的 Null 字元。 如果未複製任何文字,則值為 0。

備註

成員 GetDlgItemText 函式會將文字複製到 所 lpStr 指向的位置,並傳回所複製位元組數目的計數。

CWnd::GetDSCCursor

呼叫這個成員函式,以擷取資料來源控制項之 、 UserNamePassword 和 SQL 屬性所 DataSource 定義的基礎資料指標。

IUnknown* GetDSCCursor();

傳回值

資料來源控制項所定義的資料指標。 MFC 會負責呼叫 AddRef 指標。

備註

使用傳回的指標來設定 ICursor 複雜資料繫結控制項的 屬性,例如資料繫結方格控制項。 除非第一個繫結控制項要求其資料指標,否則資料來源控制項將不會變成作用中。 這可以透過呼叫 GetDSCCursor 或 MFC 系結管理員隱含的方式進行。 在任一情況下,您可以呼叫 ,然後在 傳回的指標 IUnknown 上呼叫 GetDSCCursorRelease ,強制資料來源控制項變成作用中。 啟用會導致資料來源控制項嘗試連線到基礎資料來源。 傳回的指標可用於下列內容:

範例

BOOL CMyDlg::OnInitDialog()
{
   // Find the child controls on the dialog
   HRESULT hr = E_FAIL;
   CWnd *pDSC = GetDlgItem(IDC_DATASOURCE);
   CWnd *pListWnd = GetDlgItem(IDC_DBLIST1);
   IUnknown *punkList = pListWnd->GetControlUnknown();
   IDBList *pList = NULL;

   if (NULL != punkList)
   {
      hr = punkList->QueryInterface(__uuidof(IDBList), (void **)&pList);
   }

   if (SUCCEEDED(hr))
   {
      // Tell the MFC binding manager that we are
      // binding DISPID 3 to the data-source control.
      pListWnd->BindProperty(0x3, pDSC);

      // Tell the listbox which field to expose as its bound column
      pList->put_BoundColumn(_T("ContactFirstName"));

      // Tell the listbox which cursor and column to populate its list from
      pList->put_ListField(_T("ContactFirstName"));

      IUnknown *punkCursor = pDSC->GetDSCCursor();
      if (NULL != punkCursor)
      {
         punkCursor->Release();
      }

      pList->Release();
      return TRUE;
   }

CWnd::GetDynamicLayout

擷取動態配置管理員物件的指標。

CMFCDynamicLayout* GetDynamicLayout();

傳回值

動態建構管理員物件的指標,如果未 NULL 啟用動態配置,則為 。

備註

視窗物件擁有及管理傳回的指標存留期,因此它只應該用來存取物件;請勿永久刪除指標或儲存指標。

CWnd::GetExStyle

傳回視窗的延伸樣式。

DWORD GetExStyle() const;

傳回值

視窗的延伸樣式。 如需 MFC 中使用的擴充視窗樣式詳細資訊,請參閱 擴充視窗樣式

CWnd::GetFocus

擷取目前具有輸入焦點之 的指標 CWnd

static CWnd* PASCAL GetFocus();

傳回值

具有目前焦點的視窗指標,如果沒有 NULL 焦點視窗,則為 。

指標可能是暫時的,不應該儲存以供日後使用。

CWnd::GetFont

WM_GETFONT 訊息傳送至視窗以擷取目前的字型。

CFont* GetFont() const;

傳回值

CFont附加至視窗目前字型之物件的指標。

備註

除非視窗處理訊息, WM_GETFONT 否則這個方法不會有任何作用。 許多衍生自 CWnd 此訊息的 MFC 類別,因為它們會附加至預先定義的視窗類別,其中包含訊息的 WM_GETFONT 訊息處理常式。 若要使用此方法,衍生自 CWnd 的類別必須定義訊息的方法處理常式 WM_GETFONT

CWnd::GetForegroundWindow

傳回前景視窗的指標(使用者目前使用的視窗)。

static CWnd* PASCAL GetForegroundWindow();

傳回值

前景視窗的指標。 這可能是暫存 CWnd 物件。

備註

前景視窗僅適用于最上層視窗(框架視窗或對話方塊)。

CWnd::GetIcon

呼叫這個成員函式,以取得大型 (32x32) 或小型 (16x16) 圖示的控制碼,如 所示 bBigIcon

HICON GetIcon(BOOL bBigIcon) const;

參數

bBigIcon
如果 TRUE ,則指定 32 圖元的 32 圖元圖示;如果 FALSE ,則指定 16 圖元 x 16 圖元圖示。

傳回值

圖示的控制碼。 如果失敗,則傳 NULL 回 。

CWnd::GetLastActivePopup

判斷 CWnd 擁有的快顯視窗哪一個是最近啟用的。

CWnd* GetLastActivePopup() const;

傳回值

識別最近使用中的快顯視窗。 如果符合下列任何條件,則傳回值會是視窗本身:

  • 視窗本身最近使用中。

  • 視窗沒有任何快顯視窗。

  • 視窗不是最上層視窗,或是由另一個視窗擁有。

指標可能是暫時的,不應該儲存以供日後使用。

範例

請參閱 的 CWnd::FindWindow 範例。

CWnd::GetLayeredWindowAttributes

擷取分層視窗的不透明和透明色鍵。

BOOL GetLayeredWindowAttributes(
    COLORREF* pcrKey,
    BYTE* pbAlpha,
    DWORD* pdwFlags) const;

參數

pcrKey
COLORREF值指標,這個值會接收組成分層視窗時要使用的透明度色彩索引鍵。 以這個色彩繪製的視窗所繪製的所有圖元都會是透明的。 如果不需要引數,則這可以是 NULL

pbAlpha
BYTE的指標,接收用來描述分層視窗不透明度的 Alpha 值。 當 所參考 pbAlpha 的變數是 0 時,視窗會完全透明。 當 所參考 pbAlpha 的變數是 255 時,視窗是不透明的。 如果不需要引數,則這可以是 NULL

pdwFlags
DWORD接收分層旗標的 指標。 如果不需要引數,則這可以是 NULL 。 如需可能值的完整清單,請參閱 'GetLayeredWindowAttributes

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 GetLayeredWindowAttributes ,如 Windows SDK 中所述。

CWnd::GetMenu

擷取此視窗功能表的指標。

CMenu* GetMenu() const;

傳回值

識別功能表。 如果沒有任何功能表,則值為 NULLCWnd 。 如果 CWnd 為子視窗,則傳回值為未定義。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

此函式不應該用於子視窗,因為它們沒有功能表。

範例

void CMainFrame::OnCwndDeletefilemenu()
{
   // This example deletes the leftmost popup menu or leftmost
   // popup menu item from the application's main window.
   CWnd *pMain = AfxGetMainWnd();

   // The main window _can_ be NULL, so this code
   // doesn't ASSERT and actually tests.
   if (pMain != NULL)
   {
      // Get the main window's menu
      CMenu *pMenu = pMain->GetMenu();

      // If there is a menu and it has items, we'll
      // delete the first one.
      if (pMenu != NULL && pMenu->GetMenuItemCount() > 0)
      {
         pMenu->DeleteMenu(0, MF_BYPOSITION);
         // force a redraw of the menu bar
         pMain->DrawMenuBar();
      }

      // No need to delete pMenu because it is an MFC
      // temporary object.
   }
}

CWnd::GetMenuBarInfo

擷取指定功能表列的相關資訊。

BOOL GetMenuBarInfo(
    LONG idObject,
    LONG idItem,
    PMENUBARINFO pmbi) const;

參數

idObject
指定功能表物件。 如需可能值的清單,請參閱 GetMenuBarInfo

idItem
指定要擷取資訊的專案。 如果此參數為零,函式會擷取功能表本身的相關資訊。 如果此參數為 1,則函式會擷取功能表上第一個專案的相關資訊,依這類方式。

pmbi
MENUBARINFO接收資訊之結構的指標。

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 GetMenuBarInfo ,如 Windows SDK 中所述。

CWnd::GetNextDlgGroupItem

搜尋對話方塊中控制項群組內的上一個或下一個控制項。

CWnd* GetNextDlgGroupItem(
    CWnd* pWndCtl,
    BOOL bPrevious = FALSE) const;

COleControlSiteOrWnd* GetNextDlgGroupItem(
    COleControlSiteOrWnd* pCurSiteOrWnd = NULL) const;

參數

pWndCtl
識別要作為搜尋起點的控制項。

bPrevious
指定函式如何在對話方塊中搜尋控制項群組。 如果 TRUE 為 ,則函式會搜尋群組中的上一個控制項;如果是 FALSE ,則會搜尋群組中的下一個控制項。

pCurSiteOrWnd
識別 COleControlSiteOrWnd 控制項。 如需 的詳細資訊 COleControlSiteOrWnd ,請參閱

傳回值

如果成員函式成功,則為群組中上一個或下一個控制項的指標。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

一組控制項會以以樣式建立的 WS_GROUP 控制項開始,最後一個不是以樣式建立的 WS_GROUP 控制項結尾。

根據預設, GetNextDlgGroupItem 成員函式會傳回群組中下一個控制項的指標。 如果 pWndCtl 識別群組中的第一個控制項,且 bPreviousTRUEGetNextDlgGroupItem 則會傳回群組中最後一個控制項的指標。

注意

因為 MFC 支援無視窗 ActiveX 控制項、標準 ActiveX 控制項和視窗,因此只參考控制項 HWND 不再足夠。 物件 COleControlSiteOrWnd 包含將物件識別為視窗式 ActiveX 控制項、無視窗 ActiveX 控制項或視窗的資訊,如下所示:

控制項或視窗類型 識別資訊
視窗式 ActiveX 控制項 包含 HWND ,並將 COleControlSite 物件與其產生關聯 。 的成員 m_hWndCOleControlSiteOrWnd 會設定為 HWND 控制項的 ,而 m_pSite 成員指向 控制項的 COleControlSite
無視窗 ActiveX 控制項 不包含 HWND 。 的成員 m_pSiteCOleControlSiteOrWnd 指向 控制項的 COleControlSite ,而 m_hWnd 成員為 NULL
標準視窗 只包含 。 HWND 的成員 m_hWndCOleControlSiteOrWnd 會設定為視窗的 HWND,而 m_pSite 成員為 NULL

CWnd::GetNextDlgTabItem

擷取第一個以樣式建立之 WS_TABSTOP 控制項的指標,該控制項在指定控制項之前或之後建立。

CWnd* GetNextDlgTabItem(
    CWnd* pWndCtl,
    BOOL bPrevious = FALSE) const;

COleControlSiteOrWnd* GetNextDlgTabItem(
    COleControlSiteOrWnd* pCurSiteOrWnd,
    BOOL bPrevious) const;

參數

pWndCtl
識別要作為搜尋起點的控制項。

pCurSiteOrWnd
識別 COleControlSiteOrWnd 控制項。 如需 COleControlSiteOrWnd 的詳細資訊,請參閱CWnd::GetNextDlgGroupItem

bPrevious
指定函式搜尋對話方塊的方式。 如果 TRUE 為 ,則函式會在對話方塊中搜尋上一個控制項;如果 FALSE 為 ,則會搜尋下一個控制項。

傳回值

如果成員函式成功,則為具有 WS_TABSTOP 樣式的上一個或下一個控制項指標。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

如需 COleControlSiteOrWnd 的詳細資訊,請參閱CWnd::GetNextDlgGroupItem

CWnd::GetNextWindow

在視窗管理員清單中搜尋下一個 (或上一個) 視窗。

CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;

參數

nFlag
指定函式會傳回下一個視窗或上一個視窗的指標。 它可以是 GW_HWNDNEXT ,它會傳回視窗管理員清單上物件後面的 CWnd 視窗,或 GW_HWNDPREV ,它會傳回視窗管理員清單上的上一個視窗。

傳回值

如果成員函式成功,則識別視窗管理員清單中的下一個 (或上一個) 視窗。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

視窗管理員的清單包含所有最上層視窗、其相關聯的子視窗,以及任何子視窗的子視窗專案。

如果 CWnd 是最上層視窗,則函式會搜尋下一個 (或上一個) 最上層視窗;如果是 CWnd 子視窗,則函式會搜尋下一個 (或上一個) 子視窗。

CWnd::GetOleControlSite

擷取指定的 ActiveX 控制項的自訂網站。

COleControlSite* GetOleControlSite(UINT idControl) const;

參數

idControl
ActiveX 控制項的識別碼。

CWnd::GetOpenClipboardWindow

擷取目前開啟剪貼簿之視窗的控制碼。

static CWnd* PASCAL GetOpenClipboardWindow();

傳回值

如果函式成功,目前已開啟剪貼簿的視窗控制碼;否則 NULL 為 。

CWnd::GetOwner

擷取視窗擁有者的指標。

CWnd* GetOwner() const;

傳回值

CWnd 物件的指標。

備註

如果視窗沒有擁有者,則預設會傳回父視窗物件的指標。 請注意,擁有者與擁有者之間的關係與父子層面在幾個重要方面不同。 例如,具有父系的視窗受限於其父視窗的工作區。 擁有的視窗可以在桌面上的任何位置繪製。

此函式的擁有權概念與 的 GetWindow 擁有權概念不同。

CWnd::GetParent

呼叫此函式以取得子視窗父視窗的指標(如果有的話)。

CWnd* GetParent() const;

傳回值

請參閱 Windows SDK 中的 GetParent 傳回值一節。

備註

GetParent 式會傳回直接父系的指標(如果存在的話)。 相反地,函 GetParentOwner 式會傳回不是子視窗之最直接父視窗或擁有者視窗的指標(沒有 WS_CHILD 樣式)。 如果您在子視窗內有子視窗 GetParent ,並 GetParentOwner 傳回不同的結果。

CWnd::GetParentFrame

呼叫這個成員函式以擷取父框架視窗。

CFrameWnd* GetParentFrame() const;

傳回值

如果成功,則為框架視窗的指標;否則 NULL 為 。

備註

成員函式會搜尋父鏈結,直到 CFrameWnd 找到 (或衍生類別) 物件為止。

CWnd::GetParentOwner

呼叫這個成員函式,以取得子視窗父視窗或擁有者視窗的指標。

CWnd* GetParentOwner() const;

傳回值

CWnd 物件的指標。 CWnd如果物件未附加至控制碼,則會建立並附加暫存 CWnd 物件。 指標可能是暫時的,不應該儲存以供日後使用。

備註

GetParentOwner 會傳回不是子視窗之最直接父視窗或擁有者視窗的指標(沒有 WS_CHILD 樣式)。 目前的擁有者視窗可以使用 來設定 SetOwner 。 根據預設,視窗的父代是其擁有者。

相反地,函 GetParent 式會傳回直接父系的指標,不論其是否為子視窗。 如果您在子視窗內有子視窗 GetParent ,並 GetParentOwner 傳回不同的結果。

CWnd::GetProperty

呼叫這個成員函式,以取得 所 dwDispID 指定的 ActiveX 控制項屬性。

void GetProperty(
    DISPID dwDispID,
    VARTYPE vtProp,
    void* pvProp)const;

參數

dwDispID
識別要擷取的屬性。

vtProp
指定要擷取的屬性類型。 如需可能的值,請參閱 的一 COleDispatchDriver::InvokeHelper 節。

pvProp
將接收屬性值之變數的位址。 其必須符合 vtProp所指定的類型。

備註

GetProperty 透過 pvProp 傳回 值。

注意

這個函式應該只在代表 ActiveX 控制項的物件上 CWnd 呼叫。

如需搭配 ActiveX 控制項容器使用此成員函式的詳細資訊,請參閱 ActiveX 控制項容器:在 ActiveX 控制項容器 中設計 ActiveX 控制項一文

CWnd::GetRenderTarget

取得與此視窗相關聯的呈現目標。

CHwndRenderTarget* GetRenderTarget();

傳回值

轉譯目標或 NULL 的指標。

CWnd::GetSafeHwnd

m_hWnd 回 ,如果指標為 ,則 NULLthisNULL 回 。

HWND GetSafeHwnd() const;

傳回值

傳回視窗的視窗控制碼。 NULL如果 CWnd 未附加至視窗,或與指標搭配使用,則傳回 NULLCWnd

範例

請參閱 的 CWnd::SubclassWindow 範例。

CWnd::GetSafeOwner

呼叫這個成員函式,擷取應該用於對話方塊或其他強制回應視窗的擁有者視窗。

static CWnd* GetSafeOwner(
    CWnd* pParent = NULL,
    HWND* pWndTop = NULL);

參數

pParent
CWnd 視窗的指標。 可以是 NULL

pWndTop
目前位於頂端之視窗的指標。 可以是 NULL

傳回值

指定視窗之安全擁有者的指標。

備註

安全擁有者是 的第一個非子系父視窗 pParent 。 如果 pParentNULL ,則會使用執行緒的主視窗(透過 AfxGetMainWnd 擷取)來尋找擁有者。

注意

架構本身會使用此函式來判斷未指定擁有者之對話方塊和屬性工作表的正確擁有者視窗。

CWnd::GetScrollBarCtrl

呼叫這個成員函式,以取得指定同層級捲軸或分隔視窗的指標。

virtual CScrollBar* GetScrollBarCtrl(int nBar) const;

參數

nBar
指定捲軸的類型。 參數可以採用下列其中一個值:

  • SB_HORZ 擷取水準捲軸的位置。

  • SB_VERT 擷取垂直捲動條的位置。

傳回值

同層級捲軸控制項,如果沒有,則 NULL 為 。

備註

此成員函式不會在建立視窗期間設定 或 WS_VSCROLL 位時 WS_HSCROLL 所建立的捲軸上運作。 此 CWnd 函式的實作只會傳 NULL 回 。 衍生類別,例如 CView ,實作所述的功能。

CWnd::GetScrollBarInfo

擷取所指定之捲軸的相關資訊。

BOOL GetScrollBarInfo(
    LONG idObject,
    PSCROLLBARINFO psbi) const;

參數

idObject
指定功能表物件。 如需可能值的清單,請參閱 GetScrollBarInfo

psbi
SCROLLBARINFO接收資訊之結構的指標。

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 GetScrollBarInfo ,如 Windows SDK 中所述。

CWnd::GetScrollInfo

呼叫這個成員函式,以擷 SCROLLINFO 取結構關於捲軸的資訊。

BOOL GetScrollInfo(
    int nBar,
    LPSCROLLINFO lpScrollInfo,
    UINT nMask = SIF_ALL);

參數

nBar
指定捲軸是視窗非工作區的控制項或一部分。 如果它是非工作區的一部分, nBar 也表示捲軸是水準、垂直或兩者的位置。 它必須是下列其中一項:

  • SB_CTL 擷取捲軸控制項的參數。 資料 m_hWnd 成員必須是捲軸控制項的控制碼。

  • SB_HORZ 擷取視窗標準水準捲軸的參數。

  • SB_VERT 擷取視窗標準垂直捲動條的參數。

lpScrollInfo
結構的指標 SCROLLINFO 。 如需此結構的詳細資訊,請參閱 Windows SDK。

nMask
指定要擷取的捲軸參數。 預設值會指定 、 SIF_POSSIF_TRACKPOSSIF_RANGE 的組合 SIF_PAGE 。 如需值的詳細資訊, nMask 請參閱 SCROLLINFO

傳回值

如果訊息擷取任何值,則傳回為 TRUE 。 否則為 FALSE

備註

GetScrollInfo 可讓應用程式使用 32 位捲動位置。

結構 SCROLLINFO 包含捲軸的相關資訊,包括捲軸的下限和最大捲動位置、頁面大小,以及捲動方塊的位置(拇指)。 SCROLLINFO如需變更結構預設值的詳細資訊,請參閱 Windows SDK 中的結構主題。

指出捲軸位置的 MFC Windows 訊息處理常式 CWnd ::OnHScroll 和 CWnd::OnVScroll 僅提供 16 位的位置資料。 GetScrollInfo 並提供 SetScrollInfo 32 位的捲軸位置資料。 因此,應用程式可以在處理 CWnd::OnHScrollCWnd::OnVScroll 時呼叫 GetScrollInfo ,以取得 32 位捲軸位置資料。

CWnd::GetScrollLimit

呼叫這個成員函式以擷取捲軸的最大捲動位置。

int GetScrollLimit(int nBar);

參數

nBar
指定捲軸的類型。 參數可以採用下列其中一個值:

  • SB_HORZ 擷取水準捲軸的捲動限制。

  • SB_VERT 擷取垂直捲動條的滾動限制。

傳回值

如果成功,指定捲軸的最大位置;否則為 0。

CWnd::GetScrollPos

擷取捲軸捲軸捲動方塊的目前位置。

int GetScrollPos(int nBar) const;

參數

nBar
指定要檢查的捲軸。 參數可以採用下列其中一個值:

  • SB_HORZ 擷取水準捲軸的位置。

  • SB_VERT 擷取垂直捲動條的位置。

傳回值

如果成功,指定捲軸中捲動方塊的目前位置;否則為 0。

備註

目前的位置是相依于目前捲動範圍的相對值。 例如,如果捲動範圍是 50 到 100,而捲動方塊位於列中間,則目前的位置為 75。

CWnd::GetScrollRange

將指定捲軸的目前最小和最大捲軸位置複製到 和 lpMaxPoslpMinPos 指定的位置。

void GetScrollRange(
    int nBar,
    LPINT lpMinPos,
    LPINT lpMaxPos) const;

參數

nBar
指定要檢查的捲軸。 參數可以採用下列其中一個值:

  • SB_HORZ 擷取水準捲軸的位置。

  • SB_VERT 擷取垂直捲動條的位置。

lpMinPos
指向要接收最小位置的整數變數。

lpMaxPos
指向要接收最大位置的整數變數。

備註

如果沒有 CWnd 捲軸,則 GetScrollRange 成員函式會將 0 lpMinPos 複製到 和 lpMaxPos

標準捲軸的預設範圍是 0 到 100。 捲軸控制項的預設範圍是空的(兩個值都是 0)。

CWnd::GetStyle

傳回目前的視窗樣式。

DWORD GetStyle() const;

傳回值

視窗的樣式。 如需 MFC 中使用的視窗樣式詳細資訊,請參閱 視窗樣式

CWnd::GetSystemMenu

可讓應用程式存取控制功能表以進行複製和修改。

CMenu* GetSystemMenu(BOOL bRevert) const;

參數

bRevert
指定要採取的動作。 如果 bRevertFALSEGetSystemMenu 則會傳回目前使用中之 [控制項] 功能表複本的控制碼。 此複本一開始與 [控制項] 功能表相同,但可以修改。 如果 bRevertTRUEGetSystemMenu 則會將 [控制項] 功能表重設為預設狀態。 先前可能已修改的 [控制項] 功能表,如果有的話,就會終結。 在此案例中,傳回值未定義。

傳回值

如果 bRevertFALSE ,則識別 [控制項] 功能表的複本。 如果 bRevertTRUE ,則傳回值未定義。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

任何不用來 GetSystemMenu 製作自己的 [控制項] 功能表複本的視窗,都會收到標準 [控制項] 功能表。

成員函式傳回的 GetSystemMenu 指標可以與 、 CMenu::InsertMenuCMenu::ModifyMenu 函式搭配 CMenu::AppendMenu 使用,以變更 [控制項] 功能表。

[控制項] 功能表一開始包含以各種識別碼值識別的專案,例如 SC_CLOSESC_MOVESC_SIZE 。 [控制項] 功能表上的專案會產生 WM_SYSCOMMAND 訊息。 所有預先定義的 Control-menu 專案都有大於0xF000的識別碼。 如果應用程式將專案新增至 [控制項] 功能表,它應該使用小於 F000 的識別碼。

Windows 可能會自動讓專案無法在標準 [控制項] 功能表上使用。 CWnd 可以藉由回應任何功能表顯示之前傳送的 WM_INITMENU 訊息,來執行自己的選取或無法使用。

範例

// The following code fragment is taken from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu *pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
   CString strAboutMenu;
   strAboutMenu.LoadString(IDS_ABOUT);
   if (!strAboutMenu.IsEmpty())
   {
      pSysMenu->AppendMenu(MF_SEPARATOR);
      pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
   }
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);  // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

CWnd::GetTitleBarInfo

擷取指定之標題列的相關資訊。

BOOL GetTitleBarInfo(PTITLEBARINFO pti) const;

參數

pti
TITLEBARINFO接收資訊之結構的指標。

備註

此成員函式會模擬 函式的功能 GetTitleBarInfo ,如 Windows SDK 中所述。

CWnd::GetTopLevelFrame

呼叫這個成員函式,以擷取視窗的最上層框架視窗,如果有的話。

CFrameWnd* GetTopLevelFrame() const;

傳回值

識別視窗的最上層框架視窗。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

如果沒有 CWnd 附加的視窗,或其最上層父系不是 CFrameWnd 衍生的物件,則此函式會傳 NULL 回 。

CWnd::GetTopLevelOwner

呼叫此成員函式以擷取最上層視窗。

CWnd* GetTopLevelOwner() const;

傳回值

識別最上層視窗。 傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

最上層視窗是桌面子視窗。 如果沒有 CWnd 附加的視窗,則此函式會傳 NULL 回 。

CWnd::GetTopLevelParent

呼叫這個成員函式以擷取視窗的最上層父系。

CWnd* GetTopLevelParent() const;

傳回值

識別視窗的最上層父視窗。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

GetTopLevelParentGetTopLevelFrameGetTopLevelOwner 類似;不過,它會忽略設定為目前擁有者視窗的值。

CWnd::GetTopWindow

搜尋屬於 CWnd 的最上層子視窗。

CWnd* GetTopWindow() const;

傳回值

識別子視窗連結清單中的最上層子視窗 CWnd 。 如果沒有子視窗存在,則值為 NULL

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

如果沒有 CWnd 子系,則此函式會傳 NULL 回 。

CWnd::GetUpdateRect

擷取完全圍住 更新區域的最小矩形座標。

BOOL GetUpdateRect(
    LPRECT lpRect,
    BOOL bErase = FALSE);

參數

lpRect
指向 CRect 物件或結構,這個物件或 RECT 結構 會接收包含更新區域的更新用戶端座標。

將此參數設定為 NULL ,以判斷更新區域是否存在於 內 CWnd 。 如果 lpRectNULLGetUpdateRect 如果更新區域存在,則成員函式會傳回非零,如果更新區域不存在,則傳回 0。 這提供一種方式來判斷訊息是否 WM_PAINT 由無效區域所產生。 請勿在 Windows 3.0 版和更早版本中將此參數設定為 NULL

bErase
指定是否要清除更新區域中的背景。

傳回值

指定更新區域的狀態。 如果更新區域不是空的,則此值為非零值;否則為 0。

lpRect如果參數設定為 NULL ,則如果更新區域存在,則傳回值為非零值,否則為 0。

備註

如果使用 CWnd 樣式建立 CS_OWNDC ,而且對應模式不是 MM_TEXTGetUpdateRect 則成員函式會以邏輯座標提供矩形。 否則, GetUpdateRect 在用戶端座標中提供矩形。 如果沒有更新區域, GetUpdateRect 請將矩形設定為空白(將所有座標設為 0)。

參數 bErase 會指定是否 GetUpdateRect 應該清除更新區域的背景。 如果 bEraseTRUE 且更新區域不是空的,則會清除背景。 若要清除背景, GetUpdateRect 請傳送 WM_ERASEBKGND 訊息。

成員函式所擷取的 BeginPaint 更新矩形與成員函式所擷取的 GetUpdateRect 更新矩形相同。

成員 BeginPaint 函式會自動驗證更新區域,因此呼叫之後立即進行的任何呼叫 GetUpdateRect ,以 BeginPaint 擷取空的更新區域。

CWnd::GetUpdateRgn

將更新區域擷取至 所 pRgn 識別的區域。

int GetUpdateRgn(
    CRgn* pRgn,
    BOOL bErase = FALSE);

參數

pRgn
識別更新區域。

bErase
指定是否要清除背景,並繪製子視窗的非工作區。 如果值為 FALSE ,則不會完成繪圖。

傳回值

指定短整數旗標,指出產生的區欄位型別。 此值可以接受下列任一項:

  • SIMPLEREGION 區域沒有重迭的框線。

  • COMPLEXREGION 區域有重迭的框線。

  • NULLREGION 區域是空的。

  • ERROR 未建立任何區域。

備註

此區域的座標相對於左上角(用戶端座標)。

成員 BeginPaint 函式會自動驗證更新區域,因此呼叫之後立即進行的任何呼叫 GetUpdateRgn ,以 BeginPaint 擷取空的更新區域。

CWnd::GetWindow

傳回要求之視窗的指標,如果沒有 NULL ,則傳回 。

CWnd* GetWindow(UINT nCmd) const;

參數

*nCmd*
指定 與傳回視窗之間的 CWnd 關聯性。 它可能需要下列其中一個值:

  • GW_CHILD 識別第一個 CWnd 子視窗。

  • GW_HWNDFIRST 如果 CWnd 是子視窗,則傳回第一個同層級視窗。 否則,它會傳回清單中的第一個最上層視窗。

  • GW_HWNDLAST 如果 CWnd 為子視窗,則傳回最後一個同層級視窗。 否則,它會傳回清單中的最後一個最上層視窗。

  • GW_HWNDNEXT 傳回視窗管理員清單上的下一個視窗。

  • GW_HWNDPREV 傳回視窗管理員清單上的上一個視窗。

  • GW_OWNER 識別 CWnd 擁有者。

傳回值

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

CWnd::GetWindowContextHelpId

呼叫這個成員函式,以擷取與視窗相關聯的說明內容識別碼。

DWORD GetWindowContextHelpId() const;

傳回值

說明內容識別碼。 如果視窗沒有,則傳回 0。

CWnd::GetWindowedChildCount

呼叫這個成員函式以擷取相關聯的子視窗數目。

long GetWindowedChildCount();

傳回值

CWnd 物件相關聯的子視窗數目。

CWnd::GetWindowDC

擷取整個視窗的顯示內容,包括標題列、功能表和捲軸。

CDC* GetWindowDC();

傳回值

如果函式成功,則識別指定視窗的顯示內容;否則 NULL 為 。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。 ReleaseDC 每次成功呼叫 GetWindowDC 時,都應該呼叫一次。

備註

視窗顯示內容允許在 中的任何 CWnd 位置繪製,因為內容的來源是 的左上角 CWnd ,而不是工作區。

每次擷取內容時,預設屬性都會指派給顯示內容。 先前的屬性會遺失。

GetWindowDC 是要用於非工作區區域內 CWnd 的特殊繪製效果。 不建議在任何視窗的非工作區小畫家。

GetSystemMetricsWindows 函式可用來擷取非工作區各部分的維度,例如標題列、功能表和捲軸。

繪製完成之後, ReleaseDC 必須呼叫成員函式來釋放顯示內容。 由於可以同時開啟的裝置內容數目限制,無法釋出顯示內容將嚴重影響應用程式所要求的繪製。

CWnd::GetWindowInfo

擷取視窗的相關資訊。

BOOL GetWindowInfo(PWINDOWINFO pwi) const;

參數

pwi
結構的指標 WINDOWINFO

備註

此成員函式會模擬 函式的功能 GetWindowInfo ,如 Windows SDK 中所述。

CWnd::GetWindowlessChildCount

擷取相關聯的無視窗子視窗數目。

long GetWindowlessChildCount();

傳回值

與 物件相關聯的 CWnd 無視窗子視窗數目。

CWnd::GetWindowPlacement

擷取視窗的顯示狀態和一般 (還原)、最小化和最大化位置。

BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;

參數

lpwndpl
指向 WINDOWPLACEMENT 接收顯示狀態和位置資訊的結構。

傳回值

如果函式成功則為非零,否則為 0。

備註

這個 flags 函式所擷取之 WINDOWPLACEMENT 結構的成員一律為 0。 如果 CWnd 最大化,則 showCmd 的成員 WINDOWPLACEMENTSW_SHOWMAXIMIZED 。 如果視窗最小化,則為 SW_SHOWMINIMIZED 。 否則為 SW_SHOWNORMAL

CWnd::GetWindowRect

將 物件周框 CWnd 的維度複製到 所 lpRect 指向的結構。

void GetWindowRect(LPRECT lpRect) const;

參數

lpRect
CRect指向物件或 RECT 結構,這個結構 將接收左上角和右下角的螢幕座標。

備註

維度會以相對於顯示畫面左上角的螢幕座標來指定。 包含標題、框線和捲軸的維度。

CWnd::GetWindowRgn

呼叫這個成員函式以取得視窗的視窗區域。

int GetWindowRgn(HRGN hRgn)const;

參數

hRgn
視窗區域的控制碼。

傳回值

傳回值會指定函式取得的區欄位型別。 它可能是下列其中一個值:

  • NULLREGION 區域是空的。

  • SIMPLEREGION 區域是單一矩形。

  • COMPLEXREGION 區域是一個以上的矩形。

  • ERROR 發生錯誤;區域不會受到影響。

備註

視窗區域會決定作業系統允許繪製之視窗內的區域。 作業系統不會顯示位於視窗區域外部之視窗的任何部分。

視窗視窗區域的座標相對於視窗左上角,而不是視窗的工作區。

若要設定視窗的視窗區域,請呼叫 CWnd::SetWindowRgn

CWnd::GetWindowText

CWnd 標題標題 (如果有的話)複製到 所 lpszStringBuf 指向的緩衝區,或複製到目的地字串 rString

int GetWindowText(
    LPTSTR lpszStringBuf,
    int nMaxCount) const;

void GetWindowText(
    CString& rString) const;

參數

lpszStringBuf
指向要接收視窗標題複製字串的緩衝區。

nMaxCount
指定要複製到緩衝區的最大字元數,包括終止的 Null 字元。 如果字串的長度超過 中指定的 nMaxCount 字元數,則會截斷字串。

rString
物件 CString ,用來接收視窗標題的複製字串。

傳回值

指定複製字串的長度,以字元為單位,不包括終止的 Null 字元。 如果沒有標題,則為 0;如果 CWnd 標題是空的,則為 0。

備註

CWnd如果物件是控制項, GetWindowText 成員函式會複製控制項內的文字,而不是複製標題。

這個成員函式會使 WM_GETTEXT 訊息傳送至 CWnd 物件。

範例

請參閱 的 CWnd::SetWindowText 範例。

CWnd::GetWindowTextLength

傳回物件標題標題的 CWnd 長度。

int GetWindowTextLength() const;

傳回值

指定字元的文字長度,不包括任何 Null 終止字元。 如果不存在這類文字,則值為 0。

備註

如果 CWnd 是 控制項, GetWindowTextLength 成員函式會傳回控制項內的文字長度,而不是標題。

這個成員函式會使 WM_GETTEXTLENGTH 訊息傳送至 CWnd 物件。

範例

請參閱 的 CWnd::SetWindowText 範例。

CWnd::HideCaret

藉由從顯示畫面移除插入號來隱藏該插入號。

void HideCaret();

備註

雖然插入號已不再顯示,但可以使用成員函式再次 ShowCaret 顯示插入號。 隱藏插入號不會終結其目前圖形。

隱藏是累計的。 如果 HideCaret 已在一個資料列中呼叫五次, ShowCaret 則必須在顯示插入號之前呼叫成員函式五次。

CWnd::HiliteMenuItem

醒目提示或移除最上層功能表項目的醒目提示或移除醒目提示。

BOOL HiliteMenuItem(
    CMenu* pMenu,
    UINT nIDHiliteItem,
    UINT nHilite);

參數

pMenu
識別包含要反白顯示之專案的最上層功能表。

nIDHiliteItem
根據 參數的值 nHilite ,指定要反白顯示的功能表項目。

nHilite
指定功能表項目是反白顯示還是移除醒目提示。 它可以是 或 與 MF_BYCOMMANDMF_UNHILITEMF_BYPOSITION 的組合 MF_HILITE 。 這些值可以使用位 OR 運算子來結合。 這些值具有以下意義:

  • MF_BYCOMMANDnIDHiliteItem 譯為功能表項目識別碼(預設解譯)。

  • MF_BYPOSITIONnIDHiliteItem 譯為功能表項目以零起始的位移。

  • MF_HILITE 醒目提示專案。 如果未指定此值,則會從專案中移除醒目提示。

  • MF_UNHILITE 從專案移除醒目提示。

傳回值

指定功能表項目是否已反白顯示。 如果專案已反白顯示,則為非零;否則為 0。

備註

MF_HILITEMF_UNHILITE 旗標只能與這個成員函式搭配使用;不能與成員函式搭配 CMenu::ModifyMenu 使用。

CWnd::HtmlHelp

呼叫此成員函式以叫用 HTMLHelp 應用程式。

virtual void HtmlHelp(
    DWORD_PTR dwData,
    UINT nCmd = 0x000F);

參數

dwData
指定其他資料。 所使用的值取決於 參數的值 nCmd

nCmd
指定要求的說明類型。 如需可能值的清單及其影響 dwData 參數的方式,請參閱 uCommand Windows SDK 中 HTML 說明 API 參考中所述的參數。

備註

如需相關資訊,請參閱 CWinApp::HtmlHelp

CWnd::InitDynamicLayout

由架構呼叫以初始化視窗的動態配置。

void InitDynamicLayout();

備註

請勿直接呼叫這個方法。

CWnd::Invalidate

使 的整個工作區失效 CWnd

void Invalidate(BOOL bErase = TRUE);

參數

bErase
指定更新區域內的背景是否要清除。

備註

下一 WM_PAINT 則訊息發生時,工作區會標示為繪製。 區域也可以在 或 ValidateRgn 成員函式發生 ValidateRect 訊息之前 WM_PAINT 進行驗證。

參數 bErase 會指定在處理更新區域時,是否要清除更新區域內的背景。 如果 bEraseTRUE ,則會在呼叫成員函式時 BeginPaint 清除背景;如果 bEraseFALSE ,背景會保持不變。 如果 bEraseTRUE 更新區域的任何部分,則會清除整個區域中的背景,而不只是在指定的部分。

每當 CWnd 更新區域不是空的,且該視窗的應用程式佇列中沒有其他訊息時,Windows 就會傳送 WM_PAINT 訊息。

範例

請參閱 的 CWnd::UpdateWindow 範例。

CWnd::InvalidateRect

將該矩形新增至 CWnd 更新區域,使指定矩形內的工作區失效。

void InvalidateRect(
    LPCRECT lpRect,
    BOOL bErase = TRUE);

參數

lpRect
指向 CRect 物件或 RECT 結構 ,其中包含要加入至更新區域的矩形(在用戶端座標中)。 如果 lpRectNULL ,則會將整個工作區新增至區域。

bErase
指定更新區域內的背景是否要清除。

備註

不正確矩形以及更新區域中的所有其他區域,會在傳送下一 WM_PAINT 則訊息時標示為繪製。 不正確區域會在更新區域中累積,直到下一個 WM_PAINT 呼叫發生時處理區域,或直到 或 ValidateRgn 成員函式驗證 ValidateRect 區域為止。

參數 bErase 會指定在處理更新區域時,是否要清除更新區域內的背景。 如果 bEraseTRUE ,則會在呼叫成員函式時 BeginPaint 清除背景;如果 bEraseFALSE ,背景會保持不變。 如果 bEraseTRUE 更新區域的任何部分,則會清除整個區域中的背景,而不只是在指定的部分。

每當 CWnd 更新區域不是空的,且該視窗的應用程式佇列中沒有其他訊息時,Windows 就會傳送 WM_PAINT 訊息。

CWnd::InvalidateRgn

藉由將工作區新增至 的目前更新區域,使指定區域內的 CWnd 工作區失效。

void InvalidateRgn(
    CRgn* pRgn,
    BOOL bErase = TRUE);

參數

pRgn
物件的指標 CRgn ,識別要加入至更新區域的區域。 區域假設有用戶端座標。 如果此參數為 NULL ,則會將整個工作區新增至更新區域。

bErase
指定更新區域內的背景是否要清除。

備註

不正確區域以及更新區域中的所有其他區域,會在下次傳送訊息時 WM_PAINT 標示為繪製。 不正確區域會累積在更新區域中,直到下一次 WM_PAINT 傳送訊息時處理區域,或直到 或 ValidateRgn 成員函式驗證 ValidateRect 區域為止。

參數 bErase 會指定在處理更新區域時,是否要清除更新區域內的背景。 如果 bEraseTRUE ,則會在呼叫成員函式時 BeginPaint 清除背景;如果 bEraseFALSE ,背景會保持不變。 如果 bEraseTRUE 更新區域的任何部分,則會清除整個區域中的背景,而不只是在指定的部分。

每當 CWnd 更新區域不是空的,且該視窗的應用程式佇列中沒有其他訊息時,Windows 就會傳送 WM_PAINT 訊息。

指定的區域之前必須由其中一個區域函式建立。

CWnd::InvokeHelper

呼叫這個成員函式,以在 所 wFlags 指定的內容中叫用 所 dwDispID 指定的 ActiveX Control 方法或屬性。

void AFX_CDECL InvokeHelper(
    DISPID dwDispID,
    WORD wFlags,
    VARTYPE vtRet,
    void* pvRet,
    const BYTE* pbParamInfo,
    ... );

參數

dwDispID
指定所要叫用的屬性或方法。

wFlags
旗標,描述對 IDispatch::Invoke 的呼叫內容。

vtRet
指定傳回值的類型。 如需可能的值,請參閱 的一 COleDispatchDriver::InvokeHelper 節。

pvRet
將接收屬性值或傳回值的變數位址。 其必須符合 vtRet所指定的類型。

pbParamInfo
指定以 null終止,並尾隨在 pbParamInfo之後之參數類型的位元組的字串指標。 如需可能的值,請參閱 的一 COleDispatchDriver::InvokeHelper 節。

...
變數 參數清單,在 中指定的 pbParamInfo 類型。

備註

pbParamInfo 參數會指定傳遞給方法或屬性的參數類型。 引數的變數清單會在語法宣告中表示 ...

此函式會將參數 VARIANTARG 轉換成值,然後在 ActiveX 控制項上叫用 IDispatch::Invoke 方法。 若呼叫 IDispatch::Invoke 失敗,此函式會擲回例外狀況。 如果 傳回的 SCODE (狀態碼) 為 DISP_E_EXCEPTION ,則此函式會擲回 COleException 物件,否則會擲回 COleDispatchExceptionIDispatch::Invoke

注意

這個函式應該只在代表 ActiveX 控制項的物件上 CWnd 呼叫。

如需搭配 ActiveX 控制項容器使用此成員函式的詳細資訊,請參閱 ActiveX 控制項容器:在 ActiveX 控制項容器 中設計 ActiveX 控制項一文

CWnd::IsChild

指出 所 pWnd 指定的視窗是子視窗或其他 的 CWnd 直接子代。

BOOL IsChild(const CWnd* pWnd) const;

參數

pWnd
識別要測試的視窗。

傳回值

指定函式的結果。 如果 所 pWnd 識別的視窗是 的 CWnd 子視窗,則值為非零,否則為 0。

備註

如果 CWnd 物件位於從原始快顯視窗到子視窗的父視窗鏈結中,則子視窗是 的直接子 CWnd 代。

CWnd::IsD2DSupportEnabled

判斷是否啟用 D2D 支援。

BOOL IsD2DSupportEnabled();

傳回值

TRUE 如果已啟用此功能,則為 ;否則 FALSE 為 。

CWnd::IsDialogMessage

呼叫這個成員函式,以判斷指定的訊息是否適用于無強制回應對話方塊;如果是,則此函式會處理訊息。

BOOL IsDialogMessage(LPMSG lpMsg);

參數

lpMsg
指向 MSG 包含要檢查之訊息的結構。

傳回值

指定成員函式是否已處理指定的訊息。 如果訊息已處理,則為非零;否則為 0。 如果傳回為 0,請呼叫 CWnd::PreTranslateMessage 基類的成員函式來處理訊息。 在成員函式的覆寫中 CWnd::PreTranslateMessage ,程式碼看起來像這樣:

BOOL CAboutDlg::PreTranslateMessage(MSG *pMsg)
{
   if (IsDialogMessage(pMsg))
      return TRUE;
   else
      return CDialog::PreTranslateMessage(pMsg);
}

備註

當函 IsDialogMessage 式處理訊息時,它會檢查鍵盤訊息,並將其轉換成對應對話方塊的選取命令。 例如,TAB 鍵會選取下一個控制項或控制項群組,而向下鍵會選取群組中的下一個控制項。

您不得將 所 IsDialogMessage 處理的訊息傳遞至 TranslateMessageDispatchMessage Windows 函式,因為它已經處理過。

CWnd::IsDlgButtonChecked

判斷按鈕控制項旁邊是否有核取記號。

UINT IsDlgButtonChecked(int nIDButton) const;

參數

nIDButton
指定按鈕控制項的整數識別碼。

傳回值

如果已檢查指定的控制項,則為非零,如果未核取,則為 0。 只能核取選項按鈕和核取方塊。 針對三個狀態按鈕,如果按鈕不確定,則傳回值可以是 2。 這個成員函式會針對按鈕傳回 0。

備註

如果按鈕是三狀態控制項,則成員函式會判斷它是否呈現暗灰色、已核取或兩者都沒有。

CWnd::IsDynamicLayoutEnabled

決定是否在這個視窗上啟用動態配置。 如果啟用動態配置時,則使用者可在調整父視窗大小時變更子視窗的位置與大小。

BOOL IsDynamicLayoutEnabled() const;

傳回值

TRUE 如果已啟用動態配置,則為 ;否則 FALSE 為 。

備註

CWnd::IsIconic

指定是否 CWnd 最小化 (圖示)。

BOOL IsIconic() const;

傳回值

如果 CWnd 最小化則為非零,否則為 0。

範例

void CAboutDlg::OnPaint()
{
   // This code, normally emitted by the Application Wizard for a dialog-
   // based project for the dialog's WM_PAINT handler, runs only if the
   // window is iconic. The window erases the icon's area, then
   // paints the icon referenced by m_hIcon.
   if (IsIconic())
   {
      CPaintDC dc(this); // device context for painting

      SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);

      // Center icon in client rectangle
      int cxIcon = GetSystemMetrics(SM_CXICON);
      int cyIcon = GetSystemMetrics(SM_CYICON);
      CRect rect;
      GetClientRect(&rect);
      int x = (rect.Width() - cxIcon + 1) / 2;
      int y = (rect.Height() - cyIcon + 1) / 2;

      // Draw the icon
      dc.DrawIcon(x, y, m_hIcon);
   }
   else
   {
      CDialog::OnPaint();
   }
}

CWnd::IsTouchWindow

指定 CWnd 是否有觸控支援。

BOOL IsTouchWindow() const;

傳回值

TRUE 如果 CWnd 具有觸控支援,則為 ,否則 FALSE 為 。

備註

CWnd::IsWindowEnabled

指定是否 CWnd 啟用滑鼠和鍵盤輸入。

BOOL IsWindowEnabled() const;

傳回值

如果 CWnd 已啟用,則為非零;否則為 0。

範例

//change the background color of an edit control on the dialog
HBRUSH CMyDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

   if (pWnd->GetDlgCtrlID() == IDC_MYEDIT)
   {
      if (pWnd->IsWindowEnabled())
      {
         // Red brush for the background...
         pDC->SetBkColor(RGB(255, 0, 0));
         // m_pRedBrush is the CBrush object initialized with a red brush
         // using CreateSolidBrush
         return (HBRUSH)m_RedBrush.GetSafeHandle();
      }
      else
      {
         // Blue brush for the background...
         pDC->SetBkColor(RGB(0, 0, 255));
         // m_pBlueBrush is the CBrush object initialized with a blue
         // brush using CreateSolidBrush
         return (HBRUSH)m_BlueBrush.GetSafeHandle();
      }
   }

   return hbr;
}

CWnd::IsWindowVisible

決定指定視窗的可見度狀態。

BOOL IsWindowVisible() const;

傳回值

如果 CWnd 為可見, WS_VISIBLE 則為非零值(已設定樣式位,且父視窗為可見)。 因為傳回值反映樣式位的狀態 WS_VISIBLE ,即使其他視窗完全遮蔽,傳回值也可能是非零 CWnd 值。

備註

視窗擁有樣式位所表示的 WS_VISIBLE 可見度狀態。 當這個樣式位是以成員函式的呼叫 ShowWindow 來設定時,只要視窗已設定樣式位,就會顯示視窗,而視窗的後續繪圖就會顯示。

如果視窗是由其他視窗所覆蓋,或是由其父視窗裁剪,則不會顯示具有 WS_VISIBLE 樣式的視窗的任何繪圖。

範例

// This example uses the CWnd::IsWindowVisible() function to
// determine if a dialog box is visible. If it is not, it calls
// CWnd::ShowWindow with the SW_SHOWNORMAL command.
void CMainFrame::DisplayModeless()
{
   if(!m_Modeless.IsWindowVisible())
   {
      m_Modeless.ShowWindow(SW_SHOWNORMAL);
   }
}

// This example uses the CWnd::IsWindowVisible() function to
// determine if a dialog box is visible. If it is, it calls
// CWnd::ShowWindow with the SW_HIDE command.
void CMainFrame::HideModeless()
{
   if(m_Modeless.IsWindowVisible())
   {
      m_Modeless.ShowWindow(SW_HIDE);
   }
}

CWnd::IsZoomed

判斷是否已 CWnd 最大化。

BOOL IsZoomed() const;

傳回值

如果 CWnd 最大化,則為非零;否則為 0。

CWnd::KillTimer

從先前呼叫 所識別 nIDEventSetTimer 計時器事件終止。

BOOL KillTimer(UINT_PTR nIDEvent);

參數

nIDEvent
傳遞給 SetTimer 的計時器事件值。

傳回值

指定函式的結果。 如果事件已終止,此值為非零值。 如果 KillTimer 成員函式找不到指定的計時器事件,則為 0。

備註

與計時器相關聯的擱 WM_TIMER 置訊息不會從訊息佇列中移除。

範例

請參閱 的 CWnd::SetTimer 範例。

CWnd::LoadDynamicLayoutResource

由架構呼叫以從資源檔載入動態配置資訊。

BOOL LoadDynamicLayoutResource(LPCTSTR lpszResourceName);

參數

lpszResourceName
包含此視窗所需之動態配置資訊的資源名稱。

傳回值

如果函式成功,則為非零。 如果發生失敗,則為 0。

備註

請勿直接呼叫這個方法。

CWnd::LockWindowUpdate

停用指定視窗中的繪圖。

BOOL LockWindowUpdate();

傳回值

如果函式成功,則為非零。 如果發生失敗,或函式已用來鎖定另一個視窗, LockWindowUpdate 則為 0。

備註

無法移動鎖定的視窗。 一次只能鎖定一個視窗。 若要解除鎖定使用 LockWindowUpdate 鎖定的視窗,請呼叫 UnlockWindowUpdate

如果具有鎖定視窗的應用程式(或任何鎖定的子視窗)呼叫 GetDCGetDCExBeginPaint Windows 函式,則呼叫的函式會傳回其可見區域空白的裝置內容。 直到應用程式藉由呼叫 UnlockWindowUpdate 成員函式來解除鎖定視窗為止。

當視窗更新鎖定時,系統會追蹤與鎖定視窗相關聯的裝置內容之任何繪圖作業的周框矩形。 重新啟用繪圖時,此周框會在鎖定的視窗中及其子視窗失效,以強制最終 WM_PAINT 訊息更新畫面。 如果視窗更新鎖定時未發生繪圖,則不會有任何區域失效。

成員 LockWindowUpdate 函式不會讓指定的視窗不可見,也不會清除 WS_VISIBLE 樣式位。

CWnd::m_hWnd

附加至這個 CWnd 之 Windows 視窗的控制碼。

HWND m_hWnd;

備註

資料 m_hWnd 成員是 類型的 HWND 公用變數。

CWnd::MapWindowPoints

將一組點從 CWnd 的座標空間轉換 (對應) 至另一個視窗的座標空間。

void MapWindowPoints(
    CWnd* pwndTo,
    LPRECT lpRect) const;

void MapWindowPoints(
    CWnd* pwndTo,
    LPPOINT lpPoint,
    UINT nCount) const;

參數

pwndTo
識別要轉換點的視窗。 如果此參數為 NULL ,則會將點轉換成螢幕座標。

lpRect
指定要轉換其點的矩形。 此函式的第一個版本僅適用于 Windows 3.1 和更新版本。

lpPoint
結構的 陣列 POINT 指標,其中包含要轉換的一組點。

nCount
指定 所指向 lpPoint 之陣列中的結構數目 POINT

CWnd::MessageBox

建立並顯示一個視窗,其中包含應用程式提供的訊息和標題,再加上訊息方塊樣式 清單中描述 的預先定義圖示和按鈕的組合。

int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = NULL,
    UINT nType = MB_OK);

參數

lpszText
CString指向包含要顯示之訊息的物件或以 Null 結束的字串。

lpszCaption
CString指向要用於訊息方塊標題的物件或以 Null 結束的字串。 如果 lpszCaptionNULL ,則會使用預設標題 「錯誤」。

nType
指定訊息方塊的內容和行為。

傳回值

此方法會 MessageBox 利用 Windows SDK 中所定義的函式。 這個方法會傳回呼叫此函式的結果。

備註

使用全域函式,而不是此成員函 AfxMessageBox 式,在您的應用程式中實作訊息方塊。

下列顯示可在訊息方塊中使用的各種系統圖示:

圖示 Macro
Stop or X icon, consisting of a red circle with a white x in the middle. MB_ICONHANDMB_ICONSTOPMB_ICONERROR
Help or question mark icon, consisting of a thought bubble icon with a question mark in it. MB_ICONQUESTION
Important or exclamation point icon, consisting of a yellow triangle with a black exclamation point in it. MB_ICONEXCLAMATION和MB_ICONWARNING
Information or letter I icon, consiting of a thought bubble with a lowercase letter i in it. MB_ICONASTERISK和MB_ICONINFORMATION

範例

void CMainFrame::OnDisplayErrorMessage()
{
   // This displays a message box with the title "Error"
   // and the message "Help, Something went wrong."
   // The error icon is displayed in the message box, along with
   // an OK button.
   MessageBox(_T("Help, Something went wrong."), _T("Error"),
              MB_ICONERROR | MB_OK);
}

CWnd::ModifyStyle

呼叫這個成員函式以修改視窗的樣式。

BOOL ModifyStyle(
    DWORD dwRemove,
    DWORD dwAdd,
    UINT nFlags = 0);

參數

dwRemove
指定要在樣式修改期間移除的視窗樣式。

dwAdd
指定要在樣式修改期間新增的視窗樣式。

nFlags
要傳遞至 SetWindowPos 的旗標,如果 SetWindowPos 不應該呼叫,則為零。 預設值為 0。 如需預設旗標的清單,請參閱一節。

傳回值

如果已成功修改樣式,則為非零;否則為 0。

備註

要加入或移除的樣式可以使用位 OR ( | ) 運算子來結合。 如需可用視窗樣式的相關資訊,請參閱 Windows SDK 中的視窗樣式 主題 CreateWindow 和 。

如果 nFlags 為非零值, ModifyStyle 請呼叫 Windows API 函 SetWindowPos 式,並結合 nFlags 下列四個預設旗標來重新繪製視窗:

  • SWP_NOSIZE 保留目前的大小。

  • SWP_NOMOVE 保留目前的位置。

  • SWP_NOZORDER 保留目前的 Z 順序。

  • SWP_NOACTIVATE 不會啟動視窗。

若要修改視窗的延伸樣式,請參閱 ModifyStyleEx

注意

對於某些控制項中的某些樣式( ES_READONLY 例如,編輯控制項中的樣式), ModifyStyle 可能無法正確變更樣式,因為控制項可能需要執行特殊的內部處理。 在這些情況下,將會有對應的訊息來變更樣式( EM_SETREADONLY 在所述的範例中)。

範例

// This example adds the WS_CLIPCHILDREN style to the window.
// No Styles are removed from the window.
void CMyView::OnInitialUpdate()
{
   CView::OnInitialUpdate();
   ModifyStyle(0, WS_CLIPCHILDREN);
}

CWnd::ModifyStyleEx

呼叫這個成員函式以修改視窗的延伸樣式。

BOOL ModifyStyleEx(
    DWORD dwRemove,
    DWORD dwAdd,
    UINT nFlags = 0);

參數

dwRemove
指定要在樣式修改期間移除的延伸樣式。

dwAdd
指定要在樣式修改期間加入的擴充樣式。

nFlags
要傳遞至 SetWindowPos 的旗標,如果 SetWindowPos 不應該呼叫,則為零。 預設值為 0。 如需預設旗標的清單,請參閱一節。

傳回值

如果已成功修改樣式,則為非零;否則為 0。

備註

要加入或移除的樣式可以使用位 OR ( | ) 運算子來結合。 如需可用擴充樣式的詳細資訊,請參閱本書和 CreateWindowEx Windows SDK 中的擴充視窗樣式 主題

如果 nFlags 為非零值, ModifyStyleEx 請呼叫 Windows API 函 SetWindowPos 式,並結合 nFlags 下列四個預設旗標來重新繪製視窗:

  • SWP_NOSIZE 保留目前的大小。

  • SWP_NOMOVE 保留目前的位置。

  • SWP_NOZORDER 保留目前的 Z 順序。

  • SWP_NOACTIVATE 不會啟動視窗。

若要使用一般視窗樣式修改視窗,請參閱 ModifyStyle

範例

// This example would make the dialog box transparent by
// changing the dialog window's extended styles.
int CAboutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   if (CDialog::OnCreate(lpCreateStruct) == -1)
      return -1;

   ModifyStyleEx(0, WS_EX_TRANSPARENT);   
   
   return 0;
}

CWnd::MoveWindow

變更位置和維度。

void MoveWindow(
    int x,
    int y,
    int nWidth,
    int nHeight,
    BOOL bRepaint = TRUE);

void MoveWindow(
    LPCRECT lpRect,
    BOOL bRepaint = TRUE);

參數

x
指定 左側 CWnd 的新位置。

y
指定 頂端 CWnd 的新位置。

nWidth
指定 的新寬度 CWnd

nHeight
指定 的新高度 CWnd

bRepaint
指定是否 CWnd 要重新繪製。 如果 TRUE 為 , CWnd 則會 OnPaint 像往常一 WM_PAINT 樣在其訊息處理常式中接收訊息。 如果此參數為 FALSE ,則不會重新繪製任何種類的 。 這適用于工作區、非工作區區域(包括標題和捲軸),以及因移動而發現 CWnd 父視窗的任何部分。 當此參數為 FALSE 時,應用程式必須明確失效或重新繪製任何必須重新繪製的 CWnd 和 父視窗部分。

lpRect
指定 CRect 新大小和位置的物件或 RECT 結構

備註

對於最上層 CWnd 物件, xy 參數會相對於畫面左上角。 對於子 CWnd 物件,它們相對於父視窗工作區的左上角。

函式 MoveWindow 會傳送 WM_GETMINMAXINFO 訊息。 處理此訊息可讓您 CWnd 修改最大和最小可能視窗的預設值。 如果成員函式的參數 MoveWindow 超過這些值,則可以將值取代為處理常式中的 WM_GETMINMAXINFO 最小值或最大值。

範例

請參閱 的 CWnd::ClientToScreen 範例。

CWnd::NotifyWinEvent

表示發生預先定義之事件的系統。 如果任何用戶端應用程式已註冊事件的攔截函式,系統就會呼叫用戶端的攔截函式。

void NotifyWinEvent(
    DWORD event,
    LONG idObjectType,
    LONG idObject);

參數

event
指定發生的事件。 此值必須是其中 一個事件常數

idObjectType
識別產生事件的物件種類。 此值是其中一個預先定義的 物件識別碼 或自訂物件識別碼值。

idObject
識別事件是由 物件或 物件的子專案所產生。 如果此值為 CHILDID_SELF ,則事件是由 物件本身所產生。 如果沒有,這個值就是產生事件之專案的子識別碼。

備註

此成員函式會模擬 函式的功能 NotifyWinEvent ,如 Windows SDK 中所述。

CWnd::OnActivate

架構會在物件啟動或停用時 CWnd 呼叫這個成員函式。

afx_msg void OnActivate(
    UINT nState,
    CWnd* pWndOther,
    BOOL bMinimized);

參數

nState
指定 CWnd 正在啟動或停用 。 它可能是下列其中一個值:

  • WA_INACTIVE 視窗正在停用。

  • WA_ACTIVE 視窗正透過滑鼠按一下以外的某些方法啟動(例如,使用鍵盤介面來選取視窗)。

  • WA_CLICKACTIVE 視窗正由滑鼠按一下來啟動。

pWndOther
要啟動或停用之 CWnd 的指標。 指標可以是 NULL ,而且可能是暫時的。

bMinimized
指定所啟動或停用 的 CWnd 最小化狀態。 的值 TRUE 表示視窗最小化。

如果 TRUE 為 , CWnd 表示正在啟動,否則為停用。

備註

CWnd如果物件以滑鼠按一下啟動,它也會接收 OnMouseActivate 成員函式呼叫。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnActivateApp

架構會將此成員函式呼叫為要啟動之工作的所有最上層視窗,以及要停用之工作的所有最上層視窗。

afx_msg void OnActivateApp(
    BOOL bActive,
    DWORD dwThreadID);

參數

bActive
指定 CWnd 正在啟動或停用 。 TRUECWnd表示正在啟動 。 FALSECWnd表示正在停用 。

dwThreadID
指定執行緒識別碼的值。 如果 bActiveTRUEdwThreadID 則識別擁有所停用 之 的 CWnd 執行緒。 如果 bActiveFALSEdwThreadID 則識別擁有所啟動之 的 CWnd 執行緒。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnAmbientProperty

架構會呼叫這個成員函式,從包含 OLE 控制項的視窗取得環境屬性值。

virtual BOOL OnAmbientProperty(
    COleControlSite* pSite,
    DISPID dispid,
    VARIANT* pvar);

參數

pSite
要求環境屬性之控制項的月臺指標。

dispid
所要求環境屬性的分派識別碼。

pvar
呼叫端配置的 VARIANT 結構的指標,其會透過該結構傳回環境屬性值。

傳回值

TRUE 如果支援環境屬性,則為 ; FALSE 如果不是,則為 。

備註

覆寫此函式,將 OLE 控制項容器傳回的預設環境屬性值變更為其控制項。 覆寫函式未處理的任何環境屬性要求,都應該轉送至基類實作。

CWnd::OnAppCommand

當使用者產生應用程式命令事件時,架構會呼叫這個成員函式。 當使用者按一下應用程式命令按鈕或輸入應用程式命令金鑰時,就會發生這類事件。

afx_msg void OnAppCommand(
    CWnd* pWnd,
    UINT nCmd,
    UINT nDevice,
    UINT nKey);

參數

pWnd
[in] CWnd 物件的指標,代表使用者按一下命令按鈕或按下命令鍵的視窗。 此視窗可以是接收訊息之視窗的子視窗。

nCmd
[in]指出應用程式命令。 如需可能值的清單,請參閱 參數 WM_APPCOMMANDlParam 段底下的 cmd 命令。

nDevice
[in]產生輸入事件的輸入裝置。 如需可能值的清單,請參閱 的 參數 WM_APPCOMMAND 區段 lParam 底下的 uDevice 裝置。

nKey
[in]指出已關閉的任何虛擬金鑰,例如 CTRL 鍵或滑鼠左鍵。 如需可能值的清單,請參閱 參數 WM_APPCOMMAND 區段底下的 dwKeyslParam 索引鍵。 如需詳細資訊,請參閱關於滑鼠輸入 中的 子標題。

備註

此方法會 WM_APPCOMMAND 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnAskCbFormatName

當剪貼簿包含格式的資料控制碼 CF_OWNERDISPLAY 時,架構會呼叫這個成員函式(也就是當剪貼簿擁有者會顯示剪貼簿內容時)。

afx_msg void OnAskCbFormatName(
    UINT nMaxCount,
    LPTSTR lpszString);

參數

nMaxCount
指定要複製的位元組數目上限。

lpszString
指向要儲存格式名稱複本的緩衝區。

備註

剪貼簿擁有者應該為其格式提供名稱。

覆寫這個成員函式,並將格式的名稱 CF_OWNERDISPLAY 複製到指定的緩衝區,而不會超過指定的位元組數目上限。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCancelMode

架構會呼叫此成員函式,以通知 CWnd 取消任何內部模式。

afx_msg void OnCancelMode();

備註

CWnd如果物件具有焦點,則會在顯示對話方塊或訊息方塊時呼叫其 OnCancelMode 成員函式。 這可讓您 CWnd 取消滑鼠擷取等模式。

預設實作會呼叫 Windows 函式來 ReleaseCapture 回應。 覆寫衍生類別中的這個成員函式以處理其他模式。

CWnd::OnCaptureChanged

架構會呼叫這個成員函式,以通知視窗遺失滑鼠擷取。

afx_msg void OnCaptureChanged(CWnd* pWnd);

參數

pWnd
取得滑鼠擷取之視窗的指標

備註

視窗會接收此訊息,即使它呼叫 ReleaseCapture 本身也一樣。 應用程式不應該嘗試設定滑鼠擷取以回應此訊息。 收到此訊息時,視窗應該視需要重新繪製本身,以反映新的滑鼠擷取狀態。

如需 Windows 函式的相關資訊, ReleaseCapture 請參閱 Windows SDK。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnChangeCbChain

架構會針對剪貼簿檢視器鏈結中的每個視窗呼叫這個成員函式,以通知視窗正從鏈結中移除。

afx_msg void OnChangeCbChain(
    HWND hWndRemove,
    HWND hWndAfter);

參數

hWndRemove
指定要從剪貼簿檢視器鏈結中移除的視窗控制碼。

hWndAfter
指定從剪貼簿檢視器鏈結中移除之視窗後面的視窗控制碼。

備註

接收呼叫的每個 CWnd 物件都應該使用 SendMessage Windows 函式,將訊息傳送 WM_CHANGECBCHAIN 至剪貼簿檢視器鏈結中的下一個視窗(由 傳回的 SetClipboardViewerOnChangeCbChain 柄)。 如果 hWndRemove 是鏈結中的下一個視窗,則 指定的 hWndAfter 視窗會變成下一個視窗,並將剪貼簿訊息傳遞給它。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnChangeUIState

應變更使用者介面 (UI) 狀態時呼叫。

afx_msg void OnChangeUIState(
    UINT nAction,
    UINT nUIElement);

參數

nAction
指定要採取的動作。 可以是下列值之一:

  • UIS_CLEAR UI 狀態元素 (由 nUIElement 指定) 應隱藏。

  • UIS_INITIALIZE UI 狀態元素 (由 nUIElement 指定) 應該根據最後一個輸入事件來變更。 如需詳細資訊,請參閱 WM_CHANGEUISTATE 節。

  • UIS_SET UI 狀態元素 (由 nUIElement 指定) 應該可見。

nUIElement
指定受影響的 UI 狀態元素或控制項的樣式。 可以是下列值之一:

  • UISF_HIDEACCEL 鍵盤快速鍵。

  • UISF_HIDEFOCUS 焦點指標。

  • UISF_ACTIVE Windows XP:控制項應該以用於使用中控制項的樣式繪製。

備註

此成員函式會模擬訊息的功能 WM_CHANGEUISTATE ,如 Windows SDK 中所述。

CWnd::OnChar

當擊鍵轉譯為非系統字元時,架構會呼叫這個成員函式。

afx_msg void OnChar(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
包含索引鍵的字元碼值。

nRepCnt
包含重複計數,當使用者按住按鍵時,會重複擊鍵的次數。

nFlags
包含掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

意義
0-15 指定重複計數。 值是使用者按住按鍵而重複擊鍵的次數。
16-23 指定掃描碼。 此值取決於原始設備製造商 (OEM)
24 指定按鍵是否為擴充按鍵,例如增強型 101 鍵或 102 鍵鍵盤上出現的右鍵 ALT 鍵和 CTRL 鍵。 如果它是擴充索引鍵,則值為 1;否則為 0。
25-28 Windows 在內部使用。
29 指定內容程式碼。 如果按下按鍵時按住 ALT 鍵,則值為 1;否則,值為 0。
30 指定先前的索引鍵狀態。 如果索引鍵在傳送訊息之前關閉,則值為 1,如果機碼已啟動,則為 0。
31 指定轉換狀態。 如果放開按鍵,則值為 1,如果按下按鍵則為 0。

備註

在成員函式和 OnKeyUp 呼叫成員函式之後 OnKeyDown ,會呼叫此函式。 OnChar 包含按下或放開的鍵盤按鍵值。

由於按下按鍵和 OnChar 產生的呼叫之間不一定有一對一的對應,因此 中的 nFlags 資訊通常不適用於應用程式。 中 nFlags 的資訊只適用于最近對成員函式的呼叫 OnKeyUp ,或 OnKeyDown 呼叫 之前 OnChar 的成員函式。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主區段的右 ALT 鍵和右 CTRL 鍵;數值鍵盤左側叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和數位鍵台中的斜線 (/) 和 ENTER 鍵。 其他一些鍵盤可能支援 中的 nFlags 擴充按鍵位。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCharToItem

當具有 LBS_WANTKEYBOARDINPUT 樣式的清單方塊傳送其擁有者 WM_CHARTOITEM 回應 WM_CHAR 訊息時呼叫。

afx_msg int OnCharToItem(
    UINT nChar,
    CListBox* pListBox,
    UINT nIndex);

參數

nChar
指定使用者按下的按鍵值。

pListBox
指定清單方塊的指標。 這可能是暫時的。

nIndex
指定目前的插入號位置。

傳回值

架構會呼叫這個成員函式,以指定應用程式回應呼叫時所執行的動作。 -2 的傳回值表示應用程式會處理選取專案的所有層面,而且清單方塊不想要採取任何進一步的動作。 -1 的傳回值表示清單方塊應該執行預設動作以回應擊鍵。 傳回值 0 或更新值會指定清單方塊中專案以零起始的索引,並指出清單方塊應該對指定專案執行按鍵的預設動作。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnChildActivate

CWnd如果物件是多個文檔介面 (MDI) 子視窗, OnChildActivate 當使用者按一下視窗的標題列或視窗啟用、移動或調整大小時,架構就會呼叫架構。

afx_msg void OnChildActivate();

CWnd::OnChildNotify

這個視窗的父視窗收到套用至此視窗的通知訊息時,會呼叫此成員函式。

virtual BOOL OnChildNotify(
    UINT message,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* pResult);

參數

message
傳送至父視窗的 Windows 訊息編號。

wParam
訊息相關聯的 wparam

lParam
訊息相關聯的 lparam

pLResult
要從父視窗程式傳回之值的指標。 如果沒有預期的傳回值,這個指標將會 NULL 是 。

傳回值

如果此視窗負責處理傳送至其父代的訊息,則為非零;否則為 0。

備註

永遠不要直接呼叫這個成員函式。

這個成員函式的預設實作會傳回 0,這表示父系應該處理訊息。

覆寫此成員函式,以擴充控制項回應通知訊息的方式。

CWnd::OnClipboardUpdate

架構會在剪貼簿的內容變更時呼叫這個成員函式。

afx_msg void OnClipboardUpdate();

CWnd::OnClose

架構會將這個成員函式呼叫為 或 CWnd 應用程式要終止的訊號。

afx_msg void OnClose();

備註

預設實作會呼叫 DestroyWindow

CWnd::OnColorizationColorChanged

當非工作區的轉譯原則變更時,架構會呼叫這個成員。

afx_msg void OnColorizationColorChanged(
    DWORD dwColorizationColor,
    BOOL bOpacity);

參數

dwColorizationColor
[in]指定新的色彩標示色彩。 色彩格式是 0xAARRGGBB 格式的十六進位數位,其中四個元件中的每一個範圍從0x00到0xFF。 AA 元件是 Alpha 值,RR 是紅色,GG 為綠色,而 BB 為藍色。

bOpacity
[in] TRUE 如果新色彩與不透明度混合,則為 ; FALSE 如果不是,則為 。

備註

此方法會 WM_DWMNCRENDERINGCHANGED 接收 Windows SDK 中所述的通知訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCommand

當使用者從功能表選取專案、子控制項傳送通知訊息或翻譯快速鍵時,架構會呼叫這個成員函式。

virtual BOOL OnCommand(
    WPARAM wParam,
    LPARAM lParam);

參數

wParam
的低序字 wParam 會識別功能表項目、控制項或快速鍵的命令識別碼。 的高序字會 wParam 指定訊息是否來自 控制項的通知訊息。 如果訊息來自快速鍵,則高階單字為 1。 如果訊息來自功能表,則高序單字為 0。

lParam
識別如果訊息來自 控制項,則會傳送訊息的控制項。 否則為 lParam 0。

傳回值

如果應用程式處理此訊息,則會傳回非零;否則為 0。

備註

OnCommand 會處理控制項通知和 ON_COMMAND 專案的訊息對應,並呼叫適當的成員函式。

覆寫衍生類別中的這個成員函式來處理 WM_COMMAND 訊息。 除非呼叫基類 OnCommand ,否則覆寫不會處理訊息對應。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCompacting

當 Windows 偵測到超過 30 到 60 秒間隔的系統時間超過 12.5% 時,架構會針對所有最上層視窗呼叫這個成員函式。

afx_msg void OnCompacting(UINT nCpuTime);

參數

nCpuTime
指定 Windows 壓縮記憶體目前花費的 CPU 時間與執行其他作業所花費 CPU 時間的比例。 例如,8000h 代表壓縮記憶體所花費的 50% CPU 時間。

備註

這表示系統記憶體不足。

CWnd當物件收到此呼叫時,它應該盡可能釋放記憶體,並考慮應用程式目前的活動層級,以及 Windows 中執行的應用程式總數。 應用程式可以呼叫 Windows 函式,以判斷有多少應用程式正在執行。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCompareItem

架構會呼叫這個成員函式,以指定子系排序擁有者繪製下拉式方塊或清單方塊中新專案的相對位置。

afx_msg int OnCompareItem(
    int nIDCtl,
    LPCOMPAREITEMSTRUCT lpCompareItemStruct);

參數

nIDCtl
傳送訊息之控制項的 WM_COMPAREITEM 識別碼。

lpCompareItemStruct
包含資料結構長指標 COMPAREITEMSTRUCT ,其中包含下拉式方塊或清單方塊中兩個專案的識別碼和應用程式提供的資料。

傳回值

表示兩個專案的相對位置。 它可以是下列任何一個值:

意義
-1 專案 1 在專案 2 之前排序。
0 專案 1 和專案 2 會排序相同。
1 專案 1 在專案 2 之後排序。

備註

如果使用 或 LBS_SORT 樣式建立 CBS_SORT 下拉式或清單方塊,則每當應用程式新增專案時,Windows 就會傳送下拉式方塊或清單方塊擁有者 WM_COMPAREITEM 訊息。

下拉式方塊或清單方塊中的兩個專案會在 所 lpCompareItemStruct 指向的結構中 COMPAREITEMSTRUCT 進行改革。 OnCompareItem 應該傳回值,指出哪些專案應該出現在另一個專案之前。 一般而言,Windows 會進行多次呼叫,直到它判斷新專案的確切位置為止。

hwndItem如果 結構的成員 COMPAREITEMSTRUCT 屬於 CListBoxCComboBox 物件,則會 CompareItem 呼叫適當類別的虛擬函式。 覆寫 CComboBox::CompareItemCListBox::CompareItem 在您的衍生 CListBoxCComboBox 類別中執行專案比較。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCompositionChanged

當桌面視窗管理員 (DWM) 組合啟用或停用時,架構會針對所有最上層視窗呼叫這個成員函式。

afx_msg void OnCompositionChanged();

備註

此方法會 WM_DWMCOMPOSITIONCHANGED 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnContextMenu

當使用者在視窗中按一下滑鼠右鍵(按一下滑鼠右鍵)時,由架構呼叫。

afx_msg void OnContextMenu(
    CWnd* pWnd,
    CPoint pos);

參數

pWnd
使用者以滑鼠右鍵按一下滑鼠的視窗控制碼。 這可以是接收訊息之視窗的子視窗。 如需處理此訊息的詳細資訊,請參閱一節。

pos
游標的位置,在螢幕座標中,按一下滑鼠時。

備註

您可以使用 來顯示操作功能表 TrackPopupMenu ,以處理此訊息。

如果您未顯示操作功能表,您應該將此訊息傳遞至函 DefWindowProc 式。 如果您的視窗是子視窗, DefWindowProc 請將訊息傳送至父代。 否則, DefWindowProc 如果指定的位置位於視窗的標題,則顯示預設操作功能表。

CWnd::OnCopyData

架構會呼叫此成員函式,以將資料從一個應用程式複製到另一個應用程式。

afx_msg BOOL OnCopyData(
    CWnd* pWnd,
    COPYDATASTRUCT* pCopyDataStruct);

參數

pWnd
傳送資料之物件的指標 CWnd

pCopyDataStruct
結構的指標 COPYDATASTRUCT ,其中包含要傳送的資料。

傳回值

如果接收的應用程式成功接受資料,則傳 TRUE 回 。 否則傳回 FALSE

備註

所傳遞的資料不得包含接收資料之應用程式無法存取之物件的指標或其他參考。

複製資料時,傳送進程的另一個執行緒不得變更資料。

接收應用程式應該考慮唯讀資料。 參數 pCopyDataStruct 所指向的結構只有在資料傳輸期間才有效;不過,接收應用程式不應該釋放與 結構相關聯的記憶體。

如果接收應用程式在傳回此函式之後需要存取資料,則必須將資料複製到本機緩衝區。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCreate

當應用程式要求呼叫 或 CreateEx 成員函式來建立 Windows 視窗時,架構會呼叫 Create 這個成員函式。

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

參數

lpCreateStruct
指向 CREATESTRUCT 包含所建立物件相關資訊的結構 CWnd

傳回值

OnCreate 必須傳回 0,才能繼續建立 CWnd 物件。 如果應用程式傳回 -1,視窗將會終結。

備註

CWnd物件會在建立視窗之後收到這個呼叫,但在它變成可見之前。 OnCreate會在 或 CreateEx 成員函式傳回之前 Create 呼叫。

覆寫此成員函式,以執行衍生類別的任何必要初始化。

結構 CREATESTRUCT 包含用來建立視窗的參數複本。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnCtlColor

架構會在即將繪製子控制項時呼叫這個成員函式。

afx_msg HBRUSH OnCtlColor(
    CDC* pDC,
    CWnd* pWnd,
    UINT nCtlColor);

參數

pDC
包含子視窗之顯示內容的指標。 可能是暫時的。

pWnd
包含要求色彩之控制項的指標。 可能是暫時的。

nCtlColor
包含下列其中一個值,指定控制項的類型:

  • CTLCOLOR_BTN 按鈕控制項

  • CTLCOLOR_DLG 對話方塊

  • CTLCOLOR_EDIT 編輯控制項

  • CTLCOLOR_LISTBOX 清單方塊控制項

  • CTLCOLOR_MSGBOX 訊息方塊

  • CTLCOLOR_SCROLLBAR 捲軸控制項

  • CTLCOLOR_STATIC 靜態控制項

傳回值

OnCtlColor 必須傳回筆刷的控制碼,該筆刷要用於繪製控制項背景。

備註

大部分的控制項都會將此訊息傳送至其父代(通常是對話方塊),以準備 pDC 使用正確的色彩繪製控制項。

若要變更文字色彩,請使用所需的紅色、綠色和藍色 (RGB) 值呼叫 SetTextColor 成員函式。

若要變更單行編輯控制項的背景色彩,請在 和 CTLCOLOR_MSGBOX 訊息碼中 CTLCOLOR_EDIT 設定筆刷控制碼,並呼叫 CDC::SetBkColor 函式以回應程式 CTLCOLOR_EDIT 代碼。

OnCtlColor 不會針對下拉式下拉式方塊的清單方塊呼叫 ,因為下拉式清單方塊實際上是下拉式方塊的子系,而不是視窗的子系。 若要變更下拉式清單方塊的色彩,請使用 參數中 nCtlColor 檢查 CTLCOLOR_LISTBOXOnCtlColor 覆寫建立 CComboBox 。 在此處理程式中 SetBkColor ,成員函式必須用來設定文字的背景色彩。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。 若要將下列方法新增至對話方塊類別,請使用 [Visual Studio 屬性] 窗格來新增 的 WM_CTLCOLOR 訊息處理常式。 或者,您也可以手動將專案新增 ON_WM_CTLCOLOR() 至訊息對應。

範例

// This OnCtlColor handler will change the color of a static control
// with the ID of IDC_MYSTATIC. The code assumes that the CPenWidthsDlg
// class has an initialized and created CBrush member named m_brush.
// The control will be painted with red text and a background
// color of m_brush.
HBRUSH CPenWidthsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   // Call the base class implementation first! Otherwise, it may
   // undo what we're trying to accomplish here.
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

   // Are we painting the IDC_MYSTATIC control? We can use
   // CWnd::GetDlgCtrlID() to perform the most efficient test.
   if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
   {
      // Set the text color to red
      pDC->SetTextColor(RGB(255, 0, 0));

      // Set the background mode for text to transparent 
      // so background will show thru.
      pDC->SetBkMode(TRANSPARENT);

      // Return handle to our CBrush object
      hbr = m_brush;
   }

   return hbr;
}

CWnd::OnDeadChar

當呼叫成員函式和 OnKeyDown 成員函式時, OnKeyUp 架構會呼叫這個成員函式。

afx_msg void OnDeadChar(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定死鍵字元值。

nRepCnt
指定重複計數。

nFlags
指定掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

Description
0-7 掃描代碼 (OEM 相依值)。 高序字組的低位元組。
8 擴充鍵,例如數位鍵臺上的函數鍵或索引鍵(如果它是擴充鍵則為 1,否則為 0)。
9-10 未使用。
11-12 Windows 在內部使用。
13 內容代碼 (如果在按下按鍵時按住 ALT 鍵,則為 1;否則為 0)。
14 先前的索引鍵狀態 (如果金鑰在呼叫之前關閉,則為 1,如果機碼已啟動,則為 0)。
15 轉換狀態 (如果放開按鍵,則為 1,如果按下按鍵則為 0)。

備註

這個成員函式可用來指定死鍵的字元值。 死鍵是索引鍵,例如 umlaut (雙點) 字元,會與其他字元結合以形成複合字元。 例如,umlaut-O 字元是由死鍵、umlaut 和 O 鍵所組成。

應用程式通常會使用 OnDeadChar 來提供使用者關於按下每個按鍵的意見反應。 例如,應用程式可以在目前字元位置顯示輔色,而不移動插入號。

由於按下和 OnDeadChar 呼叫的按鍵之間不一定有一對一的對應,因此 中的 nFlags 資訊通常不適用於應用程式。 中 nFlags 的資訊僅適用于最近呼叫 OnKeyUp 成員函式或 OnKeyDown 呼叫前面的 OnDeadChar 成員函式。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主區段的右 ALT 鍵和右 CTRL 鍵;數值鍵盤左側叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和數位鍵台中的斜線 (/) 和 ENTER 鍵。 其他一些鍵盤可能支援 中的 nFlags 擴充按鍵位。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnDeleteItem

架構會呼叫這個成員函式,通知擁有者繪製清單方塊或下拉式方塊的擁有者清單方塊或下拉式方塊,清單方塊或下拉式方塊已被 、 CListBox::DeleteStringCComboBox::ResetContentCListBox::ResetContent 移除 CComboBox::DeleteString

afx_msg void OnDeleteItem(
    int nIDCtl,
    LPDELETEITEMSTRUCT lpDeleteItemStruct);

參數

nIDCtl
傳送訊息之控制項的 WM_DELETEITEM 識別碼。

lpDeleteItemStruct
指定包含已刪除清單方塊專案相關資訊之資料結構的長指標 DELETEITEMSTRUCT

備註

hwndItem如果 結構的成員 DELETEITEMSTRUCT 屬於下拉式方塊或清單方塊,則會 DeleteItem 呼叫適當類別的虛擬函式。 DeleteItem覆寫適當控制項類別的成員函式,以刪除專案特定資料。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnDestroy

架構會呼叫這個成員函式,通知 CWnd 物件正在終結。

afx_msg void OnDestroy();

備註

OnDestroy 會在物件從畫面中移除之後 CWnd 呼叫。

OnDestroy 會先針對被摧毀的 CWnd 呼叫,然後針對 的子視窗 CWnd 呼叫,因為它們被終結。 可以假設所有子視窗在執行時 OnDestroy 仍存在。

CWnd如果被終結的物件是剪貼簿檢視器鏈結的一部分(藉由呼叫 SetClipboardViewer 成員函式所設定), CWnd 則 必須先呼叫 ChangeClipboardChain 成員函式,再從 OnDestroy 函式傳回之前,先從剪貼簿檢視器鏈結中移除本身。

CWnd::OnDestroyClipboard

架構會在剪貼簿透過 Windows 函式的呼叫 EmptyClipboard 清空時,呼叫剪貼簿擁有者的這個成員函式。

afx_msg void OnDestroyClipboard();

CWnd::OnDeviceChange

架構會呼叫此成員函式,以通知應用程式或設備磁碟機變更裝置或電腦的硬體組態。

afx_msg BOOL OnDeviceChange(
    UINT nEventType,
    DWORD_PTR dwData);

參數

nEventType
事件種類。 如需可用值的描述,請參閱一節

dwData
包含事件特定資料之結構的位址。 其意義取決於指定的事件。

備註

針對提供軟體控制功能的裝置,例如退出和鎖定,作業系統通常會傳送 DBT_DEVICEREMOVEPENDING 訊息,讓應用程式和設備磁碟機正常地結束使用裝置。

如果作業系統強制移除裝置,在這麼做之前可能不會傳送 DBT_DEVICEQUERYREMOVE 訊息。

參數 nEvent 可以是下列其中一個值:

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnDevModeChange

當使用者變更裝置模式設定時,架構會針對所有最上層 CWnd 物件呼叫這個成員函式。

afx_msg void OnDevModeChange(LPTSTR lpDeviceName);

參數

lpDeviceName
指向 Windows 初始化檔案中指定的裝置名稱。 WIN.INI

備註

處理 WM_DEVMODECHANGE 訊息的應用程式可能會重新初始化其裝置模式設定。 使用 Windows ExtDeviceMode 函式來儲存和還原裝置設定的應用程式通常不會處理此函式。

當使用者從 主控台 變更預設印表機時,不會呼叫此函式。 在此情況下,會呼叫 函 OnWinIniChange 式。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnDrawClipboard

架構會在剪貼簿內容變更時,針對剪貼簿檢視器鏈結中的每個視窗呼叫這個成員函式。

afx_msg void OnDrawClipboard();

備註

只有藉由呼叫 SetClipboardViewer 成員函式來加入剪貼簿檢視器鏈結的應用程式需要回應此呼叫。

每個接收呼叫的 OnDrawClipboard 視窗都應該呼叫 SendMessage Windows 函式,將訊息傳遞至剪貼簿檢視器鏈結中的下一個 WM_DRAWCLIPBOARD 視窗。 下一個視窗的控制碼是由 SetClipboardViewer 成員函式傳回;它可能會修改以回應 OnChangeCbChain 成員函式呼叫。

CWnd::OnDrawIconicThumbnailOrLivePreview

需要取得點陣圖,在 Windows 7 索引標籤上顯示為縮圖時,或顯示在用戶端上以查看應用程式時,由架構呼叫。

virtual void OnDrawIconicThumbnailOrLivePreview(
    CDC& dc,
    CRect rect,
    CSize szRequiredThumbnailSize,
    BOOL bIsThumbnail,
    BOOL& bAlphaChannelSet);

參數

dc
指定裝置內容。

rect
指定要呈現的區域周框。

szRequiredThumbnailSize
指定目標縮圖的大小。 如果 bIsThumbnailFALSE ,則應該忽略 。

bIsThumbnail
指定這個方法是針對圖示縮圖或即時預覽呼叫 (查看)。

bAlphaChannelSet
[out]如果您的實作初始化 中所 dc 選取點陣圖的 Alpha 色板,請將它 TRUE 設定為 。

備註

覆寫衍生類別中的這個方法,並在指定的裝置內容上繪製,以自訂縮圖和查看。 如果 bThumbnailTRUEszRequiredThumbnailSize 則可以忽略 。 在此情況下,您應該注意繪製完整大小的點陣圖(也就是涵蓋整個工作區的點陣圖)。 裝置內容 ( dc ) 隨附選取的 32 位位點陣圖。 預設實作會使用 PRF_CLIENTPRF_CHILDRENPRF_NONCLIENT 旗標傳送 WM_PRINT 至此視窗。

CWnd::OnDrawItem

當控制項或功能表的視覺層面變更時,架構會呼叫這個成員函式,以取得擁有者繪製按鈕控制項、下拉式方塊控制項、清單方塊控制項或功能表的擁有者。

afx_msg void OnDrawItem(
    int nIDCtl,
    LPDRAWITEMSTRUCT lpDrawItemStruct);

參數

nIDCtl
包含傳送訊息之控制項的 WM_DRAWITEM 識別碼。 如果功能表傳送訊息, nIDCtl 則包含 0。

lpDrawItemStruct
指定資料結構的長指標 DRAWITEMSTRUCT ,其中包含要繪製之專案的相關資訊,以及所需的繪圖類型。

備註

結構 itemAction 的成員 DRAWITEMSTRUCT 會定義要執行的繪圖作業。 此成員中的資料可讓控制項的擁有者判斷所需的繪圖動作。

從處理此訊息傳回之前,應用程式應確定結構成員所 hDC 識別的 DRAWITEMSTRUCT 裝置內容會還原為預設狀態。

hwndItem如果成員屬於 CButtonCMenuCListBox CComboBox 物件,則會 DrawItem 呼叫適當類別的虛擬函式。 DrawItem覆寫適當控制項類別的成員函式以繪製專案。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnDropFiles

當使用者將滑鼠左鍵放開至已卸載檔案收件者的視窗上時,架構會呼叫這個成員函式。

afx_msg void OnDropFiles(HDROP hDropInfo);

參數

hDropInfo
描述已卸載檔案之內部資料結構的指標。 、 DragQueryFileDragQueryPoint Windows 函式會使用此 DragFinish 控制碼來擷取已卸載檔案的相關資訊。

備註

一般而言,衍生類別的設計訴求是支援卸載的檔案,而且會在視窗建構期間自行註冊。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnEnable

當應用程式變更物件的啟用狀態 CWnd 時,架構會呼叫這個成員函式。

afx_msg void OnEnable(BOOL bEnable);

參數

bEnable
指定 CWnd 物件是否已啟用或停用。 如果 CWnd 已啟用 ,則此參數 TRUE 為 ,如果 CWnd 已停用,則 FALSE 為 。

備註

OnEnable 會在 EnableWindow 成員函式傳回之前呼叫,但在視窗啟用狀態 ( WS_DISABLED 樣式位) 變更之後。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnEndSession

架構會在 CWnd 物件從 OnQueryEndSession 成員函式呼叫傳回非零值之後,呼叫這個成員函式。

afx_msg void OnEndSession(BOOL bEnding);

參數

bEnding
指定會話是否正在結束。 如果 TRUE 會話正在結束,則為 ,否則 FALSE 為 。

備註

呼叫 OnEndSessionCWnd 通知物件會話是否實際結束。

如果 bEndingTRUE ,Windows 可以在所有應用程式從處理此呼叫傳回之後隨時終止。 因此,讓應用程式在 內 OnEndSession 執行終止所需的所有工作。

當會話結束時,您不需要呼叫 DestroyWindow 成員函式或 PostQuitMessage Windows 函式。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnEnterIdle

架構會呼叫這個成員函式,通知應用程式主視窗程式強制回應對話方塊或功能表進入閒置狀態。

afx_msg void OnEnterIdle(
    UINT nWhy,
    CWnd* pWho);

參數

nWhy
指定訊息是對話方塊的結果或正在顯示的功能表。 這個參數可以是下列其中一個 值:

  • MSGF_DIALOGBOX 系統閒置,因為正在顯示對話方塊。

  • MSGF_MENU 系統閒置,因為功能表正在顯示。

pWho
指定對話方塊的指標(如果 nWhy 為 ),或包含顯示功能表的視窗(如果 nWhyMSGF_DIALOGBOXMSGF_MENU )。 此指標可能是暫時的,不應該儲存以供日後使用。

備註

強制回應對話方塊或功能表會在處理一或多個先前的訊息之後,在其佇列中等候訊息時進入閒置狀態。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnEnterMenuLoop

架構會在輸入功能表強制回應迴圈時呼叫這個成員函式。

afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);

參數

bIsTrackPopupMenu
指定所涉及的功能表是否為快顯功能表。 如果函式成功,則具有非零值;否則為 0。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnEnterSizeMove

架構會在受影響的視窗進入移動或調整大小模式迴圈之後一次呼叫這個成員函式。

afx_msg void OnEnterSizeMove();

備註

此方法會 WM_ENTERSIZEMOVE 接收 Windows SDK 中所述的通知。

當使用者按一下視窗的標題列或調整大小框線時,或視窗將訊息傳遞 WM_SYSCOMMANDCWnd::DefWindowProc 函式,以及 該訊息的 wParam 參數指定 SC_MOVESC_SIZE 時,視窗會進入移動或調整大小模式迴圈。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnEraseBkgnd

架構會在 CWnd 物件背景需要清除時呼叫這個成員函式(例如,調整大小時)。

afx_msg BOOL OnEraseBkgnd(CDC* pDC);

參數

pDC
指定 device-coNtext 物件。

傳回值

如果清除背景,則為非零;否則為 0。

備註

呼叫它以準備不正確區域進行繪製。

預設實作會使用視窗類別背景筆刷,清除視窗類別結構成員所 hbrBackground 指定的背景。

hbrBackground如果成員為 NULL ,則覆寫的 OnEraseBkgnd 版本應該會清除背景色彩。 您的版本也應該先呼叫 UnrealizeObject 筆刷,然後選取筆刷,將預定筆刷的原點與 CWnd 座標組齊。

OnEraseBkgnd 寫應該傳回非零,以回應 WM_ERASEBKGND 它是否處理訊息並清除背景;這表示不需要進一步清除。 如果傳回 0,視窗會保持標示為需要清除。 (通常,這表示 fErase 結構的成員 PAINTSTRUCT 會是 TRUE

Windows 假設背景是以對應模式計算 MM_TEXT 。 如果裝置內容使用任何其他對應模式,則清除的區域可能不在工作區的可見部分內。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnExitMenuLoop

架構會在功能表強制回應迴圈結束時呼叫這個成員函式。

afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);

參數

bIsTrackPopupMenu
指定所涉及的功能表是否為快顯功能表。 如果函式成功,則具有非零值;否則為 0。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnExitSizeMove

架構會在受影響的視窗結束移動或調整大小模式迴圈之後一次呼叫這個成員函式。

afx_msg void OnExitSizeMove();

備註

此方法會 WM_EXITSIZEMOVE 接收 Windows SDK 中所述的通知。

當使用者按一下視窗的標題列或調整大小框線時,或視窗將訊息傳遞 WM_SYSCOMMANDCWnd::DefWindowProc 函式,以及 wParam 該訊息的 參數指定 SC_MOVESC_SIZE 時,視窗會進入移動或調整大小的強制回應迴圈。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnFontChange

在應用程式變更字型資源集區之後,系統中的所有最上層視窗都會收到 OnFontChange 來自架構的呼叫。

afx_msg void OnFontChange();

備註

從系統新增或移除字型的應用程式(例如,透過 AddFontResourceRemoveFontResource Windows 函式)應該將訊息傳送 WM_FONTCHANGE 至所有最上層視窗。

若要傳送此訊息,請使用 SendMessage Windows 函式,並將 hWnd 參數設定為 HWND_BROADCAST

CWnd::OnGetDlgCode

呼叫控制項,讓控制項可以處理方向鍵和 TAB 鍵輸入本身。

afx_msg UINT OnGetDlgCode();

傳回值

下列其中一或多個值,指出應用程式處理的輸入類型:

  • DLGC_BUTTON 按鈕(泛型)。

  • DLGC_DEFPUSHBUTTON 預設推播按鈕。

  • DLGC_HASSETSELEM_SETSEL 消息。

  • DLGC_UNDEFPUSHBUTTON 沒有預設的按鈕處理。 (應用程式可以使用這個旗標搭配 DLGC_BUTTON 來指出它正在處理按鈕輸入,但依賴系統來處理預設的按鈕處理。

  • DLGC_RADIOBUTTON 選項按鈕。

  • DLGC_STATIC 靜態控制項。

  • DLGC_WANTALLKEYS 所有鍵盤輸入。

  • DLGC_WANTARROWS 方向鍵。

  • DLGC_WANTCHARSWM_CHAR 消息。

  • DLGC_WANTMESSAGE 所有鍵盤輸入。 應用程式會將這個訊息傳遞給 控制項。

  • DLGC_WANTTAB TAB 鍵。

備註

一般而言,Windows 會處理控制項的所有方向鍵和 TAB 鍵輸入 CWnd 。 藉由覆寫 OnGetDlgCodeCWnd 控制項可以選擇特定類型的輸入來處理本身。

預先定義控制項類別的預設 OnGetDlgCode 函式會傳回適用于每個類別的程式碼。

CWnd::OnGetMinMaxInfo

每當 Windows 需要知道最大化的位置或維度,或最小或最大追蹤大小時,架構就會呼叫這個成員函式。

afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);

參數

lpMMI
MINMAXINFO指向結構,其中包含視窗最大大小和位置的相關資訊,以及其最小和最大追蹤大小。 如需此結構的詳細資訊,請參閱 MINMAXINFO 結構。

備註

最大化的大小是視窗的框線完全延伸時的大小。 視窗的追蹤大小上限是可使用框線調整視窗大小來達成的最大視窗大小。 視窗的最小追蹤大小是可使用框線調整視窗大小的最小視窗大小。

Windows 會填入點陣列,指定各種位置和維度的預設值。 應用程式可能會在 中 OnGetMinMaxInfo 變更這些值。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnHelp

在應用程式 (使用目前的內容) 中處理 F1 說明。

afx_msg void OnHelp();

備註

如需相關資訊,請參閱 CWinApp::OnHelp

CWnd::OnHelpFinder

ID_HELP_FINDER處理 和 ID_DEFAULT_HELP 命令。

afx_msg void OnHelpFinder();

備註

如需相關資訊,請參閱 CWinApp::OnHelpFinder

CWnd::OnHelpIndex

ID_HELP_INDEX處理命令並提供預設的 [說明] 主題。

afx_msg void OnHelpIndex();

備註

如需相關資訊,請參閱 CWinApp::OnHelpIndex

CWnd::OnHelpInfo

當使用者按下 F1 鍵時,由架構呼叫。

afx_msg BOOL OnHelpInfo(HELPINFO* lpHelpInfo);

參數

lpHelpInfo
HELPINFO結構的指標,其中包含要求說明之功能表項目、控制項、對話方塊或視窗的相關資訊。

傳回值

TRUE如果視窗具有鍵盤焦點,或功能表在視窗內為使用中,則傳回 。 如果沒有視窗具有鍵盤焦點,則會傳 FALSE 回 。

備註

如果按下 F1 時功能表為使用中, WM_HELP 則會傳送至與功能表相關聯的視窗,否則會 WM_HELP 傳送至具有鍵盤焦點的視窗。 如果沒有視窗具有鍵盤焦點, WM_HELP 則會傳送至目前使用中的視窗。

CWnd::OnHelpUsing

處理 ID_HELP_USING 命令。

afx_msg void OnHelpUsing();

備註

如需相關資訊,請參閱 CWinApp::OnHelpUsing

CWnd::OnHotKey

當使用者按下全系統熱鍵時,架構會呼叫這個成員函式。

afx_msg void OnHotKey(
    UINT nHotKeyId,
    UINT nKey1,
    UINT nKey2);

參數

nHotKeyId
[in]產生訊息之作用中索引鍵的識別碼。 如果訊息是由系統定義的熱鍵所產生,此參數將是下列其中一個值:

  • IDHOT_SNAPDESKTOP - 按下貼齊桌面熱鍵。
  • IDHOT_SNAPWINDOW - 按下貼齊視窗熱鍵。

nKey1
[in]旗標的位元組合 (OR) 表示按下的索引鍵與 參數所 nKey2 指定的索引鍵。 可能的值是:

  • MOD_ALT - 任一 ALT 鍵被按住。
  • MOD_CONTROL - 已按住 CTRL 鍵。
  • MOD_SHIFT - 任一 SHIFT 鍵被按住。
  • MOD_WIN - 任一個 WINDOWS 金鑰都已按住。 這些索引鍵會加上 Microsoft Windows 標誌的標籤。

nKey2
[in]作用中金鑰的虛擬金鑰程式碼。

備註

此方法會 WM_HOTKEY 接收 Windows SDK 中所述的通知。 此訊息會放在與註冊作用金鑰之執行緒相關聯的訊息佇列頂端。 使用 函 RegisterHotKey 式來註冊全系統的熱鍵。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnHScroll

當使用者按一下視窗的水準捲軸時,架構會呼叫這個成員函式。

afx_msg void OnHScroll(
    UINT nSBCode,
    UINT nPos,
    CScrollBar* pScrollBar);

參數

nSBCode
指定捲軸代碼,指出使用者的捲動要求。 此參數可以是下列其中一項:

  • SB_LEFT 向左捲動。

  • SB_ENDSCROLL 結束捲動。

  • SB_LINELEFT 向左捲動。

  • SB_LINERIGHT 向右捲動。

  • SB_PAGELEFT 向左捲動一頁。

  • SB_PAGERIGHT 向右捲動一頁。

  • SB_RIGHT 向右捲動。

  • SB_THUMBPOSITION 捲動至絕對位置。 目前的位置是由 nPos 參數指定。

  • SB_THUMBTRACK 將捲動方塊拖曳至指定的位置。 目前的位置是由 nPos 參數指定。

nPos
如果捲軸代碼為 SB_THUMBPOSITIONSB_THUMBTRACK ,則指定捲動方塊位置,否則不會使用。 視初始捲動範圍而定,可能是負數, nPos 而且應該視需要轉換成 int

pScrollBar
如果捲動訊息來自捲軸控制項,則包含控制項的指標。 如果使用者按一下視窗的捲軸,此參數為 NULL 。 指標可能是暫時的,不應該儲存以供日後使用。

備註

滾動 SB_THUMBTRACK 條程式碼通常是由在拖曳捲動方塊時提供一些意見反應的應用程式使用。

如果應用程式捲動捲軸所控制的內容,它也必須使用 SetScrollPos 成員函式重設捲動方塊的位置。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

範例

void CMdiView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
{
   // Get the minimum and maximum scroll-bar positions.
   int minpos;
   int maxpos;
   GetScrollRange(SB_HORZ, &minpos, &maxpos);
   maxpos = GetScrollLimit(SB_HORZ);

   // Get the current position of scroll box.
   int curpos = GetScrollPos(SB_HORZ);

   // Determine the new position of scroll box.
   switch (nSBCode)
   {
   case SB_LEFT: // Scroll to far left.
      curpos = minpos;
      break;

   case SB_RIGHT: // Scroll to far right.
      curpos = maxpos;
      break;

   case SB_ENDSCROLL: // End scroll.
      break;

   case SB_LINELEFT: // Scroll left.
      if (curpos > minpos)
         curpos--;
      break;

   case SB_LINERIGHT: // Scroll right.
      if (curpos < maxpos)
         curpos++;
      break;

   case SB_PAGELEFT: // Scroll one page left.
   {
      // Get the page size.
      SCROLLINFO info;
      GetScrollInfo(SB_HORZ, &info, SIF_ALL);

      if (curpos > minpos)
         curpos = max(minpos, curpos - (int)info.nPage);
   }
   break;

   case SB_PAGERIGHT: // Scroll one page right.
   {
      // Get the page size.
      SCROLLINFO info;
      GetScrollInfo(SB_HORZ, &info, SIF_ALL);

      if (curpos < maxpos)
         curpos = min(maxpos, curpos + (int)info.nPage);
   }
   break;

   case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
      curpos = nPos;      // of the scroll box at the end of the drag operation.
      break;

   case SB_THUMBTRACK: // Drag scroll box to specified position. nPos is the
      curpos = nPos;   // position that the scroll box has been dragged to.
      break;
   }

   // Set the new position of the thumb (scroll box).
   SetScrollPos(SB_HORZ, curpos);

   CView::OnHScroll(nSBCode, nPos, pScrollBar);
}

CWnd::OnHScrollClipboard

當剪貼簿資料具有 CF_OWNERDISPLAY 格式,且剪貼簿檢視器的水準捲軸中有事件時,剪貼簿擁有 OnHScrollClipboard 者的成員函式會由剪貼簿檢視器呼叫。

afx_msg void OnHScrollClipboard(
    CWnd* pClipAppWnd,
    UINT nSBCode,
    UINT nPos);

參數

pClipAppWnd
指定剪貼簿檢視器視窗的指標。 指標可能是暫時的,不應該儲存以供日後使用。

nSBCode
以低序字指定下列其中一個捲軸代碼:

  • SB_BOTTOM 向右下方捲動。

  • SB_ENDSCROLL 結束捲動。

  • SB_LINEDOWN 向下捲動一行。

  • SB_LINEUP 向上捲動一行。

  • SB_PAGEDOWN 向下捲動一頁。

  • SB_PAGEUP 向上捲動一頁。

  • SB_THUMBPOSITION 捲動至絕對位置。 目前的位置是在 中 nPos 提供。

  • SB_TOP 捲動至左上方。

nPos
如果捲軸代碼為 SB_THUMBPOSITION ,則包含捲動方塊位置,否則不會使用。

備註

擁有者應該捲動剪貼簿影像、使適當的區段失效,並更新捲軸值。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnIconEraseBkgnd

架構會在繪製圖示之前必須填滿圖示的背景時,呼叫這個成員函式作為最小化的 (icon) CWnd 物件。

afx_msg void OnIconEraseBkgnd(CDC* pDC);

參數

pDC
指定圖示的裝置內容物件。 可能是暫時的,不應該儲存以供日後使用。

備註

CWnd 只有在定義視窗預設實作的類別圖示時,才會收到此呼叫;否則 OnEraseBkgnd 會呼叫 。

成員 DefWindowProc 函式會以父視窗的背景筆刷填滿圖示背景。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnInitMenu

當功能表即將變成作用中時,架構會呼叫這個成員函式。

afx_msg void OnInitMenu(CMenu* pMenu);

參數

pMenu
指定要初始化的功能表。 可能是暫時的,不應該儲存以供日後使用。

備註

OnInitMenu 當使用者按一下功能表列上的專案或按下功能表鍵時,就會呼叫 。 覆寫此成員函式以在功能表顯示之前修改功能表。

OnInitMenu 只有在第一次存取功能表時呼叫一次(例如,當使用者按一下功能表列上的專案時)。 此方法不提供功能表項目的相關資訊。 當使用者移至功能表內的專案時,不會再次呼叫函式(例如,將滑鼠移至數個功能表項目中)。 一旦使用者從功能表結束(例如,按一下應用程式工作區),之後再按一下功能表列上的專案,就會再次呼叫函式。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnInitMenuPopup

當快顯功能表即將變成作用中時,架構會呼叫這個成員函式。

afx_msg void OnInitMenuPopup(
    CMenu* pPopupMenu,
    UINT nIndex,
    BOOL bSysMenu);

參數

pPopupMenu
指定快顯功能表的功能表物件。 可能是暫時的,不應該儲存以供日後使用。

nIndex
指定主功能表中快顯功能表的索引。

bSysMenu
TRUE 如果快顯功能表是 [控制項] 功能表,則為 ;否則 FALSE 為 。

備註

這可讓應用程式先修改快顯功能表,再顯示,而不需變更整個功能表。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnInputDeviceChange

架構會在從系統新增或移除 I/O 裝置時呼叫這個成員函式。

afx_msg void OnInputDeviceChange(unsigned short uFlag);

參數

uFlag
[in]此旗標可以包含下列值:

  • GIDC_ARRIVAL - 新的裝置已新增至系統。
  • GIDC_REMOVAL - 裝置已從系統移除。

備註

此方法會 WM_INPUT_DEVICE_CHANGE 接收 Windows SDK 中所述的通知。 是一般輸入裝置訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnInputLangChange

架構會在應用程式輸入語言變更之後,針對最受影響的視窗呼叫這個成員。

afx_msg void OnInputLangChange(
    UINT nCharSet,
    UINT nLocaleId);

參數

nCharSet
[in]新地區設定的字元集。 如需詳細資訊,請參閱 lfCharSet 結構的 參數 LOGFONT

nLocaleId
[in]輸入地區設定識別碼。 如需詳細資訊,請參閱 語言識別項常數和字串

備註

此方法會 WM_INPUTLANGCHANGE 接收 Windows SDK 中所述的通知訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnInputLangChangeRequest

當使用者選擇新的輸入語言時,架構會針對具有焦點的視窗呼叫這個成員。

afx_msg void OnInputLangChangeRequest(
    UINT nFlags,
    UINT nLocaleId);

參數

nFlags
[in]旗標的位 (OR) 組合,表示已在安裝的地區設定清單中選取新的地區設定或下一個地區設定,或新的輸入地區設定的鍵盤配置可以與系統字元集搭配使用。 可能的值為 INPUTLANGCHANGE_BACKWARDINPUTLANGCHANGE_FORWARDINPUTLANGCHANGE_SYSCHARSET

nLocaleId
[in]輸入地區設定識別碼。 如需詳細資訊,請參閱 語言識別項常數和字串

備註

此方法會 WM_INPUTLANGCHANGEREQUEST 接收 Windows SDK 中所述的通知訊息。 當使用者使用鍵盤控制台應用程式中指定的快速鍵,或從系統工作列上的指標選擇新的輸入語言時,就會張貼此訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnKeyDown

當按下非系統索引鍵時,架構會呼叫這個成員函式。

afx_msg void OnKeyDown(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定指定金鑰的虛擬金鑰碼。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nRepCnt
重複計數(由於使用者按住按鍵而重複擊鍵的次數)。

nFlags
指定掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

Description
0-7 掃描代碼 (OEM 相依值)。
8 擴充鍵,例如數位按鍵上的函數鍵或按鍵(如果它是擴充鍵則為 1)。
9-10 未使用。
11-12 Windows 在內部使用。
13 內容代碼 (如果在按下按鍵時按住 ALT 鍵,則為 1;否則為 0)。
14 先前的索引鍵狀態 (如果金鑰在呼叫之前關閉,則為 1,如果機碼已啟動,則為 0)。
15 轉換狀態 (如果放開按鍵,則為 1,如果按下按鍵則為 0)。

WM_KEYDOWN對於訊息,金鑰轉換位 (位 15) 為 0,而內容代碼位 (位 13) 為 0。

備註

非系統按鍵是按下 ALT 鍵時所按下的鍵盤按鍵,或是輸入焦點時 CWnd 按下的鍵盤按鍵。

由於自動重複,在進行成員函式呼叫之前 OnKeyUp ,可能會發生多個 OnKeyDown 呼叫。 指出先前索引鍵狀態的位可用來判斷 OnKeyDown 呼叫是第一個向下轉換還是重複的向下轉換。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主區段的右 ALT 鍵和右 CTRL 鍵;數值鍵盤左側叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和數位鍵台中的斜線 (/) 和 ENTER 鍵。 其他一些鍵盤可能支援 中的 nFlags 擴充按鍵位。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnKeyUp

架構會在釋放非系統金鑰時呼叫這個成員函式。

afx_msg void OnKeyUp(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定指定金鑰的虛擬金鑰碼。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nRepCnt
重複計數(由於使用者按住按鍵而重複擊鍵的次數)。

nFlags
指定掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

Description
0-7 掃描代碼 (OEM 相依值)。 高序字組的低位元組。
8 擴充鍵,例如數位鍵臺上的函數鍵或索引鍵(如果它是擴充鍵則為 1,否則為 0)。
9-10 未使用。
11-12 Windows 在內部使用。
13 內容代碼 (如果在按下按鍵時按住 ALT 鍵,則為 1;否則為 0)。
14 先前的索引鍵狀態 (如果金鑰在呼叫之前關閉,則為 1,如果機碼已啟動,則為 0)。
15 轉換狀態 (如果放開按鍵,則為 1,如果按下按鍵則為 0)。

WM_KEYUP對於訊息,金鑰轉換位 (位 15) 為 1,而內容代碼位 (位 13) 為 0。

備註

非系統按鍵是按下 ALT 鍵時所按下的鍵盤按鍵,或是當 具有輸入焦點時 CWnd 按下的鍵盤按鍵。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主區段的右 ALT 鍵和右 CTRL 鍵;數值鍵盤左側叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和數位鍵台中的斜線 (/) 和 ENTER 鍵。 有些其他鍵盤可能支援 nFlags 中的 擴充按鍵位。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnKillFocus

架構會在失去輸入焦點之前立即呼叫這個成員函式。

afx_msg void OnKillFocus(CWnd* pNewWnd);

參數

pNewWnd
指定接收輸入焦點之視窗的指標(可能是 NULL 或可能是暫時的)。

備註

CWnd如果物件顯示插入號,則此時應該終結插入號。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnLButtonDblClk

當使用者按兩下滑鼠左鍵時,架構會呼叫這個成員函式。

afx_msg void OnLButtonDblClk(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

只有具有樣式的 CS_DBLCLKSWNDCLASS 視窗才會收到 OnLButtonDblClk 呼叫。 這是 Microsoft Foundation Class 視窗的預設值。 當使用者按下、放開,然後在系統的按兩下時間限制內再次按下滑鼠左鍵時,Windows 會呼叫 OnLButtonDblClk 。 按兩下滑鼠左鍵實際上會產生四個事件: WM_LBUTTONDOWN 、訊息、 WM_LBUTTONDBLCLK 呼叫,以及釋放按鈕時的另一則 WM_LBUTTONUPWM_LBUTTONUP 訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnLButtonDown

當使用者按下滑鼠左鍵時,架構會呼叫這個成員函式。

afx_msg void OnLButtonDown(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnLButtonUp

當使用者放開滑鼠左鍵時,架構會呼叫這個成員函式。

afx_msg void OnLButtonUp(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMButtonDblClk

當使用者按兩下滑鼠中間按鈕時,架構會呼叫這個成員函式。

afx_msg void OnMButtonDblClk(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

只有具有樣式的 CS_DBLCLKSWNDCLASS 視窗才會收到 OnMButtonDblClk 呼叫。 這是所有 Microsoft Foundation Class 視窗的預設值。 當使用者按下、放開,然後在系統按兩下時間限制內再次按下滑鼠中間按鈕時,Windows 會產生 OnMButtonDblClk 呼叫。 按兩下中間滑鼠按鍵實際上會產生四個事件: WM_MBUTTONDOWN 和訊息、 WM_MBUTTONDBLCLK 呼叫,以及另一則 WM_MBUTTONUPWM_MBUTTONUP 訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMButtonDown

當使用者按下滑鼠中間按鈕時,架構會呼叫這個成員函式。

afx_msg void OnMButtonDown(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMButtonUp

當使用者放開滑鼠中間按鈕時,架構會呼叫這個成員函式。

afx_msg void OnMButtonUp(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMDIActivate

架構會針對要停用的子視窗和正在啟動的子視窗呼叫這個成員函式。

afx_msg void OnMDIActivate(
    BOOL bActivate,
    CWnd* pActivateWnd,
    CWnd* pDeactivateWnd);

參數

bActivate
TRUE 如果子系正在啟動,而且 FALSE 正在停用,則為 。

pActivateWnd
包含要啟動之 MDI 子視窗的指標。 由 MDI 子視窗接收時, pActivateWnd 包含正在啟動之子視窗的指標。 此指標可能是暫時的,不應該儲存以供日後使用。

pDeactivateWnd
包含停用之 MDI 子視窗的指標。 此指標可能是暫時的,不應該儲存以供日後使用。

備註

MDI 子視窗獨立于 MDI 框架視窗啟動。 當框架變成使用中時,上次 OnMDIActivate 以呼叫啟動的子視窗會收到一則 WM_NCACTIVATE 訊息,以繪製活動視窗框架並標題列,但不會收到另一個 OnMDIActivate 呼叫。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMeasureItem

架構會在建立控制項時,由架構呼叫此成員函式,以取得擁有者繪製按鈕、下拉式方塊、清單方塊或功能表項目的擁有者。

afx_msg void OnMeasureItem(
    int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);

參數

nIDCtl
控制項的識別碼。

lpMeasureItemStruct
指向 MEASUREITEMSTRUCT 包含擁有者繪製控制項維度的資料結構。

備註

覆寫這個成員函式,並填入 MEASUREITEMSTRUCTlpMeasureItemStruct 指向的資料結構並傳回;這會通知 Windows 控制項的維度,並允許 Windows 正確處理使用者與控制項的互動。

如果使用 或 CBS_OWNERDRAWVARIABLE 樣式建立 LBS_OWNERDRAWVARIABLE 清單方塊或下拉式方塊,架構會針對控制項中的每個專案呼叫此函式,否則會呼叫此函式一次。

Windows 會在傳送 WM_INITDIALOG 訊息之前,起始下拉式方塊的擁有者和清單方塊 OWNERDRAWFIXED 擁有者的呼叫 OnMeasureItem 。 因此,當擁有者收到此呼叫時,Windows 尚未決定控制項中使用的字型高度和寬度:需要這些值的函式呼叫和計算應該發生在應用程式或程式庫的主要函式中。

如果要測量的專案為 CMenuCListBoxCComboBox 物件,則會 MeasureItem 呼叫適當類別的虛擬函式。 MeasureItem覆寫適當控制項類別的成員函式,以計算和設定每個專案的大小。

OnMeasureItem 只有在控制項的類別是在執行時間建立,或是使用 LBS_OWNERDRAWVARIABLECBS_OWNERDRAWVARIABLE 樣式建立時,才會呼叫它。 如果控制項是由對話方塊編輯器所建立, OnMeasureItem 則不會呼叫。 這是因為 WM_MEASUREITEM 訊息會在控制項的建立程式中早期傳送。 如果您使用 、 SubclassDlgItemSubclassWindow 子類別,子類別 DDX_Control 通常發生在建立程式之後。 因此,無法處理 WM_MEASUREITEM 控制項函 OnChildNotify 式中的訊息,這是 MFC 用來實 ON_WM_MEASUREITEM_REFLECT 作 的機制。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMenuChar

當使用者按下與目前功能表中任何預先定義的助憶鍵不符的功能表助記字元時,架構會呼叫這個成員函式。

afx_msg LRESULT OnMenuChar(
    UINT nChar,
    UINT nFlags,
    CMenu* pMenu);

參數

nChar
根據組建設定,指定使用者按下的 ANSI 或 Unicode 字元。

nFlags
如果功能表是快顯功能表,則包含 MF_POPUP 旗標。 如果功能表是 [控制項] 功能表, MF_SYSMENU 則會包含 旗標。

pMenu
包含所選 CMenu 的指標。 指標可能是暫時的,不應該儲存。

傳回值

傳回值的高序字應該包含下列其中一個命令代碼:

描述
0 告知 Windows 捨棄使用者按下的字元,並在系統喇叭上建立簡短的嗶聲。
1 告知 Windows 關閉目前的功能表。
2 通知 Windows 傳回值的低序字包含特定專案的專案編號。 Windows 會選取此專案。

如果高序單字包含 0 或 1,則會忽略低序字。 當快速鍵(快速鍵)用來選取放在功能表中的點陣圖時,應用程式應該處理此訊息。

備註

它會傳送至 CWnd 擁有功能表的 。 OnMenuChar 當使用者按下 ALT 鍵和任何其他按鍵時,也會呼叫 ,即使按鍵未對應至助記字元也一樣。 在此情況下,指向 pMenu 由 擁有的 CWnd 功能表,且 nFlags 為 0。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMenuDrag

當使用者開始拖曳功能表項目時,架構會呼叫目前拖放功能表的這個成員函式。

afx_msg UINT OnMenuDrag(
    UINT nPos,
    CMenu* pMenu);

參數

nPos
[in]當拖曳作業開始時,功能表項目的索引位置。

pMenu
[in] CMenu 包含功能表項目之物件的指標。

傳回值

傳回值 意義
MND_CONTINUE 功能表應該保持作用中。 如果放開滑鼠,則應該忽略它。
MND_ENDMENU 功能表應該結束。

備註

此方法會 WM_MENUDRAG 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMenuGetObject

當滑鼠游標進入功能表項目或從專案中央移至專案頂端或底部時,架構會呼叫目前拖放功能表的這個成員函式。

afx_msg UINT OnMenuGetObject(MENUGETOBJECTINFO* pMenuGetObjectInfo);

參數

pMenu
[in] MENUGETOBJECTINFO 結構的指標,其中包含滑鼠游標開啟之拖放功能表的相關資訊。

傳回值

傳回值 意義
MNGO_NOERROR 支援拖放作業的 MENUGETOBJECTINFO 介面指標會在 結構的成員中 pvObj 傳回。 目前僅 IDropTarget 支援 介面。
MNGO_NOINTERFACE 不支援拖放介面。

備註

此方法會 WM_MENUGETOBJECT 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMenuRButtonUp

當使用者在游標位於功能表項目時放開滑鼠右鍵時,架構會呼叫這個成員函式。

afx_msg void OnMenuRButtonUp(
    UINT nPos,
    CMenu* pMenu);

參數

nPos
[in]放開滑鼠右鍵時功能表項目的索引位置。

pMenu
[in] CMenu 包含功能表項目之物件的指標。

備註

此方法會 WM_MENURBUTTONUP 接收 Windows SDK 中所述的通知。 訊息 WM_MENURBUTTONUP 可讓應用程式提供訊息中所指定功能表項目的內容相關功能表。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMenuSelect

CWnd如果物件與功能表相關聯,當使用者選取功能表項目時, OnMenuSelect 架構會呼叫 。

afx_msg void OnMenuSelect(
    UINT nItemID,
    UINT nFlags,
    HMENU hSysMenu);

參數

nItemID
識別選取的專案。 如果選取的專案是功能表項目, nItemID 則包含功能表項目識別碼。 如果選取的專案包含快顯功能表, nItemID 則包含快顯功能表索引,並 hSysMenu 包含主功能表的控制碼(已點選) 功能表。

nFlags
包含下列功能表旗標的組合:

  • MF_BITMAP Item 是點陣圖。

  • MF_CHECKED 已核取專案。

  • MF_DISABLED 專案已停用。

  • MF_GRAYED 專案呈現暗灰色。

  • MF_MOUSESELECT 已使用滑鼠選取專案。

  • MF_OWNERDRAW 專案是擁有者繪製專案。

  • MF_POPUP 專案包含快顯功能表。

  • MF_SEPARATOR Item 是功能表項目分隔符號。

  • MF_SYSMENU 專案包含在 [控制項] 功能表中。

hSysMenu
如果 nFlags 包含 MF_SYSMENU ,則會識別與訊息相關聯的功能表。 如果 nFlags 包含 MF_POPUP ,則會識別主功能表的控制碼。 如果 nFlags 不包含 MF_SYSMENUMF_POPUP ,則不會使用。

備註

如果 nFlags 包含0xFFFF且 hSysMenu 包含 0,Windows 已關閉功能表,因為使用者按下 ESC 鍵或按一下功能表外部。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMouseActivate

當游標位於非使用中視窗,且使用者按下滑鼠按鍵時,架構會呼叫這個成員函式。

afx_msg int OnMouseActivate(
    CWnd* pDesktopWnd,
    UINT nHitTest,
    UINT message);

參數

pDesktopWnd
指定要啟動之視窗的最上層父視窗指標。 指標可能是暫時的,不應該儲存。

nHitTest
指定 點擊測試 區功能變數代碼。 點擊測試是決定游標位置的測試。

message
指定滑鼠訊息編號。

傳回值

指定是否要啟動 CWnd ,以及是否要捨棄滑鼠事件。 它必須是下列其中一個值:

  • MA_ACTIVATE Activate CWnd 物件。

  • MA_NOACTIVATE 請勿啟動 CWnd 物件。

  • MA_ACTIVATEANDEAT 啟動 CWnd 物件並捨棄滑鼠事件。

  • MA_NOACTIVATEANDEAT 請勿啟動 CWnd 物件並捨棄滑鼠事件。

備註

預設實作會在進行任何處理之前,將此訊息傳遞至父視窗。 如果父視窗傳回 TRUE,則會停止處理。

如需個別點擊測試區功能變數代碼的描述,請參閱 OnNcHitTest 成員函式

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

範例

// The code fragment below shows how to UI activate an ActiveX control.
// CMyAxCtrl is a COleControl-derived class.
int CMyAxCtrl::OnMouseActivate(CWnd *pDesktopWnd, UINT nHitTest, UINT message)
{
   OnActivateInPlace(TRUE, NULL); // OnActivateInPlace() is an undocumented function
   return COleControl::OnMouseActivate(pDesktopWnd, nHitTest, message);
}

CWnd::OnMouseHover

當游標停留在視窗的工作區上時,架構會呼叫這個成員函式,以在之前呼叫 TrackMouseEvent 中所指定的時段內。

afx_msg void OnMouseHover(
    UINT nFlags,
    CPoint point);

參數

nFlags
[in]旗標的位元組合 (OR) 表示按下哪些修飾詞按鍵。 例如, MK_CONTROL 旗標表示按下 CTRL 鍵。

point
[in] CPoint 物件,指定 x 相對於工作區左上角之資料指標的 和 y 座標。

備註

此方法會 WM_MOUSEHOVER 接收 Windows SDK 中所述的通知。

參數 nFlags 可以是下表所列的修飾詞索引鍵組合。 如需詳細資訊,請參閱 關於滑鼠輸入

修飾詞索引鍵 描述
MK_CONTROL 按下 CTRL 鍵。
MK_LBUTTON 按下滑鼠左鍵。
MK_MBUTTON 按下滑鼠中間按鈕。
MK_RBUTTON 按下滑鼠右鍵。
MK_SHIFT 按下 SHIFT 鍵。
MK_XBUTTON1 XBUTTON1按下 Microsoft IntelliMouse 的滑鼠按鍵。
MK_XBUTTON2 XBUTTON2按下 Microsoft IntelliMouse 的滑鼠按鍵。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMouseHWheel

當滑鼠的水準滾動滾輪傾斜或旋轉時,架構會呼叫這個成員。

afx_msg void OnMouseHWheel(
    UINT nFlags,
    short zDelta,
    CPoint pt);

參數

nFlags
[in]旗標的位元組合 (OR) 表示按下哪些修飾詞按鍵。 例如, MK_CONTROL 旗標表示按下 CTRL 鍵。 如需旗標清單,請參閱關於滑鼠輸入 中的 「訊息參數」子標題。

zDelta
[in]表示方向盤旋轉的距離,以 的倍數或除 WHEEL_DELTA 數表示,也就是 120。 正值表示方向盤向右旋轉;負值表示方向盤向左旋轉。

pt
[in] CPoint 物件,指定 x 相對於工作區左上角之資料指標的 和 y 座標。

備註

此方法會 WM_MOUSEHWHEEL 接收 Windows SDK 中所述的通知訊息。 當滑鼠的水準滾動滾輪傾斜或旋轉時,此訊息會傳送至具有焦點的視窗。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMouseLeave

當游標離開之前呼叫 TrackMouseEvent 中所指定視窗的工作區時,架構會呼叫這個成員函式。

afx_msg void OnMouseLeave();

備註

此方法會 WM_MOUSELEAVE 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMouseMove

架構會在滑鼠游標移動時呼叫這個成員函式。

afx_msg void OnMouseMove(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對。

備註

如果未擷取滑鼠, WM_MOUSEMOVE 則滑鼠游標下方的物件會收到 CWnd 訊息,否則訊息會移至擷取滑鼠的視窗。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMouseWheel

架構會在使用者旋轉滑鼠滾輪時呼叫這個成員函式,並遇到滾輪的下一個凹口。

afx_msg BOOL OnMouseWheel(
    UINT nFlags,
    short zDelta,
    CPoint pt);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 如果滑鼠中間按鈕已關閉,請設定 。

  • MK_RBUTTON 如果滑鼠右鍵已關閉,請設定 。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

zDelta
表示旋轉距離。 此值 zDelta 以 的倍數或除 WHEEL_DELTA 法表示,也就是 120。 小於零的值表示向後旋轉(朝使用者旋轉),而大於零的值則表示向前旋轉(遠離使用者)。 使用者可以變更滑鼠軟體中的 Wheel 設定來反轉此回應。 如需此參數的詳細資訊,請參閱。

pt
指定游標的 x 和 Y 座標。 這些座標一律與畫面左上角相對。

傳回值

如果啟用滑鼠滾輪捲動,則為非零;否則為 0。

備註

除非覆寫,否則會 OnMouseWheel 呼叫 的預設值 WM_MOUSEWHEEL 。 Windows 會自動將訊息路由傳送至具有焦點的控制項或子視窗。 Win32 函式 DefWindowProc 會將訊息向上傳播至處理它的視窗。

參數 zDelta 是 的倍數 WHEEL_DELTA ,其設定為 120。 此值是要採取的動作閾值,而且每個差異應該發生一個這類動作(例如,向前捲動一個指標)。

WHEEL_DELTA 設定為 120,以允許更精細的車輪,例如自由旋轉的滾輪,沒有針腳。 更精細的解析度轉輪會依輪替傳送更多訊息,但每個訊息都有較小的差異值。 若要使用這類轉輪,請新增連入 zDelta 值直到 WHEEL_DELTA 到達為止(以便您取得指定差異旋轉的相同回應),或捲動部分行以回應更頻繁的訊息。 您也可以選擇捲動細微性並累積差異,直到 WHEEL_DELTA 到達為止。

覆寫此成員函式,以提供您自己的滑鼠滾輪捲動行為。

注意

OnMouseWheel 處理 Windows NT 4.0 和更新版本的訊息。 針對 Windows 95/98 或 Windows NT 3.51 訊息處理,請使用 OnRegisteredMouseWheel

CWnd::OnMove

架構會在物件移動之後 CWnd 呼叫這個成員函式。

afx_msg void OnMove(
    int x,
    int y);

參數

x
指定工作區左上角的新 X 座標位置。 這個新位置會在重迭和快顯視窗的螢幕座標中提供,以及子視窗的父用戶端座標。

y
指定工作區左上角的新 Y 座標位置。 這個新位置會在重迭和快顯視窗的螢幕座標中提供,以及子視窗的父用戶端座標。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnMoving

當使用者移動 CWnd 物件時,架構會呼叫這個成員函式。

afx_msg void OnMoving(
    UINT nSide,
    LPRECT lpRect);

參數

nSide
要移動之視窗的邊緣。

lpRect
CRect將包含專案座標的 或 RECT 結構的 位址。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcActivate

架構需要變更非工作區以指出作用中或非使用中狀態時,架構會呼叫這個成員函式。

afx_msg BOOL OnNcActivate(BOOL bActive);

參數

bActive
指定何時需要變更標題列或圖示,以指出作用中或非使用中狀態。 如果要繪製使用中的標題或圖示,則 bActive 參數 TRUE 為 。 它 FALSE 適用于非使用中標題或圖示。

傳回值

如果 Windows 應該繼續進行預設處理,則為非零;0 以防止停用標題列或圖示。

備註

如果 為 ,則預設實作會在 為 bActiveTRUE 時,在其使用 bActiveFALSE 中色彩中繪製標題列和標題列文字。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcCalcSize

架構需要計算工作區的大小和位置時,架構會呼叫這個成員函式。

afx_msg void OnNcCalcSize(
    BOOL bCalcValidRects,
    NCCALCSIZE_PARAMS* lpncsp);

參數

bCalcValidRects
指定應用程式是否應該指定工作區的哪個部分包含有效資訊。 Windows 會將有效資訊複製到新工作區內的指定區域。 如果此參數為 TRUE,應用程式應該指定工作區的哪個部分有效。

lpncsp
NCCALCSIZE_PARAMS指向資料結構,其中包含應用程式可用來計算矩形的新大小和位置 CWnd (包括工作區、框線、標題、捲軸等等)。

備註

藉由處理此訊息,當視窗的大小或位置變更時,應用程式可以控制視窗工作區的內容。

不論 的值 bCalcValidRects 為何,結構結構成員 NCCALCSIZE_PARAMSrgrc 指定陣列中的第一個矩形都包含視窗的座標。 如果是子視窗,座標會相對於父視窗的工作區。 對於最上層視窗,座標是螢幕座標。 應用程式應該修改 rgrc[0] 矩形,以反映工作區的大小和位置。

rgrc[1]rgrc[2] 矩形只有在 是 TRUE 時才 bCalcValidRects 有效。 在此情況下, rgrc[1] 矩形會包含視窗移動或調整大小的座標。 矩形 rgrc[2] 包含視窗工作區移動前視窗工作區的座標。 所有座標都與父視窗或畫面相對。

預設實作會根據視窗特性計算工作區的大小(捲軸、功能表等等),並將結果 lpncsp 放在 中。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcCreate

架構會在第一次建立物件時 CWnd ,先呼叫訊息之前的 WM_CREATE 這個成員函式。

afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);

參數

lpCreateStruct
指向 CREATESTRUCT 的資料結構 CWnd

傳回值

如果建立非用戶端區域,則為非零。 如果發生錯誤,則為 0; Create 此函式會在此案例中傳回 failure

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcDestroy

當非用戶端區域被終結時,由架構呼叫,而且是在 Windows 視窗終結時呼叫的最後一個成員函式。

afx_msg void OnNcDestroy();

備註

預設實作會執行一些清除,然後呼叫虛擬成員函式 PostNcDestroy

如果您想要執行自己的清除,請覆寫 PostNcDestroy ,例如 delete this 作業。 如果您覆寫 OnNcDestroy ,您必須在基類中呼叫 OnNcDestroy ,以確保釋放為視窗內部配置的任何記憶體。

CWnd::OnNcHitTest

架構會針對 CWnd 包含游標的物件呼叫這個成員函式(或 CWnd 每次移動滑鼠時使用 SetCapture 成員函式來擷取滑鼠輸入的物件)。

afx_msg LRESULT OnNcHitTest(CPoint point);

參數

point
包含游標的 x 和 Y 座標。 這些座標一律為螢幕座標。

傳回值

其中一個滑鼠點擊測試列舉值。 如需值清單,請參閱 WM_NCHITTEST

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcLButtonDblClk

當使用者按兩下滑鼠左鍵,而游標位於 的非工作區 CWnd 內時,架構會呼叫這個成員函式。

afx_msg void OnNcLButtonDblClk(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。 如需值清單,請參閱 WM_NCHITTEST

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

如果適用,則會 WM_SYSCOMMAND 傳送訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcLButtonDown

當使用者按下滑鼠左鍵,而游標位於物件的非工作區 CWnd 時,架構會呼叫這個成員函式。

afx_msg void OnNcLButtonDown(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。 如需值清單,請參閱 WM_NCHITTEST

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

如果適用, WM_SYSCOMMAND 則會傳送 。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數會反映收到訊息時架構所接收的參數。如果您呼叫此函式的基類實作,該實作會使用原本以訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcLButtonUp

當使用者在游標位於非工作區時釋放滑鼠左鍵時,架構會呼叫這個成員函式。

afx_msg void OnNcLButtonUp(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。 如需值清單,請參閱 WM_NCHITTEST

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

如果適用, WM_SYSCOMMAND 則會傳送 。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcMButtonDblClk

當使用者在游標位於非工作區時按兩下滑鼠中間按鈕時,架構會呼叫這個成員函式。

afx_msg void OnNcMButtonDblClk(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcMButtonDown

當使用者在游標位於非工作區時按下滑鼠中間按鈕時,架構會呼叫這個成員函式。

afx_msg void OnNcMButtonDown(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcMButtonUp

當使用者在游標位於非工作區時放開滑鼠中間按鈕時,架構會呼叫這個成員函式。

afx_msg void OnNcMButtonUp(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcMouseHover

架構會在游標停留在視窗的非工作區上,在之前呼叫 TrackMouseEvent 中指定的一段時間內,架構會呼叫這個成員函式。

afx_msg void OnNcMouseHover(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
[in]函式傳 CWnd::DefWindowProc 回的點擊測試值,因為處理 WM_NCHITTEST 訊息。

point
[in] CPoint 物件,指定 相對於螢幕左上角之游標的 x y 座標。

備註

此方法會 WM_NCMOUSEHOVER 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcMouseLeave

當游標離開之前呼叫 TrackMouseEvent 中所指定視窗的非工作區時,架構會呼叫這個成員函式。

afx_msg void OnNcMouseLeave();

備註

此方法會 WM_NCMOUSELEAVE 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcMouseMove

當游標在非工作區內移動時,架構會呼叫這個成員函式。

afx_msg void OnNcMouseMove(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

如果適用,則會 WM_SYSCOMMAND 傳送訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcPaint

需要繪製非工作區時,架構會呼叫這個成員函式。

afx_msg void OnNcPaint();

備註

預設實作會繪製視窗框架。

應用程式可以覆寫此呼叫,並繪製自己的自訂視窗框架。 裁剪區域一律為矩形,即使改變框架的形狀也一樣。

CWnd::OnNcRButtonDblClk

當使用者按兩下滑鼠右鍵,而游標位於 的非工作區 CWnd 時,架構會呼叫這個成員函式。

afx_msg void OnNcRButtonDblClk(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcRButtonDown

當使用者在游標位於非工作區時按下滑鼠右鍵時,架構會呼叫這個成員函式。

afx_msg void OnNcRButtonDown(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcRButtonUp

當使用者在游標位於非工作區時釋放滑鼠右鍵時,架構會呼叫這個成員函式。

afx_msg void OnNcRButtonUp(
    UINT nHitTest,
    CPoint point);

參數

nHitTest
指定 點擊測試程式碼 。 點擊測試是決定游標位置的測試。

point
指定 CPoint 物件,其中包含游標位置的 x 和 y 螢幕座標。 這些座標一律與畫面左上角相對。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcRenderingChanged

當非工作區的轉譯原則變更時,架構會呼叫這個成員。

afx_msg void OnNcRenderingChanged(BOOL bIsRendering);

參數

bIsRendering
[in] TRUE 如果視窗管理員 (DWM) 轉譯已啟用視窗的非工作區,則為 ; FALSE 如果停用轉譯,則為 。

備註

此方法會 WM_DWMNCRENDERINGCHANGED 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcXButtonDblClk

當使用者按兩下 XBUTTON1XBUTTON2 游標位於視窗的非工作區時,架構會呼叫這個成員函式。

void OnNcXButtonDblClk(
    short nHitTest,
    UINT nButton,
    CPoint point);

參數

nHitTest
[in]函式傳 CWnd::DefWindowProc 回的點擊測試值,因為處理 WM_NCHITTEST 訊息。

nButton
[in]如果按兩下第一個 Microsoft Intellimouse X 按鈕,或 XBUTTON2 按兩下第二個 X 按鈕,則值為 XBUTTON1

point
[in] CPoint 物件,指定 x 相對於工作區左上角之資料指標的 和 y 座標。

備註

此方法會 WM_XBUTTONDBLCLK 接收 Windows SDK 中所述的通知。 此訊息會張貼至包含游標的視窗。 如果視窗已擷取滑鼠,則不會張貼此訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcXButtonDown

當使用者按下 XBUTTON1 滑鼠或 XBUTTON2 滑鼠時,當游標位於視窗的非工作區時,架構會呼叫這個成員函式。

afx_msg void OnNcXButtonDown(
    short nHitTest,
    UINT nButton,
    CPoint point);

參數

nHitTest
[in]函式傳 CWnd::DefWindowProc 回的點擊測試值,因為處理 WM_NCHITTEST 訊息。

nButton
[in]如果按下第一個滑鼠 X 按鈕,或 XBUTTON2 按下第二個 X 按鈕,則為 的值 XBUTTON1

point
[in] CPoint 物件,指定 x 相對於螢幕左上角之游標的 和 y 座標。

備註

此方法會 WM_NCXBUTTONDOWN 接收 Windows SDK 中所述的通知。 此訊息會張貼至包含游標的視窗。 如果視窗已擷取滑鼠,則不會張貼此訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNcXButtonUp

當使用者放開 XBUTTON1 滑鼠或 XBUTTON2 游標位於視窗的非工作區時,架構會呼叫這個成員函式。

afx_msg void OnNcXButtonUp(
    short nHitTest,
    UINT nButton,
    CPoint point);

參數

nHitTest
[in]函式傳 CWnd::DefWindowProc 回的點擊測試值,因為處理 WM_NCHITTEST 訊息。

nButton
[in]如果放開第一個滑鼠 X 按鈕,或 XBUTTON2 釋放第二個 X 按鈕,則為 的值 XBUTTON1

point
[in] CPoint 物件,指定 相對於螢幕左上角之游標的 x y 座標。

備註

此方法會 WM_NCXBUTTONUP 接收 Windows SDK 中所述的通知。 此訊息會張貼至包含游標的視窗。 如果視窗已擷取滑鼠,則不會張貼此訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNextMenu

當使用向右鍵或向左鍵在功能表列與系統功能表之間切換時,架構會呼叫這個成員函式。

afx_msg void OnNextMenu(
    UINT nKey,
    LPMDINEXTMENU lpMdiNextMenu);

參數

nKey
[in]旗標的位元組合 ( OR ) 表示按下哪些修飾詞按鍵。 例如, MK_CONTROL 旗標表示按下 CTRL 鍵。 如需旗標清單,請參閱關於滑鼠輸入 中的 「訊息參數」子標題。

lpMdiNextMenu
[in] MDINEXTMENU 結構的指標,其中包含要啟動之功能表的相關資訊。

備註

此方法會 WM_UNINITMENUPOPUP 接收 Windows SDK 中所述的通知。 為了回應此訊息,您的應用程式可以設定 hmenuNext 結構的成員 MDINEXTMENU 來指定要切換的功能表,以及 hwndNext 指定要接收功能表通知訊息視窗的成員。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnNotify

架構會呼叫這個成員函式,通知控制項的父視窗,控制項中已發生事件,或控制項需要某種資訊。

virtual BOOL OnNotify(
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* pResult);

參數

wParam
識別如果訊息來自 控制項,則會傳送訊息的控制項。 否則為 wParam 0。

lParam
通知訊息 ( NMHDR ) 結構的指標,其中包含通知程式碼和其他資訊。 對於某些通知訊息,此參數會指向具有 結構做為其第一個成員的較大結構 NMHDR

pResult
LRESULT當處理訊息時,要在其中儲存結果碼的變數指標。

傳回值

如果應用程式處理此訊息,則會傳回非零;否則為 0。

備註

OnNotify 處理控制項通知的訊息對應。

覆寫衍生類別中的這個成員函式來處理 WM_NOTIFY 訊息。 除非呼叫基類 OnNotify ,否則覆寫不會處理訊息對應。

如需訊息的詳細資訊 WM_NOTIFY ,請參閱技術附注 61 (TN061) ON_NOTIFYWM_NOTIFY 訊息 。 您可能也對控制項主題 和 TN062 、Windows 控制項 的訊息反思ion 中所述 的相關主題感興趣。

CWnd::OnNotifyFormat

架構會呼叫這個成員函式,以判斷目前視窗是否接受通知訊息中的 WM_NOTIFY ANSI 或 Unicode 結構。

afx_msg UINT OnNotifyFormat(
    CWnd* pWnd,
    UINT nCommand);

參數

pWnd
[in]物件的指標 CWnd ,表示傳送訊息的 WM_NOTIFY 視窗。 如果 nCommand 參數為 ,則這個參數是 控制項的指標,如果 nCommandNF_REQUERYNF_QUERY ,則為 控制項的父視窗指標。

nCommand
[in]特製化訊息的 WM_NOTIFY 命令值。 可能的值是:

  • NF_QUERY - 訊息是用來判斷 ANSI 或 Unicode 結構是否應該用於訊息的 WM_NOTIFY 查詢。 此訊息會在控制項建立期間從控制項傳送至其父視窗,並回應 NF_REQUERY 此訊息的格式。
  • NF_REQUERY - 訊息是控制項將這個訊息形式傳送 NF_QUERY 至其父視窗的要求。 此要求會從父視窗傳送,並要求控制項重新查詢父代訊息中 WM_NOTIFY 要使用的結構類型。 nCommand如果 參數是 NF_REQUERY ,則傳回值是重新查詢作業的結果。

傳回值

傳回值 意義
NFR_ANSI ANSI 結構應該用於 WM_NOTIFY 控制項所傳送的訊息中。
NFR_UNICODE Unicode 結構應該用於 WM_NOTIFY 控制項所傳送的訊息中。
0 發生錯誤。

備註

此方法會 WM_NOTIFYFORMAT 接收 Windows SDK 中所述的通知。 WM_NOTIFY 訊息會從通用控制項傳送至其父視窗,以及從父視窗傳送至通用控制項。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnPaint

當 Windows 或應用程式提出重新繪出應用程式視窗部分的要求時,架構會呼叫這個成員函式。

afx_msg void OnPaint();

備註

呼叫 WM_PAINTRedrawWindow 成員函式時 UpdateWindow ,會傳送訊息。

視窗可能會因為呼叫 RedrawWindow 具有旗標集的成員函 RDW_INTERNALPAINT 式而接收內部繪製訊息。 在此情況下,視窗可能沒有更新區域。 應用程式應該呼叫 GetUpdateRect 成員函式,以判斷視窗是否有更新區域。 如果 GetUpdateRect 傳回 0,應用程式不應該呼叫 BeginPaintEndPaint 成員函式。

應用程式有責任查看每個訊息的內部資料結構 WM_PAINT ,檢查是否有任何必要的內部重繪或更新,因為 WM_PAINT 訊息可能是由不正確區域和呼叫 RedrawWindow 成員函 RDW_INTERNALPAINT 式所設定旗標所造成。

Windows 只會傳送內部 WM_PAINT 訊息一次。 成員函式傳送內部 WM_PAINT 訊息至視窗之後,將不會 WM_PAINT 再傳送或張貼任何訊息,直到視窗失效,或直到 RedrawWindow 已設定旗標再次 RDW_INTERNALPAINT 呼叫成員函式 UpdateWindow 為止。

如需在檔/檢視應用程式中轉譯影像的相關資訊,請參閱 CView::OnDraw

如需使用 WM_Paint 的詳細資訊,請參閱 Windows SDK 中的下列主題:

CWnd::OnPaintClipboard

當 [剪貼簿] 擁有者將資料以 OnPaintClipboard 格式放在 [剪貼簿],導致 [剪貼簿] 檢視者的工作區需要重新繪製時,[剪貼簿] 檢視者可以呼叫 [剪貼簿] 擁有者的 CF_OWNERDISPLAY 成員函式。

afx_msg void OnPaintClipboard(
    CWnd* pClipAppWnd,
    HGLOBAL hPaintStruct);

參數

pClipAppWnd
指定 [剪貼簿] 應用程式視窗的指標。 指標可能是暫時的,不應該儲存以供日後使用。

hPaintStruct
識別 PAINTSTRUCT 資料結構,定義要繪製之工作區的哪個部分。

備註

若要判斷整個工作區或只需要重新繪製的一部分,剪貼簿擁有者必須將結構成員中 rcpaintPAINTSTRUCT 指定之繪圖區域的維度與最近 OnSizeClipboard 成員函式呼叫中所指定的維度進行比較。

OnPaintClipboard 應該使用 GlobalLock Windows 函式來鎖定包含 PAINTSTRUCT 資料結構的記憶體,並在它結束之前,使用 GlobalUnlock Windows 函式解除鎖定該記憶體。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnPaletteChanged

架構會在具有輸入焦點的視窗實現其邏輯調色盤之後,針對所有最上層視窗呼叫這個成員函式,藉此變更系統調色盤。

afx_msg void OnPaletteChanged(CWnd* pFocusWnd);

參數

pFocusWnd
指定導致系統調色盤變更之視窗的指標。 指標可能是暫時的,不應該儲存。

備註

此呼叫允許沒有輸入焦點的視窗,該視窗會使用調色盤實現其邏輯調色盤並更新其工作區。

成員 OnPaletteChanged 函式會針對所有最上層和重迭的視窗呼叫,包括變更系統選擇區並導致訊息傳送的 WM_PALETTECHANGED 視窗。 如果有任何子視窗使用調色盤,則此訊息必須傳遞給它。

為了避免無限迴圈,除非視窗判斷 pFocusWnd 不包含本身指標,否則視窗不應該實現其調色盤。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnPaletteIsChanging

架構會呼叫這個成員函式,通知應用程式應用程式將實現其邏輯選擇區。

afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);

參數

pRealizeWnd
指定即將實現其邏輯調色盤的視窗。

備註

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnParentNotify

當架構的 OnParentNotify 子視窗建立或終結時,或是當使用者在子視窗上方按一下滑鼠按鍵時,架構會呼叫父成員函式。

afx_msg void OnParentNotify(
    UINT message,
    LPARAM lParam);

參數

message
指定要通知父系的事件,以及子視窗的識別碼。 事件是 的低序字。 message 如果事件為 WM_CREATEWM_DESTROY ,則 的高順序字組 message 是子視窗的識別碼,否則,高序字組為未定義。 事件 (低序字 message 的 ) 可以是下列任何值:

  • WM_CREATE 正在建立子視窗。

  • WM_DESTROY 子視窗正在終結。

  • WM_LBUTTONDOWN 使用者已將滑鼠游標放在子視窗上方,然後按一下滑鼠左鍵。

  • WM_MBUTTONDOWN 使用者已將滑鼠游標放在子視窗上方,然後按一下中間滑鼠按鍵。

  • WM_RBUTTONDOWN 使用者已將滑鼠游標放在子視窗上方,然後按一下滑鼠右鍵。

lParam
如果 的事件 (低序字) messageWM_CREATEWM_DESTROYlParam 則指定子視窗的視窗控制碼,否則 lParam 會包含游標的 x 和 y 座標。 x 座標為低序字,而 y 座標則為高序字。

備註

建立子視窗時,系統會在建立視窗的成員函式傳回之前 Create 呼叫 OnParentNotify 。 當子視窗被終結時,系統會在進行任何處理之前呼叫 OnParentNotify ,以終結視窗。

OnParentNotify 會針對子視窗的所有上階視窗呼叫,包括最上層視窗。

除了具有樣式的子視窗以外,所有 WS_EX_NOPARENTNOTIFY 子視窗都會將此訊息傳送至其父視窗。 根據預設,對話方塊中的子視窗具有樣式, WS_EX_NOPARENTNOTIFY 除非呼叫成員函式來建立沒有此樣式的 CreateEx 子視窗。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnPowerBroadcast

架構會在電源管理事件發生時呼叫這個成員函式。

afx_msg UINT OnPowerBroadcast(
    UINT nPowerEvent,
    UINT nEventData);

參數

nPowerEvent
[in]電源管理事件。

nEventData
[in]事件特定資料。

傳回值

如果事件是要求,請返回 TRUE 以授與要求,或 BROADCAST_QUERY_DENY 拒絕要求。

備註

此方法會 WM_POWERBROADCAST 接收訊息,如 Windows SDK 中所述。

參數 nPowerEvent 會指定電池電力不足、電源狀態已變更、要求或拒絕暫停作業的許可權、在事件後自動繼續作業、系統暫停作業,或在暫停後繼續作業等事件。 nEventData參數通常不會使用。 如需詳細資訊,請參閱 wParam 訊息的 WM_POWERBROADCASTlParam 參數。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnQueryDragIcon

架構會呼叫這個成員函式的最小化(圖示)視窗,該視窗沒有為其類別定義的圖示。

afx_msg HCURSOR OnQueryDragIcon();

傳回值

雙字值,其中包含低序字中的游標或圖示控制碼。 游標或圖示必須與顯示驅動程式的解析度相容。 如果應用程式傳 NULL 回 ,系統會顯示預設資料指標。 預設傳回值為 NULL

備註

系統會進行此呼叫,以取得要顯示的資料指標,而使用者拖曳最小化的視窗。 如果應用程式傳回圖示或游標的控制碼,系統會將它轉換成黑白。 如果應用程式傳回控制碼,控制碼必須識別與顯示驅動程式解析度相容的單色游標或圖示。 應用程式可以呼叫 CWinApp::LoadCursorCWinApp::LoadIcon 成員函式,從其可執行檔中的資源載入游標或圖示,並取得此控制碼。

CWnd::OnQueryEndSession

當使用者選擇結束 Windows 會話或應用程式呼叫 ExitWindows Windows 函式時,架構會呼叫這個成員函式。

afx_msg BOOL OnQueryEndSession();

傳回值

如果應用程式可以方便關閉,則為非零;否則為 0。

備註

如果有任何應用程式傳回 0,則不會結束 Windows 會話。 Windows 會在一個應用程式傳回 0 時立即停止呼叫 OnQueryEndSessionWM_ENDSESSION 並針對任何已經傳回非零的應用程式傳送參數值 FALSE 為 的訊息。

CWnd::OnQueryNewPalette

架構會在物件即將接收輸入焦點時 CWnd 呼叫這個成員函式,讓您 CWnd 有機會在收到焦點時實現其邏輯調色盤。

afx_msg BOOL OnQueryNewPalette();

傳回值

如果 CWnd 實現其邏輯調色盤,則為非零;否則為 0。

CWnd::OnQueryOpen

架構會在物件最小化時 CWnd 呼叫這個成員函式,而使用者要求 CWnd 還原至其預先設定的大小和位置。

afx_msg BOOL OnQueryOpen();

傳回值

如果可以開啟圖示,則為非零,或 0 以防止開啟圖示。

備註

在 中 OnQueryOpenCWnd 不應該執行任何會導致啟用或焦點變更的動作(例如,建立對話方塊)。

CWnd::OnQueryUIState

呼叫以擷取視窗的使用者介面 (UI) 狀態。

afx_msg UINT OnQueryUIState();

傳回值

如果焦點指標和鍵盤快速鍵可見,則傳回值為 NULL 。 否則,傳回值可以是下列其中一或多個值:

  • UISF_HIDEFOCUS 焦點指標已隱藏。

  • UISF_HIDEACCEL 鍵盤快速鍵是隱藏的。

  • UISF_ACTIVE Windows XP:控制項應該以用於使用中控制項的樣式繪製。

備註

此成員函式會模擬訊息的功能 WM_QUERYUISTATE ,如 Windows SDK 中所述。

CWnd::OnRawInput

當目前視窗取得原始輸入時,架構會呼叫這個成員函式。

afx_msg void OnRawInput(
    UINT nInputCode,
    HRAWINPUT hRawInput);

參數

nInputCode
[in]輸入程式碼,指出應用程式是否在前景時發生輸入。 不論是哪一種情況,應用程式都必須呼叫 CWnd::DefWindowProc ,系統才能執行清除。 這個參數可以是下列其中一個 值:

  • RIM_INPUT - 應用程式在前景時發生輸入。
  • RIM_INPUTSINK - 應用程式不在前景時發生輸入。

hRawInput
[in] RAWINPUT 包含來自裝置之原始輸入的結構控制碼。

備註

此方法會 WM_INPUT 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnRButtonDblClk

當使用者按兩下滑鼠右鍵時,架構會呼叫這個成員函式。

afx_msg void OnRButtonDblClk(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 設定滑鼠中鍵是否關閉。

  • MK_RBUTTON 設定滑鼠右鍵是否關閉。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 y 座標。 這些座標一律與視窗左上角相對。

備註

只有具有CS_DBLCLKS樣式的 WNDCLASS 視窗可以接收 OnRButtonDblClk 呼叫。 這是 Microsoft Foundation Class Library 內視窗的預設值。 OnRButtonDblClk當使用者按下、放開,然後再次按下系統按兩下時間限制內的滑鼠右鍵時,就會呼叫 Windows。 按兩下滑鼠右鍵實際上會產生四個事件: WM_RBUTTONDOWN 以及 WM_RBUTTONUP 當按鈕放開時,呼叫 OnRButtonDblClk 和另一個WM_RBUTTONUP訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnRButtonDown

當使用者按下滑鼠右鍵時,架構會呼叫這個成員函式。

afx_msg void OnRButtonDown(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 設定滑鼠中鍵是否關閉。

  • MK_RBUTTON 設定滑鼠右鍵是否關閉。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 y 座標。 這些座標一律與視窗左上角相對。

備註

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnRButtonUp

當使用者放開滑鼠右鍵時,架構會呼叫這個成員函式。

afx_msg void OnRButtonUp(
    UINT nFlags,
    CPoint point);

參數

nFlags
指出各種虛擬金鑰是否已關閉。 此參數可以是下列值的任何組合:

  • MK_CONTROL 如果 CTRL 鍵關閉,請設定 。

  • MK_LBUTTON 如果滑鼠左鍵已關閉,請設定 。

  • MK_MBUTTON 設定滑鼠中鍵是否關閉。

  • MK_SHIFT 如果 SHIFT 鍵關閉,請設定 。

point
指定游標的 x 和 y 座標。 這些座標一律與視窗左上角相對。

備註

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnRegisteredMouseWheel

架構會在使用者旋轉滑鼠滾輪時呼叫這個成員函式,並遇到滾輪的下一個凹口。

afx_msg LRESULT OnRegisteredMouseWheel(
    WPARAM wParam,
    LPARAM lParam);

參數

wParam
指標的水準位置。

lParam
指標的垂直位置。

傳回值

目前微不足道。 一律為零。

備註

除非覆寫,否則會將 OnRegisteredMouseWheel 訊息路由傳送至適當的視窗(具有焦點的父視窗),並呼叫該視窗的 WM_MOUSEWHEEL 處理常式。

覆寫此成員函式以提供您自己的訊息路由,或變更滑鼠滾輪捲動行為。

注意

OnRegisteredMouseWheel 會處理 Windows 95/98 和 Windows NT 3.51 的訊息。 針對 Windows NT 4.0 訊息處理,請使用 OnMouseWheel

CWnd::OnRenderAllFormats

當擁有者應用程式被終結時,架構會呼叫剪貼簿擁有者 OnRenderAllFormats 的成員函式。

afx_msg void OnRenderAllFormats();

備註

剪貼簿擁有者應該以能夠產生的所有格式轉譯資料,並藉由呼叫 SetClipboardData Windows 函式,將每個格式的資料控制碼傳遞至剪貼簿。 這可確保剪貼簿包含有效的資料,即使轉譯資料的應用程式已終結也一樣。 應用程式應該先呼叫 OpenClipboard 成員函式, SetClipboardData 再呼叫 Windows 函式,然後呼叫 CloseClipboard Windows 函式。

CWnd::OnRenderFormat

需要轉譯具有延遲轉譯的特定格式時,架構會呼叫剪貼簿擁有者 OnRenderFormat 的成員函式。

afx_msg void OnRenderFormat(UINT nFormat);

參數

nFormat
指定剪貼簿格式。

備註

接收者應該以該格式轉譯資料,並藉由呼叫 SetClipboardData Windows 函式將其傳遞至剪貼簿。

請勿從 內呼叫 OpenClipboard 成員函式或 CloseClipboard Windows 函 OnRenderFormat 式。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSessionChange

架構會呼叫此成員函式,以通知應用程式會話狀態的變更。

afx_msg void OnSessionChange(
    UINT nSessionState,
    UINT nId);

參數

nSessionState
[in]狀態碼描述會話狀態變更。

nId
[in]會話識別碼。

備註

此方法會 WM_WTSSESSION_CHANGE 接收 Windows SDK 中所述的通知。

參數 nSessionState 會指定會話已與主控台或遠端終端機機連線或中斷連線、使用者登入或關閉、會話已鎖定或解除鎖定,或會話已變更為遠端控制狀態。 如需詳細資訊,請參閱 wParam 訊息的參數 WM_WTSSESSION_CHANGE

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSetCursor

如果未擷取滑鼠輸入,而且滑鼠會導致物件內的 CWnd 游標移動,架構會呼叫這個成員函式。

afx_msg BOOL OnSetCursor(
    CWnd* pWnd,
    UINT nHitTest,
    UINT message);

參數

pWnd
指定包含游標之視窗的指標。 指標可能是暫時的,不應該儲存以供日後使用。

nHitTest
指定 點擊測試 區功能變數代碼。 點擊測試會決定游標的位置。

message
指定滑鼠訊息編號。

傳回值

非零停止進一步處理,或 0 繼續。

備註

預設實作會在處理之前呼叫父視窗的 OnSetCursor 。 如果父視窗傳 TRUE 回 ,則會停止進一步處理。 呼叫父視窗會提供子視窗中游標設定的父視窗控制項。

如果游標不在工作區中,則預設實作會將游標設定為箭號,如果不在工作區中,則設定為已註冊類別的資料指標。

如果 nHitTestHTERRORmessage 是滑鼠按鍵向下訊息,則會 MessageBeep 呼叫成員函式。

輸入 功能表模式時 CWnd ,訊息 參數為 0。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSetFocus

架構會在取得輸入焦點之後呼叫這個成員函式。

afx_msg void OnSetFocus(CWnd* pOldWnd);

參數

pOldWnd
包含 CWnd 失去輸入焦點的物件(可能是 NULL )。 指標可能是暫時的,不應該儲存以供日後使用。

備註

若要顯示插入號, CWnd 此時應該呼叫適當的插入號函式。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSettingChange

當 Win32 SystemParametersInfo 函式變更全系統設定時,架構會呼叫 OnSettingChange 所有最上層視窗。

afx_msg void OnSettingChange(
    UINT uFlags,
    LPCTSTR lpszSection);

參數

uFlags
當系統因為呼叫而 SystemParametersInfo 傳送訊息時,這個參數是指出系統參數已變更的旗標。 如需值清單,請參閱 SystemParametersInfo Windows SDK 中的 。 當應用程式傳送訊息時,此參數必須是 0。

lpszSection
指向指定已變更之區段名稱的字串。 (字串不包含括住區段名稱的方括弧。

備註

應用程式在變更系統參數時,應該將訊息傳送至所有最上層視窗,而如果使用者透過主控台變更設定,Windows 就會傳送訊息。

訊息 ON_WM_SETTINGCHANGEON_WM_WININICHANGE 訊息類似,但有下列差異:

  • 執行 ON_WM_SETTINGCHANGE Windows NT 4.0 或更新版本或 Windows 95/98 時使用。

  • 執行 Windows NT 3.51 或更新版本時使用 ON_WININICHANGE 。 此訊息現在已過時。

訊息對應中應該只有其中一個宏。 若要撰寫適用于 Windows 95/98 和 Windows NT 4.0 的程式,請為 撰寫 處理常式 ON_WM_SETTINGCHANGE 。 在 Windows NT 3.51 下,您的處理常式將會由 OnSettingChangeuFlags 呼叫,而且一律為零。

CWnd::OnShowWindow

當物件即將隱藏或顯示時, CWnd 架構會呼叫這個成員函式。

afx_msg void OnShowWindow(
    BOOL bShow,
    UINT nStatus);

參數

bShow
指定是否要顯示視窗。 如果 TRUE 視窗正在顯示,則為 ,如果視窗正在隱藏,則為 FALSE

nStatus
指定要顯示之視窗的狀態。 如果訊息因為 ShowWindow 成員函式呼叫而傳送,則為 0;否則 nStatus 為下列其中一項:

  • SW_PARENTCLOSING 父視窗正在關閉(成為標誌性的)或快顯視窗正在隱藏。

  • SW_PARENTOPENING 父視窗正在開啟(正在顯示),或正在顯示快顯視窗。

備註

當呼叫成員函式、最大化或 ShowWindow 還原重迭的視窗,或當重迭或快顯視窗關閉(成為圖示)或開啟時,就會隱藏或顯示視窗。 當重迭的視窗關閉時,與該視窗相關聯的所有快顯視窗都會隱藏。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSize

架構會在視窗的大小變更之後呼叫這個成員函式。

afx_msg void OnSize(
    UINT nType,
    int cx,
    int cy);

參數

nType
指定要求的調整大小類型。 這個參數可以是下列其中一個 值:

  • SIZE_MAXIMIZED 視窗已最大化。

  • SIZE_MINIMIZED 視窗已最小化。

  • SIZE_RESTORED視窗已調整大小,但兩者 SIZE_MINIMIZED 都未套用。 SIZE_MAXIMIZED

  • SIZE_MAXHIDE 當其他視窗最大化時,訊息會傳送至所有快顯視窗。

  • SIZE_MAXSHOW 當其他視窗還原至其先前的大小時,訊息會傳送至所有快顯視窗。

cx
指定工作區的新寬度。

cy
指定工作區的新高度。

備註

SetScrollPos如果 針對 的 OnSize 子視窗呼叫 或 MoveWindow 成員函式, bRedraw 則 或 MoveWindowSetScrollPos 參數應該是非零,導致 CWnd 重新繪製 。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

範例

// Resize the edit control contained in the view to
// fill the entire view when the view's window is
// resized. CMdiView is a CView derived class.
void CMdiView::OnSize(UINT nType, int cx, int cy)
{
   CView::OnSize(nType, cx, cy);
   // Resize edit to fill the whole view.
   // OnSize can be called before OnInitialUpdate
   // so make sure the edit control has been created.
   if (::IsWindow(m_Edit.GetSafeHwnd()))
   {
      m_Edit.MoveWindow(0, 0, cx, cy);
   }
}

CWnd::OnSizeClipboard

當剪貼簿包含具有 CF_OWNERDISPLAY 屬性的資料,且剪貼簿檢視器的工作區大小已變更時,剪貼簿檢視器會呼叫剪貼簿擁有 OnSizeClipboard 者的成員函式。

afx_msg void OnSizeClipboard(
    CWnd* pClipAppWnd,
    HGLOBAL hRect);

參數

pClipAppWnd
識別剪貼簿應用程式視窗。 指標可能是暫時的,不應該儲存。

hRect
識別全域記憶體物件。 記憶體物件包含 RECT 資料結構,指定要繪製之剪貼簿擁有者的區域。

備註

當剪貼簿應用程式即將終結或最小化時,成員 OnSizeClipboard 函式會以 Null 矩形(0,0,0,0,0)呼叫為新的大小。 這可讓剪貼簿擁有者釋放其顯示資源。

在 內 OnSizeClipboard ,應用程式必須使用 GlobalLock Windows 函式來鎖定包含 RECT 資料結構的記憶體。 讓應用程式在產生或傳回控制項之前,先解除鎖定 Windows 函式的 GlobalUnlock 記憶體。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSizing

架構會呼叫這個成員函式,指出使用者調整矩形的大小。

afx_msg void OnSizing(
    UINT nSide,
    LPRECT lpRect);

參數

nSide
要移動之視窗的邊緣。

lpRect
CRect將包含專案座標的 或 RECT 結構的 位址。

備註

藉由處理此訊息,應用程式可以監視拖曳矩形的大小和位置,並視需要變更其大小或位置。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

範例

void CSplitChildFrm::OnSizing(UINT fwSide, LPRECT pRect)
{
   CMDIChildWnd::OnSizing(fwSide, pRect);

   // Resize the splitter window in the frame. m_wndSplitter is of 
   // type CSplitterWnd
   int nWidth = (pRect->right) - (pRect->left);
   m_wndSplitter.SetColumnInfo(0, nWidth / 2, 10);
   m_wndSplitter.SetColumnInfo(1, nWidth / 2, 10);
   m_wndSplitter.RecalcLayout();
}

CWnd::OnSpoolerStatus

每當從 Print Manager 佇列新增或移除作業時,架構就會從 Print Manager 呼叫這個成員函式。

afx_msg void OnSpoolerStatus(
    UINT nStatus,
    UINT nJobs);

參數

nStatus
指定 SP_JOBSTATUS 旗標。

nJobs
指定列印管理員佇列中剩餘的作業數目。

備註

此呼叫僅供參考之用。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnStyleChanged

架構會在函式變更一或多個視窗樣式之後 SetWindowLong 呼叫這個成員函式。

afx_msg void OnStyleChanged(
    int nStyleType,
    LPSTYLESTRUCT lpStyleStruct);

參數

nStyleType
指定視窗的延伸或無xtended 樣式是否已變更。 此參數可以是下列值的組合:

  • GWL_EXSTYLE 視窗的延伸樣式已變更。

  • GWL_STYLE 視窗的 nonextended 樣式已變更。

lpStyleStruct
指向 STYLESTRUCT 包含視窗新樣式的結構。 應用程式可以檢查樣式,但無法變更它們。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnStyleChanging

當函式即將變更視窗的一或多個樣式時, SetWindowLong 架構會呼叫這個成員函式。

afx_msg void OnStyleChanging(
    int nStyleType,
    LPSTYLESTRUCT lpStyleStruct);

參數

nStyleType
指定視窗的延伸或無xtended 樣式是否已變更。 此參數可以是下列值的組合:

  • GWL_EXSTYLE 視窗的延伸樣式已變更。

  • GWL_STYLE 視窗的 nonextended 樣式已變更。

lpStyleStruct
指向 STYLESTRUCT 包含視窗新樣式的結構。 應用程式可以檢查樣式並加以變更。

備註

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSysChar

如果 CWnd 具有輸入焦點和 和 WM_SYSKEYUPWM_SYSKEYDOWN 訊息,則架構會呼叫這個成員函式。

afx_msg void OnSysChar(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定 Control-menu 鍵的 ASCII 字元按鍵碼。

nRepCnt
指定重複計數,也就是使用者按住按鍵而重複擊鍵的次數。

nFlags
參數 nFlags 可以有下列值:

意義
0-15 指定重複計數。 值是使用者按住按鍵而重複擊鍵的次數。
16-23 指定掃描碼。 此值取決於原始設備製造商 (OEM)
24 指定按鍵是否為擴充按鍵,例如增強型 101 鍵或 102 鍵鍵盤上出現的右鍵 ALT 鍵和 CTRL 鍵。 如果它是擴充索引鍵,則值為 1;否則為 0。
25-28 Windows 在內部使用。
29 指定內容程式碼。 如果按下按鍵時按住 ALT 鍵,則值為 1;否則,值為 0。
30 指定先前的索引鍵狀態。 如果索引鍵在傳送訊息之前關閉,則值為 1,如果機碼已啟動,則為 0。
31 指定轉換狀態。 如果放開按鍵,則值為 1,如果按下按鍵則為 0。

備註

它會指定 Control-menu 鍵的虛擬機器碼。 (如需標準虛擬金鑰碼的清單,請參閱 Winuser.h)

當內容程式碼為 0 時, WM_SYSCHAR 可以將訊息傳遞 WM_SYSCHARTranslateAccelerator Windows 函式,該函式會將其處理為一般金鑰訊息,而不是系統字元索引鍵。 這可讓快速鍵與使用中視窗搭配使用,即使使用中視窗沒有輸入焦點也一樣。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主區段的右 ALT 鍵和右 CTRL 鍵;數值鍵盤左側叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和數位鍵台中的斜線 (/) 和 ENTER 鍵。 其他一些鍵盤可能支援 中的 nFlags 擴充按鍵位。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSysColorChange

架構會在系統色彩設定中變更時,針對所有最上層視窗呼叫這個成員函式。

afx_msg void OnSysColorChange();

備註

Windows 會呼叫 OnSysColorChange 任何受系統色彩變更影響的視窗。

具有使用現有系統色彩之筆刷的應用程式應該刪除這些筆刷,並使用新的系統色彩重新建立它們。

CWnd::OnSysCommand

當使用者從 [控制項] 功能表選取命令,或當使用者選取 [最大化] 或 [最小化] 按鈕時,架構會呼叫這個成員函式。

afx_msg void OnSysCommand(
    UINT nID,
    LPARAM lParam);

參數

nID
指定所要求的系統命令類型。 此參數可以是下列任一值:

  • SC_CLOSECWnd關閉 物件。

  • SC_HOTKEYCWnd啟動與應用程式指定之熱鍵相關聯的物件。 的低序字 lParamHWND 識別要啟動之視窗的 。

  • SC_HSCROLL 水準捲動。

  • SC_KEYMENU 透過擊鍵擷取功能表。

  • SC_MAXIMIZE (或 SC_ZOOMCWnd 最大化 物件。

  • SC_MINIMIZE (或 SC_ICONCWnd 將 物件最小化。

  • SC_MOUSEMENU 透過滑鼠按一下來擷取功能表。

  • SC_MOVECWnd移動 物件。

  • SC_NEXTWINDOW 移至下一個視窗。

  • SC_PREVWINDOW 移至上一個視窗。

  • SC_RESTORE 將視窗還原為一般位置和大小。

  • SC_SCREENSAVE 執行檔案 [開機] 區段中 SYSTEM.INI 指定的螢幕保護裝置應用程式。

  • SC_SIZE 調整 CWnd 物件的大小。

  • SC_TASKLIST 執行或啟動 Windows 工作管理員應用程式。

  • SC_VSCROLL 垂直捲動。

lParam
如果使用滑鼠選擇 Control-menu 命令, lParam 則包含游標座標。 低序字包含 x 座標,而高階字則包含 y 座標。 否則不會使用此參數。

  • SC_HOTKEY 啟動與應用程式指定熱鍵相關聯的視窗。 的低序字 lParam 會識別要啟動的視窗。

  • SC_SCREENSAVE執行 主控台 的 Desktop 區段中指定的螢幕儲存應用程式。

備註

根據預設, OnSysCommand 執行上表所指定之預先定義動作的 Control-menu 要求。

在訊息中 WM_SYSCOMMAND ,Windows 會在內部使用參數的 nID 四個低序位。 當應用程式測試 的值 nID 時,它必須使用 bit-AND 運算子,將值0xFFF0與 nID 值結合,以取得正確的結果。

[控制項] 功能表中的功能表項目可以使用 、 AppendMenuInsertMenuModifyMenu 成員函式來修改 GetSystemMenu 。 修改 [控制項] 功能表的應用程式必須處理 WM_SYSCOMMAND 訊息,而且應用程式未處理的任何 WM_SYSCOMMAND 訊息都必須傳遞至 OnSysCommand 。 應用程式所新增的任何命令值都必須由應用程式處理,而且無法傳遞至 OnSysCommand

應用程式可以隨時透過將訊息傳遞 WM_SYSCOMMANDOnSysCommand 來執行任何系統命令。

定義以從 [控制項] 功能表選取專案的快速鍵(快速鍵)按鍵會轉譯為 OnSysCommand 呼叫;所有其他快速鍵按鍵都會轉譯成 WM_COMMAND 訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSysDeadChar

如果 CWnd 物件在呼叫 或 OnSysKeyDown 成員函式時 OnSysKeyUp 具有輸入焦點,則架構會呼叫這個成員函式。

afx_msg void OnSysDeadChar(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定死鍵字元值。

nRepCnt
指定重複計數。

nFlags
指定掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

意義
0-7 掃描代碼 (OEM 相依值)。 高序字組的低位元組。
8 擴充鍵,例如數位鍵臺上的函數鍵或索引鍵(如果它是擴充鍵則為 1,否則為 0)。
9-10 未使用。
11-12 Windows 在內部使用。
13 內容代碼 (如果在按下按鍵時按住 ALT 鍵,則為 1;否則為 0)。
14 先前的索引鍵狀態 (如果金鑰在呼叫之前關閉,則為 1,如果機碼已啟動,則為 0)。
15 轉換狀態 (如果放開按鍵,則為 1,如果按下按鍵則為 0)。

備註

它會指定死鍵的字元值。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSysKeyDown

CWnd如果物件具有輸入焦點,當使用者按住 ALT 鍵,然後按下另一個按鍵時, OnSysKeyDown 架構會呼叫成員函式。

afx_msg void OnSysKeyDown(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定所按下按鍵的虛擬按鍵碼。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nRepCnt
指定重複計數。

nFlags
指定掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

意義
0-7 掃描代碼 (OEM 相依值)。 高序字組的低位元組。
8 擴充鍵,例如數位鍵臺上的函數鍵或索引鍵(如果它是擴充鍵則為 1,否則為 0)。
9-10 未使用。
11-12 Windows 在內部使用。
13 內容代碼 (如果在按下按鍵時按住 ALT 鍵,則為 1,否則為 0)。
14 先前的索引鍵狀態 (如果金鑰在傳送訊息之前關閉,則為 1,如果機碼已啟動,則為 0)。
15 轉換狀態 (如果放開按鍵,則為 1,如果按下按鍵則為 0)。

針對 OnSysKeyDown 呼叫,金鑰轉換位 (位 15) 為 0。 如果按下按鍵時 ALT 鍵已關閉,則內容代碼位 (位 13) 為 1;如果訊息傳送至使用中視窗,則為 0,因為沒有視窗具有輸入焦點。

備註

如果目前沒有任何視窗具有輸入焦點,則會呼叫使用中視窗 OnSysKeyDown 的成員函式。 CWnd接收訊息的物件可以藉由檢查 中的 nFlags 內容程式碼來區分這兩個內容。

當內容程式碼為 0 時, WM_SYSKEYDOWNOnSysKeyDown 收到的訊息可以傳遞至 TranslateAccelerator Windows 函式,其會處理它,就像是一般金鑰訊息,而不是系統金鑰訊息一樣。 這可讓快速鍵與使用中視窗搭配使用,即使使用中視窗沒有輸入焦點也一樣。

由於自動重複,在收到訊息之前 WM_SYSKEYUP ,可能會發生多個 OnSysKeyDown 呼叫。 先前的索引鍵狀態 (位 14) 可用來判斷 OnSysKeyDown 呼叫指出第一個向下轉換或重複的向下轉換。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主要區段的右 ALT 和右 CTRL 鍵; INS DEL HOME END PAGE UP、PAGE UP PAGE DOWN ,以及數位鍵台左邊的叢集中的方向鍵;以及數位鍵台左邊的斜線 ( / ) 和 ENTER 鍵。 其他一些鍵盤可能支援 中的 nFlags 擴充按鍵位。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnSysKeyUp

CWnd如果物件具有焦點, OnSysKeyUp 當使用者放開 ALT 鍵時按下的按鍵時,架構會呼叫成員函式。

afx_msg void OnSysKeyUp(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
指定所按下按鍵的虛擬按鍵碼。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nRepCnt
指定重複計數。

nFlags
指定掃描程式碼、金鑰轉換程式碼、先前的索引鍵狀態和內容程式碼,如下列清單所示:

意義
0-7 掃描代碼 (OEM 相依值)。 高序字組的低位元組。
8 擴充鍵,例如數位鍵臺上的函數鍵或索引鍵(如果它是擴充鍵則為 1,否則為 0)。
9-10 未使用。
11-12 Windows 在內部使用。
13 內容代碼 (如果在按下按鍵時按住 ALT 鍵,則為 1,否則為 0)。
14 先前的索引鍵狀態 (如果金鑰在傳送訊息之前關閉,則為 1,如果機碼已啟動,則為 0)。
15 轉換狀態 (如果放開按鍵,則為 1,如果按下按鍵則為 0)。

針對 OnSysKeyUp 呼叫,金鑰轉換位 (位 15) 為 1。 如果按下按鍵時 ALT 鍵已關閉,則內容代碼位 (位 13) 為 1;如果訊息傳送至使用中視窗,則為 0,因為沒有視窗具有輸入焦點。

備註

如果目前沒有任何視窗具有輸入焦點,則會呼叫使用中視窗 OnSysKeyUp 的成員函式。 CWnd接收呼叫的物件可以藉由檢查 中的 nFlags 內容程式碼來區分這兩個內容。

當內容程式碼為 0 時, WM_SYSKEYUPOnSysKeyUp 收到的訊息可以傳遞至 TranslateAccelerator Windows 函式,其會處理它,就像是一般金鑰訊息,而不是系統金鑰訊息一樣。 這可讓快速鍵(快速鍵)與使用中視窗搭配使用,即使使用中視窗沒有輸入焦點也一樣。

針對 IBM Enhanced 101 和 102 鍵鍵盤,增強鍵是鍵盤主區段的右 ALT 鍵和右 CTRL 鍵;數值鍵盤左側叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和數位鍵台中的斜線 (/) 和 ENTER 鍵。 有些其他鍵盤可能支援 nFlags 中的 擴充按鍵位。

適用于非美國增強的 102 鍵鍵盤,右 ALT 鍵會當做 CTRL+ALT 按鍵組合來處理。 下列顯示使用者按下並放開此機碼時所產生的訊息和呼叫順序:

序列 已存取函式 傳遞的訊息
1. WM_KEYDOWN VK_CONTROL
2. WM_KEYDOWN VK_MENU
3. WM_KEYUP VK_CONTROL
4. WM_SYSKEYUP VK_MENU

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnTCard

當使用者按一下可撰寫按鈕時,架構會呼叫這個成員函式。

afx_msg void OnTCard(
    UINT idAction,
    DWORD dwActionData);

參數

idAction
指出使用者已採取的動作。 此參數可以是下列其中一個值:

  • IDABORT 使用者按一下了可撰寫的 [中止] 按鈕。

  • IDCANCEL 使用者按一下了可撰寫的 [取消] 按鈕。

  • IDCLOSE 使用者關閉訓練卡片。

  • IDHELP 使用者按一下了可撰寫的 Windows 說明按鈕。

  • IDIGNORE 使用者按一下了可撰寫的 [忽略] 按鈕。

  • IDOK 使用者按一下了可撰寫的 [確定] 按鈕。

  • IDNO 使用者按一下可撰寫的 [否] 按鈕。

  • IDRETRY 使用者按一下了可撰寫的 [重試] 按鈕。

  • HELP_TCARD_DATA 使用者按一下可撰寫的按鈕。 參數 dwActionData 包含說明作者所指定的長整數。

  • HELP_TCARD_NEXT 使用者按一下了可撰寫的 [下一步] 按鈕。

  • HELP_TCARD_OTHER_CALLER 另一個應用程式已要求訓練卡片。

  • IDYES 使用者按一下可撰寫的 [是] 按鈕。

dwActionData
如果 idAction 指定 HELP_TCARD_DATA ,這個參數是由說明作者指定的長整數。 否則,此參數為零。

備註

只有在應用程式使用 Windows 說明起始定型卡片時,才會呼叫此函式。 應用程式會藉由在函式呼叫 WinHelp 中指定 HELP_TCARD 命令來起始定型卡片。

CWnd::OnTimeChange

架構會在系統時間變更之後呼叫這個成員函式。

afx_msg void OnTimeChange();

備註

讓任何應用程式變更系統時間,將此訊息傳送至所有最上層視窗。 若要將 WM_TIMECHANGE 訊息傳送至所有最上層視窗,應用程式可以使用 SendMessage Windows 函式,並將其 hwnd 參數設定為 HWND_BROADCAST

CWnd::OnTimer

架構會在用來安裝計時器的成員函式中指定的 SetTimer 每個間隔之後呼叫這個成員函式。

afx_msg void OnTimer(UINT_PTR nIDEvent);

參數

nIDEvent
指定計時器的識別碼。

備註

DispatchMessage當應用程式訊息佇列中沒有其他訊息時,Windows 函式會傳送 WM_TIMER 訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

範例

請參閱CWnd::SetTimer中的範例。

CWnd::OnToolHitTest

架構會呼叫這個成員函式,以判斷某個點是否位於指定工具的周框內。

virtual INT_PTR OnToolHitTest(
    CPoint point,
    TOOLINFO* pTI) const;

參數

point
指定游標的 x 和 Y 座標。 這些座標一律與視窗左上角相對

pTI
結構的指標 TOOLINFO 。 預設會設定下列結構值:

  • hwnd = m_hWnd 視窗的控制碼

  • uId = (UINT)hWndChild 子視窗的控制碼

  • uFlags |= TTF_IDISHWND 工具的控制碼

  • lpszText = LPSTR_TEXTCALLBACK 要顯示在指定視窗中之字串的指標

傳回值

如果找到工具提示控制項,視窗控制項識別碼。 如果找不到工具提示控制項,則為 -1。

備註

如果點位於矩形中,它會擷取工具的相關資訊。

如果工具提示相關聯的區域不是按鈕, OnToolHitTest 請將結構旗標設定為 TTF_NOTBUTTONTTF_CENTERTIP

覆寫 OnToolHitTest 以提供與預設提供的不同資訊。

如需 結構的詳細資訊,請參閱 TOOLINFO Windows SDK 中的 。

CWnd::OnTouchInput

處理來自 Windows 觸控的單一輸入。

virtual BOOL OnTouchInput(
    CPoint pt,
    int nInputNumber,
    int nInputsCount,
    PTOUCHINPUT pInput);

參數

pt
指向螢幕已觸及的位置(在用戶端座標中)。

nInputNumber
觸控輸入的數目。

nInputsCount
觸控輸入的總數。

pInput
TOUCHINPUT 結構的指標。

傳回值

TRUE 如果應用程式處理 Windows 觸控輸入,則為 ;否則 FALSE 為 。

備註

CWnd::OnTouchInputs

處理 Windows 觸控的輸入。

virtual BOOL OnTouchInputs(
    UINT nInputsCount,
    PTOUCHINPUT pInputs);

參數

nInputsCount
Windows 觸控輸入的總數。

pInputs
TOUCHINPUT 陣列。

傳回值

TRUE 如果應用程式處理 Windows 觸控輸入,則為 ;否則 FALSE 為 。

備註

CWnd::OnUniChar

當按下按鍵時,架構會呼叫這個成員函式。 也就是說,目前的視窗具有鍵盤焦點,而且 WM_KEYDOWN 函式會 TranslateMessage 翻譯訊息。

afx_msg void OnUniChar(
    UINT nChar,
    UINT nRepCnt,
    UINT nFlags);

參數

nChar
[in]指定所按下按鍵的字元碼。

nRepCnt
[in]指定目前訊息的重複計數。 值是使用者按住按鍵而自動回復的次數。 如果擊鍵的時間夠長,就會傳送多個訊息。 不過,重複計數不是累計的。

nFlags
[in]指定掃描程式碼、擴充索引鍵、內容程式碼、上一個索引鍵狀態和轉換狀態的旗標,如下表所示:

標幟位 描述
0-7 指定掃描碼。 此值取決於原始設備製造商(OEM)。
8 指定擴充鍵,例如顯示在增強式 101 或 102 鍵鍵盤上的右鍵 ALT 和 CTRL 鍵。 如果索引鍵是擴充索引鍵,則旗標為 1;否則為 0。
9-12 Windows 在內部使用。
13 指定內容程式碼。 如果按下按鍵時按住 ALT 鍵,則旗標為 1;否則,值為 0。
14 指定先前的索引鍵狀態。 如果訊息傳送前索引鍵已關閉,則旗標為 1,如果機碼已啟動,則為 0。
15 指定轉換狀態。 如果放開按鍵,則旗標為 1,如果按下按鍵則為 0。

備註

此方法會 WM_UNICHAR 接收 Windows SDK 中所述的通知。 訊息 WM_UNICHAR 的設計目的是將 Unicode 字元傳送或張貼至 ANSI 視窗。 它相當於 WM_CHAR 訊息,但使用 Unicode 轉換格式-32 編碼(UTF-32),而訊息則 WM_CHAR 使用 UTF-16。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnUnInitMenuPopup

架構會在下拉式功能表或子功能表終結時呼叫這個成員函式。

afx_msg void OnUnInitMenuPopup(
    CMenu* pPopupMenu,
    UINT nFlags);

參數

pMenu
[in] CMenu 代表功能表或子功能表的物件指標。

nFlags
[in]已終結的功能表。 目前,它只能是視窗功能表。 MF_SYSMENU

備註

此方法會 WM_UNINITMENUPOPUP 接收 Windows SDK 中所述的通知。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnUpdateUIState

呼叫以變更指定的視窗及其所有子視窗的使用者介面 (UI) 狀態。

afx_msg void OnUpdateUIState(
    UINT nAction,
    UINT nUIElement);

參數

nAction
指定要執行的動作。 可以是下列值之一:

  • UIS_CLEAR UI 狀態元素 (由 nUIElement 指定) 應隱藏。

  • UIS_INITIALIZE UI 狀態元素 (由 nUIElement 指定) 應該根據最後一個輸入事件來變更。 如需詳細資訊,請參閱 WM_UPDATEISTATE 節。

  • UIS_SET UI 狀態元素 (由 nUIElement 指定) 應該可見。

nUIElement
指定受影響的 UI 狀態元素或控制項的樣式。 可以是下列值之一:

  • UISF_HIDEACCEL 鍵盤快速鍵。

  • UISF_HIDEFOCUS 焦點指標。

  • UISF_ACTIVE Windows XP:控制項應該以用於使用中控制項的樣式繪製。

備註

此成員函式會模擬訊息的功能 WM_UPDATEUISTATE ,如 Windows SDK 中所述。

CWnd::OnUserChanged

架構會在使用者登入或關閉之後,針對所有視窗呼叫這個成員。

afx_msg void OnUserChanged();

備註

此方法會 WM_USERCHANGED 接收 Windows SDK 中所述的通知訊息。 當使用者登入或關閉時,作業系統會更新使用者特定的設定。 系統會在更新設定之後立即傳送此訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnVKeyToItem

CWnd如果物件擁有具有 LBS_WANTKEYBOARDINPUT 樣式的清單方塊,清單方塊會傳送 WM_VKEYTOITEM 訊息以回應 WM_KEYDOWN 訊息。

afx_msg int OnVKeyToItem(
    UINT nKey,
    CListBox* pListBox,
    UINT nIndex);

參數

nKey
指定使用者按下之按鍵的虛擬按鍵碼。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

pListBox
指定清單方塊的指標。 指標可能是暫時的,不應該儲存以供日後使用。

nIndex
指定目前的插入號位置。

傳回值

指定應用程式回應訊息時所執行的動作。 -2 的傳回值表示應用程式會處理選取專案的所有層面,而且清單方塊不需要採取任何進一步的動作。 -1 的傳回值表示清單方塊應該執行預設動作以回應擊鍵。 傳回值 0 或更新值會指定清單方塊中專案以零起始的索引,並指出清單方塊應該對指定專案執行按鍵的預設動作。

備註

此成員函式只會由架構針對具有 LBS_HASSTRINGS 樣式的清單方塊呼叫。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnVScroll

當使用者按一下視窗的垂直捲動條時,架構會呼叫這個成員函式。

afx_msg void OnVScroll(
    UINT nSBCode,
    UINT nPos,
    CScrollBar* pScrollBar);

參數

nSBCode
指定捲軸代碼,指出使用者的捲動要求。 此參數可以是下列其中一項:

  • SB_BOTTOM 捲動到底部。

  • SB_ENDSCROLL 結束捲動。

  • SB_LINEDOWN 向下捲動一行。

  • SB_LINEUP 向上捲動一行。

  • SB_PAGEDOWN 向下捲動一頁。

  • SB_PAGEUP 向上捲動一頁。

  • SB_THUMBPOSITION 捲動至絕對位置。 目前的位置是在 中 nPos 提供。

  • SB_THUMBTRACK 將捲動方塊拖曳至指定的位置。 目前的位置是在 中 nPos 提供。

  • SB_TOP 捲動至頂端。

nPos
如果捲軸代碼為 SB_THUMBPOSITIONSB_THUMBTRACK ,則包含目前的捲動方塊位置,否則不會使用。 視初始捲動範圍而定,可能是負數, nPos 而且應該視需要轉換成 int

pScrollBar
如果捲動訊息來自捲軸控制項,則包含控制項的指標。 如果使用者按一下視窗的捲軸,此參數為 NULL 。 指標可能是暫時的,不應該儲存以供日後使用。

備註

OnVScroll 通常會由在拖曳捲動方塊時提供一些意見反應的應用程式使用。

如果 OnVScroll 捲動物件的內容 CWnd ,它也必須使用 SetScrollPos 成員函式重設捲動方塊的位置。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnVScrollClipboard

當剪貼簿資料具有 CF_OWNERDISPLAY 格式且剪貼簿檢視器的垂直捲動條中有事件時,剪貼簿檢視器 OnVScrollClipboard 的成員函式會呼叫剪貼簿擁有者的成員函式。

afx_msg void OnVScrollClipboard(
    CWnd* pClipAppWnd,
    UINT nSBCode,
    UINT nPos);

參數

pClipAppWnd
指定剪貼簿檢視器視窗的指標。 指標可能是暫時的,不應該儲存以供日後使用。

nSBCode
指定下列其中一個捲軸值:

  • SB_BOTTOM 捲動到底部。

  • SB_ENDSCROLL 結束捲動。

  • SB_LINEDOWN 向下捲動一行。

  • SB_LINEUP 向上捲動一行。

  • SB_PAGEDOWN 向下捲動一頁。

  • SB_PAGEUP 向上捲動一頁。

  • SB_THUMBPOSITION 捲動至絕對位置。 目前的位置是在 中 nPos 提供。

  • SB_TOP 捲動至頂端。

nPos
如果捲軸代碼為 SB_THUMBPOSITION ,則包含捲動方塊位置,否則 nPos 不會使用。

備註

擁有者應該捲動剪貼簿影像、使適當的區段失效,並更新捲軸值。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnWindowMaximizedChanged

架構會在目前的視窗最大化時呼叫這個成員,而視窗是由桌面視窗管理員 (DWM) 所組成。

afx_msg void OnWindowMaximizedChanged(BOOL bIsMaximized);

參數

bIsMaximized
[in] TRUE 如果目前的視窗最大化,則 FALSE 為 ,如果不是,則為 。

備註

此方法會 WM_DWMWINDOWMAXIMIZEDCHANGE 接收 Windows SDK 中所述的通知訊息。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnWindowPosChanged

當大小、位置或 Z 順序因為呼叫成員函式或其他視窗管理函式而變更時,架構會呼叫 SetWindowPos 這個成員函式。

afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);

參數

lpwndpos
WINDOWPOS指向包含視窗新大小和位置相關資訊的資料結構。

備註

預設實作會將 和 WM_MOVE 訊息傳送 WM_SIZE 至視窗。 如果應用程式在不呼叫其基類的情況下處理呼叫, OnWindowPosChanged 則不會傳送這些訊息。 在呼叫 OnWindowPosChanged 期間執行任何移動或大小變更處理,而不呼叫其基類會更有效率。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnWindowPosChanging

當大小、位置或 Z 順序因呼叫成員函式或其他視窗管理函式而即將變更時,架構會呼叫 SetWindowPos 這個成員函式。

afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);

參數

lpwndpos
WINDOWPOS指向包含視窗新大小和位置相關資訊的資料結構。

備註

應用程式可以藉由設定或清除 結構成員 WINDOWPOS 中的 flags 適當位,來防止變更視窗。

對於具有 或 WS_THICKFRAME 樣式的 WS_OVERLAPPED 視窗,預設實作會將 WM_GETMINMAXINFO 訊息傳送至視窗。 這樣做是為了驗證視窗的新大小和位置,以及強制執行 CS_BYTEALIGNCLIENTCS_BYTEALIGN 用戶端樣式。 應用程式可以藉由不呼叫其基類來覆寫此功能。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnWinIniChange

架構會在對 Windows 初始化檔案進行變更之後呼叫這個成員函式。 WIN.INI

afx_msg void OnWinIniChange(LPCTSTR lpszSection);

參數

lpszSection
指向指定已變更之區段名稱的字串。 (字串不包含括住區段名稱的方括弧。

備註

Windows 函 SystemParametersInfo 式會在應用程式使用 函式來變更檔案中的 WIN.INI 設定之後呼叫 OnWinIniChange

若要將 WM_WININICHANGE 訊息傳送至所有最上層視窗,應用程式可以使用 SendMessage Windows 函式,並將其 hwnd 參數設定為 HWND_BROADCAST

如果應用程式同時變更許多不同的區段 WIN.INI ,應用程式應該傳送一則 WM_WININICHANGE 設定為 NULL 的訊息 lpszSection 。 否則,應用程式應該在每次變更 WIN.INI 時傳送 WM_WININICHANGE

如果應用程式收到設定為 NULLOnWinIniChange 呼叫 lpszSection ,應用程式應該檢查 WIN 中的所有區段。影響應用程式的 INI。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnWndMsg

這個成員函式是由 WindowProc 呼叫,或在訊息反映期間呼叫。

virtual BOOL OnWndMsg(
    UINT message,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* pResult);

參數

message
指定要傳送的訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

pResult
WindowProc 傳回值。 取決於訊息;可能是 NULL

傳回值

如果已處理訊息,則為 TRUE;否則為 FALSE。

備註

OnWndMsg 會決定訊息類型,並呼叫適當的架構函式(例如 OnCommand ,針對 WM_COMMAND ),或在訊息對應中尋找適當的訊息。

如需訊息反映的詳細資訊,請參閱 處理反思訊息

CWnd::OnXButtonDblClk

當使用者按兩下 XBUTTON1XBUTTON2 游標位於視窗的工作區時,架構會呼叫這個成員函式。

afx_msg void OnXButtonDblClk(
    UINT nFlags,
    UINT nButton,
    CPoint point);

參數

nFlags
[in]旗標的位元組合 (OR) 表示按下哪些修飾詞按鍵。 例如, MK_CONTROL 旗標表示按下 CTRL 鍵。

nButton
[in]如果按兩下第一個 Microsoft Intellimouse X 按鈕,則為 的值 XBUTTON1 ,如果按兩下第二個 X 按鈕,則為 XBUTTON2。

point
[in] CPoint 物件,指定 x 相對於工作區左上角之資料指標的 和 y 座標。

備註

此方法會 WM_XBUTTONDBLCLK 接收 Windows SDK 中所述的通知。 如果未擷取滑鼠,訊息就會張貼到游標下方的視窗。 否則,訊息會張貼至擷取滑鼠的視窗。

參數 nFlags 可以是下表所列的修飾詞索引鍵組合。 如需詳細資訊,請參閱 關於滑鼠輸入

修飾詞索引鍵 描述
MK_CONTROL 按下 CTRL 鍵。
MK_LBUTTON 按下滑鼠左鍵。
MK_MBUTTON 按下滑鼠中間按鈕。
MK_RBUTTON 按下滑鼠右鍵。
MK_SHIFT 按下 SHIFT 鍵。
MK_XBUTTON1 XBUTTON1按下 Microsoft IntelliMouse 的滑鼠按鍵。
MK_XBUTTON2 XBUTTON2按下 Microsoft IntelliMouse 的滑鼠按鍵。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnXButtonDown

當使用者按下 XBUTTON1XBUTTON2 游標位於視窗的工作區時,架構會呼叫這個成員函式。

afx_msg void OnXButtonDown(
    UINT nFlags,
    UINT nButton,
    CPoint point);

參數

nFlags
[in]旗標的位元組合 (OR) 表示按下哪些修飾詞按鍵。 例如, MK_CONTROL 旗標表示按下 CTRL 鍵。

nButton
[in]如果按一下第一個 Microsoft Intellimouse X 按鈕,或 XBUTTON2 按一下第二個 X 按鈕,則為 的值 XBUTTON1

point
[in] CPoint 物件,指定 x 相對於工作區左上角之資料指標的 和 y 座標。

備註

此方法會 WM_XBUTTONDOWN 接收 Windows SDK 中所述的通知。 如果未擷取滑鼠,訊息就會張貼到游標下方的視窗。 否則,訊息會張貼至擷取滑鼠的視窗。

參數 nFlags 可以是下表所列的修飾詞索引鍵組合。 如需詳細資訊,請參閱 關於滑鼠輸入

修飾詞索引鍵 描述
MK_CONTROL 按下 CTRL 鍵。
MK_LBUTTON 按下滑鼠左鍵。
MK_MBUTTON 按下滑鼠中間按鈕。
MK_RBUTTON 按下滑鼠右鍵。
MK_SHIFT 按下 SHIFT 鍵。
MK_XBUTTON1 XBUTTON1按下 Microsoft IntelliMouse 的滑鼠按鍵。
MK_XBUTTON2 XBUTTON2按下 Microsoft IntelliMouse 的滑鼠按鍵。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OnXButtonUp

當使用者放開 XBUTTON1XBUTTON2 游標位於視窗的工作區時,架構會呼叫這個成員函式。

afx_msg void OnXButtonUp(
    UINT nFlags,
    UINT nButton,
    CPoint point);

參數

nFlags
[in]旗標的位元組合 (OR) 表示按下哪些修飾詞按鍵。 例如, MK_CONTROL 旗標表示按下 CTRL 鍵。

nButton
[in]如果按兩下第一個 Microsoft Intellimouse X 按鈕,或 XBUTTON2 按兩下第二個 X 按鈕,則值為 XBUTTON1

point
[in] CPoint 物件,指定 x 相對於工作區左上角之資料指標的 和 y 座標。

備註

此方法會 WM_XBUTTONUP 接收 Windows SDK 中所述的通知。 如果未擷取滑鼠,訊息就會張貼到游標下方的視窗。 否則,訊息會張貼至擷取滑鼠的視窗。

參數 nFlags 可以是下表所列的修飾詞索引鍵組合。 如需詳細資訊,請參閱 關於滑鼠輸入

修飾詞索引鍵 描述
MK_CONTROL 按下 CTRL 鍵。
MK_LBUTTON 按下滑鼠左鍵。
MK_MBUTTON 按下滑鼠中間按鈕。
MK_RBUTTON 按下滑鼠右鍵。
MK_SHIFT 按下 SHIFT 鍵。
MK_XBUTTON1 XBUTTON1按下 Microsoft IntelliMouse 的滑鼠按鍵。
MK_XBUTTON2 XBUTTON2按下 Microsoft IntelliMouse 的滑鼠按鍵。

注意

架構會呼叫此成員函式,以允許您的應用程式處理 Windows 訊息。 傳遞至函式的參數反映收到訊息時架構所收到的參數。 如果您呼叫此函式的基底類別實作,該實作會使用原本隨訊息傳遞的參數,而不是您提供給函式的參數。

CWnd::OpenClipboard

開啟剪貼簿。

BOOL OpenClipboard();

傳回值

如果剪貼簿是透過 CWnd 開啟,則為非零,如果另一個應用程式或視窗已開啟剪貼簿,則為 0。

備註

在呼叫 Windows 函式之前 CloseClipboard ,其他應用程式將無法修改剪貼簿。

在呼叫 Windows 函式之前 EmptyClipboard ,目前的 CWnd 物件將不會成為剪貼簿的擁有者。

範例

//handler for Edit | Copy menu
void CMdiView::OnEditCopy()
{
   if (!OpenClipboard())
   {
      AfxMessageBox(_T("Cannot open the Clipboard"));
      return;
   }
   // Remove the current Clipboard contents
   if (!EmptyClipboard())
   {
      AfxMessageBox(_T("Cannot empty the Clipboard"));
      return;
   }

   // Get the currently selected data, hData handle to
   // global memory of data
   CString str;
   m_Edit.GetWindowText(str);
   size_t cbStr = (str.GetLength() + 1) * sizeof(TCHAR);
   HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
   memcpy_s(GlobalLock(hData), cbStr, str.LockBuffer(), cbStr);
   GlobalUnlock(hData);
   str.UnlockBuffer();

   // For the appropriate data formats...
   UINT uiFormat = (sizeof(TCHAR) == sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;
   if (::SetClipboardData(uiFormat, hData) == NULL)
   {
      AfxMessageBox(_T("Unable to set Clipboard data"));
      CloseClipboard();
      return;
   }

   CloseClipboard();
}

CWnd::operator HWND

使用此運算子可取得 物件的控制碼 CWnd

operator HWND() const;

CWnd::operator !=

比較兩個 CWnd 物件,以判斷它們是否沒有相同的 m_hWnd

BOOL operator!=(const CWnd& wnd) const;

參數

wnd
CWnd 物件的參考。

傳回值

如果相等,則為非零;否則為 0。

CWnd::operator ==

比較兩個 CWnd 物件,以判斷它們是否有相同的 m_hWnd

BOOL operator==(const CWnd& wnd) const;

參數

wnd
CWnd 物件的參考。

傳回值

如果相等,則為非零;否則為 0。

CWnd::PaintWindowlessControls

在控制項容器上繪製無視窗控制項。

BOOL PaintWindowlessControls(CDC* pDC);

參數

pDC
要在其中繪製無視窗控制項的裝置內容。

傳回值

如果控制項容器和無視窗控制項已成功繪製,則傳 TRUE 回 ,否則 FALSE 為 。

CWnd::PostMessage

將訊息放在視窗的訊息佇列中,然後傳回,而不會等待對應的視窗處理訊息。

BOOL PostMessage(
    UINT message,
    WPARAM wParam = 0,
    LPARAM lParam = 0);

參數

message
指定要張貼的訊息。

wParam
指定其他訊息資訊。 此參數的內容取決於所張貼的訊息。

lParam
指定其他訊息資訊。 此參數的內容取決於所張貼的訊息。

傳回值

如果張貼訊息,則為非零;否則為 0。

備註

訊息佇列中的訊息是透過 GetMessage 呼叫 或 PeekMessage Windows 函式來擷取。

Windows PostMessage 函式可用來存取另一個應用程式。

範例

請參閱 的 AfxGetMainWnd 範例。

CWnd::PostNcDestroy

在視窗終結之後,由預設 OnNcDestroy 成員函式呼叫。

virtual void PostNcDestroy();

備註

衍生類別可以使用此函式進行自訂清除,例如刪除 this 指標。

CWnd::PreCreateWindow

在建立附加至這個 CWnd 物件的 Windows 視窗之前,由架構呼叫。

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

參數

cs
CREATESTRUCT 結構。

傳回值

如果視窗建立應該繼續,則為非零;0 表示建立失敗。

備註

警告

CWnd::PreCreateWindow如果功能表是 NULL 且樣式包含 WS_CHILD ,則現在會將 的 hMenu 成員 cs 指派給 this 指標。 如需適當的功能,請確定您的對話方塊控制項具有不是 NULL 的識別碼。

這項變更可修正 Managed/原生 Interop 案例中的當機狀況。 TRACE問題的開發人員會 CWnd::Create 發出警示的語句。

永遠不要直接呼叫此函式。

此函式的預設實作會檢查 NULL 視窗類別名稱,並取代適當的預設值。 覆寫此成員函式,以在建立視窗之前修改 CREATESTRUCT 結構。

衍生自 CWnd 的每個類別都會將自己的功能新增至 其 覆 PreCreateWindow 寫 。 根據設計,不會記載這些 的衍生 PreCreateWindow 。 若要判斷適合每個類別的樣式,以及樣式之間的相互依存性,您可以檢查應用程式的基類 MFC 原始程式碼。 如果您選擇覆寫 PreCreateWindow, ,則可以判斷應用程式基類中使用的樣式是否提供您需要的功能,方法是使用從 MFC 原始程式碼收集的資訊。

如需變更視窗樣式的詳細資訊,請參閱 變更 MFC 所建立之視窗的樣式。

範例

// alter the styles of the mdi frame window
BOOL CMdiChildFrame::PreCreateWindow(CREATESTRUCT &cs)
{
   // Create a window without min/max buttons or sizable border
   cs.style |= WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

   // Size the window to 1/3 screen size and center it
   cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3;
   cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3;
   cs.y = ((cs.cy * 3) - cs.cy) / 2;
   cs.x = ((cs.cx * 3) - cs.cx) / 2;

   return CMDIChildWnd::PreCreateWindow(cs);
}

CWnd::PreSubclassWindow

架構會呼叫此成員函式,以允許在子類別化視窗之前發生其他必要的子類別。

virtual void PreSubclassWindow();

備註

覆寫此成員函式允許動態子類別化控制項。 這是可覆寫的進階。

CWnd::PreTranslateMessage

類別 CWinApp 用來轉譯視窗訊息,再將其分派至 TranslateMessageDispatchMessage Windows 函式。

virtual BOOL PreTranslateMessage(MSG* pMsg);

參數

pMsg
指向 MSG 包含要處理之訊息的結構。

傳回值

如果訊息已轉譯且不應該分派,則為非零;如果訊息未轉譯且應該分派,則為 0。

CWnd::Print

呼叫這個成員函式,以在指定的裝置內容中繪製目前視窗,這在印表機裝置內容中最常見。

void Print(
    CDC* pDC,
    DWORD dwFlags) const;

參數

pDC
裝置內容的指標。

dwFlags
指定繪圖選項。 此參數可以是下列其中一或多個旗標:

  • PRF_CHECKVISIBLE 只有當視窗可見時,才會繪製視窗。

  • PRF_CHILDREN 繪製所有可見的子視窗。

  • PRF_CLIENT 繪製視窗的工作區。

  • PRF_ERASEBKGND 在繪製視窗之前清除背景。

  • PRF_NONCLIENT 繪製視窗的非工作區。

  • PRF_OWNED 繪製所有擁有的視窗。

備註

CWnd::DefWindowProc 函式會根據指定的繪圖選項來處理此訊息:

  • 如果 PRF_CHECKVISIBLE 已指定且視窗不可見,則不會執行任何動作。

  • 如果 PRF_NONCLIENT 已指定,請在指定的裝置內容中繪製非工作區。

  • 如果 PRF_ERASEBKGND 已指定,請傳送 WM_ERASEBKGND 訊息視窗。

  • 如果 PRF_CLIENT 已指定,請傳送 WM_PRINTCLIENT 訊息視窗。

  • 如果 PRF_CHILDREN 已設定,請傳送每個可見的子視窗一則 WM_PRINT 訊息。

  • 如果 PRF_OWNED 已設定,請傳送每個可見的擁有視窗一則 WM_PRINT 訊息。

CWnd::PrintClient

呼叫此成員函式,以在指定的裝置內容中繪製任何視窗(通常是印表機裝置內容)。

void PrintClient(
    CDC* pDC,
    DWORD dwFlags) const;

參數

pDC
裝置內容的指標。

dwFlags
指定繪圖選項。 此參數可以是下列其中一或多個旗標:

  • PRF_CHECKVISIBLE 只有當視窗可見時,才會繪製視窗。

  • PRF_CHILDREN 繪製所有可見的子視窗。

  • PRF_CLIENT 繪製視窗的工作區。

  • PRF_ERASEBKGND 在繪製視窗之前清除背景。

  • PRF_NONCLIENT 繪製視窗的非工作區。

  • PRF_OWNED 繪製所有擁有的視窗。

CWnd::PrintWindow

將視覺視窗複製到指定的裝置內容,通常是印表機 DC。

BOOL PrintWindow(
    CDC* pDC,
    UINT nFlags) const;

參數

pDC
要列印至之裝置內容的指標。

nFlags
指定繪圖選項。 如需可能值的清單,請參閱 PrintWindow

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 PrintWindow ,如 Windows SDK 中所述。

CWnd::RedrawWindow

更新指定視窗工作區中指定的矩形或區域。

BOOL RedrawWindow(
    LPCRECT lpRectUpdate = NULL,
    CRgn* prgnUpdate = NULL,
    UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);

參數

lpRectUpdate
RECT 指向包含更新矩形座標的結構。 如果 prgnUpdate 包含有效的區域控制碼,則會忽略此參數。

prgnUpdate
識別更新區域。 如果 和 lpRectUpdateNULL 都是 prgnUpdate ,則會將整個工作區新增至更新區域。

flags
下列旗標可用來使視窗失效:

  • RDW_ERASE 讓視窗在重新繪製視窗時收到 WM_ERASEBKGND 訊息。 RDW_INVALIDATE也必須指定 旗標;否則RDW_ERASE沒有作用。

  • RDW_FRAME 使視窗的非用戶端區域的任何部分與更新區域交集,以接收 WM_NCPAINT 訊息。 RDW_INVALIDATE也必須指定 旗標,否則 RDW_FRAME 不會有任何作用。

  • RDW_INTERNALPAINTWM_PAINT不論視窗是否包含不正確區域,都會將訊息張貼至視窗。

  • RDW_INVALIDATE 無效 lpRectUpdateprgnUpdate (只有一個可能不是 NULL )。 如果兩者都是 NULL ,整個視窗就會失效。

下列旗標可用來驗證視窗:

  • RDW_NOERASE 隱藏任何擱置 WM_ERASEBKGND 的訊息。

  • RDW_NOFRAME 隱藏任何擱置 WM_NCPAINT 的訊息。 這個旗標必須與 搭配 RDW_VALIDATE 使用,而且通常搭配 RDW_NOCHILDREN 使用。 此選項應該小心使用,因為它可能會防止視窗的某些部分正確繪製。

  • RDW_NOINTERNALPAINT 隱藏任何擱置的內部 WM_PAINT 訊息。 此旗標不會影響 WM_PAINT 從無效區域產生的訊息。

  • RDW_VALIDATElpRectUpdate驗證 或 prgnUpdate (只有一個可能不是 NULL )。 如果兩者都是 NULL ,則會驗證整個視窗。 此旗標不會影響內部 WM_PAINT 訊息。

發生重繪時,下列旗標會控制。 除非指定其中一個位,否則函式不會執行 RedrawWindow 小畫家。

  • RDW_ERASENOW在函式傳回之前,讓受影響的視窗(如 和 RDW_NOCHILDREN 旗標所指定 RDW_ALLCHILDREN )接收 WM_NCPAINTWM_ERASEBKGND 訊息。 WM_PAINT 訊息會延遲。

  • RDW_UPDATENOW讓受影響的視窗(如 和 RDW_NOCHILDREN 旗標所指定 RDW_ALLCHILDREN )在函式傳回之前,視需要接收 WM_NCPAINTWM_ERASEBKGNDWM_PAINT 訊息。

根據預設,受 RedrawWindow 函式影響的視窗取決於指定的視窗 WS_CLIPCHILDREN 是否有樣式。 視窗的 WS_CLIPCHILDREN 子視窗不會受到影響。 不過,在遇到視窗之前 WS_CLIPCHILDREN ,不是 WS_CLIPCHILDREN 視窗的視窗會以遞迴方式驗證或失效。 下列旗標會控制哪些視窗受到 函式 RedrawWindow 的影響:

  • RDW_ALLCHILDREN 在重繪作業中包含子視窗,如果有的話。

  • RDW_NOCHILDREN 從重繪作業排除子視窗,如果有的話。

傳回值

如果已成功重新繪製視窗,則為非零;否則為 0。

備註

RedrawWindow當成員函式用來使桌面視窗的一部分失效時,該視窗不會收到 WM_PAINT 訊息。 若要重新修補桌面,應用程式應該使用 CWnd::ValidateRgn 、、 CWnd::InvalidateRgnCWnd::UpdateWindowRedrawWindow

CWnd::ReflectChildNotify

架構會從 OnChildNotify 呼叫此訊息函式。

BOOL ReflectChildNotify(
    UINT message,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* pResult);

參數

message
指定要反映的訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

pResult
父視窗所產生子視窗所產生的結果。 可以是 NULL

傳回值

TRUE 如果已反映訊息,則為 ;否則 FALSE 為 。

備註

它是可反映 message 其來源的協助程式函式。

反思訊息會直接傳送至 CWnd::OnWndMsgCCmdTarget::OnCmdMsg

如需訊息反映的詳細資訊,請參閱 處理反思訊息

CWnd::ReflectLastMsg

架構會呼叫此成員函式,以將最後一則訊息反映至子視窗。

static BOOL PASCAL ReflectLastMsg(
    HWND hWndChild,
    LRESULT* pResult = NULL);

參數

hWndChild
子視窗的控制碼。

pResult
父視窗所產生子視窗所產生的結果。 可以是 NULL

傳回值

如果已處理訊息,則為非零;否則為 0。

備註

如果 所 hWndChild 識別的視窗是永久對應中的 OLE 控制項或視窗,則此成員函式會呼叫 SendChildNotifyLastMsg

如需訊息反映的詳細資訊,請參閱 處理反思訊息

CWnd::ReleaseDC

釋放裝置內容,釋放它以供其他應用程式使用。

int ReleaseDC(CDC* pDC);

參數

pDC
識別要釋放的裝置內容。

傳回值

如果成功則為非零;否則為 0。

備註

成員函式的效果 ReleaseDC 取決於裝置內容類型。

應用程式必須針對 ReleaseDC 成員函式的每個呼叫 GetWindowDC 以及成員函式的每個呼叫,呼叫成員函式來呼叫 GetDC 成員函式。

CWnd::RepositionBars

呼叫 以重新置放和調整視窗工作區中的控制列大小。

void RepositionBars(UINT nIDFirst,
    UINT nIDLast,
    UINT nIDLeftOver,
    UINT nFlag = reposDefault,
    LPRECT lpRectParam = NULL,
    LPCRECT lpRectClient = NULL,
    BOOL bStretch = TRUE) ;

參數

nIDFirst
要重新置放和調整大小之控制列範圍中第一個的識別碼。

nIDLast
要重新調整和調整大小之控制列範圍中最後一個的識別碼。

nIDLeftOver
指定填滿工作區其餘區域的窗格識別碼。

nFlag
可以有下列其中一個值:

  • CWnd::reposDefault 執行控制列的配置。 lpRectParam 未使用 ,而且可以是 NULL

  • CWnd::reposQuery 未完成控制列的配置;相反 lpRectParam 地,會使用工作區的大小初始化,就好像已實際完成版面配置一樣。

  • CWnd::reposExtra 將 的值 lpRectParam 新增至 的 nIDLast 工作區,也會執行版面配置。

lpRectParam
指向 RECT 結構 ;其使用方式取決於 的值 nFlag

lpRectClient
指向 RECT 包含可用工作區的結構 。 如果 NULL 為 ,則會使用視窗的工作區。

bStretch
指出長條是否應該延展至框架的大小。

備註

nIDFirstnIDLast 參數會定義要重新置放在工作區中的控制列識別碼範圍。 參數 nIDLeftOver 會指定子視窗的識別碼(通常是檢視),此視窗會重新置放並調整大小,以填滿未由控制列填滿的工作區其餘部分。

CWnd::RunModalLoop

呼叫此成員函式以擷取、轉譯或分派訊息,直到 ContinueModalFALSE 回 為止。

int RunModalLoop(DWORD dwFlags = 0);

參數

dwFlags
指定要傳送的 Windows 訊息。 可以是下列值之一:

  • MLF_NOIDLEMSG 請勿將訊息傳送 WM_ENTERIDLE 至父系。

  • MLF_NOKICKIDLE 請勿將訊息傳送 WM_KICKIDLE 至視窗。

  • MLF_SHOWONIDLE 當訊息佇列閒置時顯示視窗。

傳回值

指定傳遞至 EndModalLoop 成員函式的參數值 nResult ,然後用來結束強制回應迴圈。

備註

根據預設, ContinueModal 會在 FALSE 呼叫 之後 EndModalLoop 傳回 。 傳回提供給 nResultEndModalLoop 的值。

CWnd::ScreenToClient

將畫面上指定的點或矩形的螢幕座標,轉換為用戶端座標。

void ScreenToClient(LPPOINT lpPoint) const;  void ScreenToClient(LPRECT lpRect) const;

參數

lpPoint
CPoint指向包含要轉換之螢幕座標的物件或 POINT 結構

lpRect
CRect指向包含要轉換之螢幕座標的物件或 RECT 結構

備註

成員 ScreenToClient 函式會將 或 lpRectlpPoint 提供的螢幕座標取代為用戶端座標。 新座標相對於工作區左上角 CWnd

範例

請參閱 的 CListCtrl::GetItemRect 範例。

CWnd::ScrollWindow

捲動目前 CWnd 物件的工作區內容。

void ScrollWindow(
    int xAmount,
    int yAmount,
    LPCRECT lpRect = NULL,
    LPCRECT lpClipRect = NULL);

參數

xAmount
指定水準捲動的裝置單位數量。 此參數必須是負值,才能向左捲動。

yAmount
指定垂直捲動的裝置單位數量。 此參數必須是負值,才能向上捲動。

lpRect
指向 CRect 物件或 RECT 結構 ,指定要捲動之工作區的部分。 如果 lpRectNULL ,則會捲動整個工作區。 如果游標矩形與滾動矩形交集,則會重新置放插入號。

lpClipRect
CRect指向物件或 RECT 結構,指定要捲動的裁剪矩形。 只會捲動此矩形內的位。 即使這些位位於矩形內, lpRect 此矩形以外的位也不會受到影響。 如果 lpClipRectNULL ,則捲動矩形上不會執行裁剪。

備註

如果插入號在捲動中 CWndScrollWindow 則會自動隱藏插入號以防止清除插入號,然後在捲動完成後還原插入號。 插入號位置會據以調整。

成員函式所 ScrollWindow 發現的區域不會重新繪製,但會合並到目前 CWnd 物件的更新區域。 應用程式最終會收到一則 WM_PAINT 訊息,通知其區域需要重繪。 若要在捲動完成時重新畫出發現的區域,請在呼叫 ScrollWindow 之後立即呼叫 UpdateWindow 成員函式。

如果 lpRectNULL ,則視窗中任何子視窗的位置會依 和 yAmountxAmount 指定的數量位移,而 中 CWnd 任何無效(未配對)區域也會位移。 ScrollWindow當 是 NULLlpRect ,速度較快。

如果 lpRect 不是 NULL ,則子視窗的位置不會變更,且 中的 CWnd 無效區域不會位移。 若要避免在 不是 時 lpRect 更新問題,請在呼叫 ScrollWindow 之前呼叫 UpdateWindow 成員函式以重新重繪 CWndNULL

CWnd::ScrollWindowEx

捲動視窗工作區的內容。

int ScrollWindowEx(
    int dx,
    int dy,
    LPCRECT lpRectScroll,
    LPCRECT lpRectClip,
    CRgn* prgnUpdate,
    LPRECT lpRectUpdate,
    UINT flags);

參數

dx
指定水準捲動的裝置單位數量。 此參數必須有負值,才能向左捲動。

dy
指定垂直捲動的裝置單位數量。 此參數必須有負值才能向上捲動。

lpRectScroll
指向 RECT 結構 ,指定要捲動之工作區的部分。 如果此參數為 NULL ,則會捲動整個工作區。

lpRectClip
指向 RECT 結構,指定要捲動的裁剪矩形。 此結構優先于 所 lpRectScroll 指向的矩形。 只會捲動此矩形內的位。 即使這些位位於矩形內, lpRectScroll 此矩形以外的位也不會受到影響。 如果此參數為 NULL ,則滾動矩形上不會執行裁剪。

prgnUpdate
識別已修改以保存因捲動而使區域失效的區域。 此參數可以是 NULL

lpRectUpdate
RECT指向結構,這個結構將接收捲動使矩形失效的界限。 此參數可以是 NULL

flags
可以有下列其中一個值:

  • SW_ERASE 使用 SW_INVALIDATE 指定時,將訊息傳送 WM_ERASEBKGND 至視窗,以清除新失效的區域。

  • SW_INVALIDATE 使捲動之後所識別 prgnUpdate 的區域失效。

  • SW_SCROLLCHILDREN捲動與 和 中所 dxdy 指定圖元數目相交之矩形 lpRectScroll 的所有子視窗。 Windows 會將訊息傳送 WM_MOVE 至所有相交 lpRectScroll 的子視窗,即使它們不會移動也一樣。 當子視窗捲動且游標矩形與捲動矩形交集時,插入號會重新置放。

傳回值

如果函式成功,則傳回值為 SIMPLEREGION (矩形無效區域)、 COMPLEXREGION (非矩形無效區域、重迭矩形或 NULLREGION 無無效區域),否則傳回值為 ERROR

備註

此函式類似于 函 ScrollWindow 式,具有一些額外的功能。

如果未 SW_INVALIDATE 指定 和 SW_ERASE ,則 ScrollWindowEx 成員函式不會使捲動離開的區域失效。 如果已設定其中一個旗標, ScrollWindowEx 則會使這個區域失效。 區域不會更新, UpdateWindow 直到應用程式呼叫成員函式、呼叫 RedrawWindow 成員函式(指定 RDW_UPDATENOWRDW_ERASENOW ),或從應用程式佇列擷取 WM_PAINT 訊息為止。

如果視窗具有 WS_CLIPCHILDREN 樣式,則 所 prgnUpdate 指定的傳回區域,並 lpRectUpdate 代表必須更新之捲動視窗的總區域,包括需要更新之子視窗中的任何區域。

SW_SCROLLCHILDREN如果指定旗標,如果子視窗的一部分捲動,Windows 將不會正確更新畫面。 位於來源矩形外部的捲動子視窗部分將不會清除,也不會在其新目的地中正確繪製。 使用 Windows 函 DeferWindowPos 式來移動未完全位於矩形內的 lpRectScroll 子視窗。 如果已設定旗標, SW_SCROLLCHILDREN 且插入號矩形與捲動矩形交集,則游標會重新置放。

不論視窗是否具有 或 類別樣式,所有輸入和輸出座標都 lpRectScrolllpRectClipprgnUpdatelpRectUpdate 假設為用戶端座標。 CS_CLASSDCCS_OWNDC LPtoDP如有需要,請使用 和 DPtoLP Windows 函式來回轉換邏輯座標。

CWnd::SendChildNotifyLastMsg

架構會呼叫此成員函式,以便從父視窗將通知訊息提供給子視窗,讓子視窗可以處理工作。

BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);

參數

pResult
父視窗所產生子視窗所產生的結果。

傳回值

如果子視窗已處理傳送至其父代的訊息,則為非零;否則為 0。

備註

SendChildNotifyLastMsg 如果目前訊息是反映的訊息,則會將目前訊息傳送至來源。

如需訊息反映的詳細資訊,請參閱 處理反思訊息

CWnd::SendDlgItemMessage

將訊息傳送至控制項。

LRESULT SendDlgItemMessage(
    int nID,
    UINT message,
    WPARAM wParam = 0,
    LPARAM lParam = 0);

參數

nID
指定將接收訊息之對話方塊控制項的識別碼。

message
指定要傳送的訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

傳回值

指定控制項視窗程式所傳回的值,如果找不到控制項,則為 0。

備註

成員 SendDlgItemMessage 函式在處理訊息之前不會傳回。

使用 SendDlgItemMessage 與取得 CWnd 指定控制項的 * 和呼叫 SendMessage 成員函式相同。

範例

void CMyDlg::SetSpinRange()
{
   //set the min and max range of the up/down or spin control
   SendDlgItemMessage(IDC_SPIN1, UDM_SETRANGE, 0, (LPARAM)MAKELONG(8, 1));
}

CWnd::SendMessage

將指定的訊息傳送至此視窗。

LRESULT SendMessage(
    UINT message,
    WPARAM wParam = 0,
    LPARAM lParam = 0);

參數

message
指定要傳送的訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

傳回值

訊息處理的結果;其值取決於傳送的訊息。

備註

成員 SendMessage 函式會直接呼叫視窗程式,而且在處理該視窗程式之前不會傳回 。 這與 PostMessage 成員函式相反,該函式會將訊息放入視窗的訊息佇列中,並立即傳回。

範例

void CAboutDlg::OnPaint()
{
   // This code, normally emitted by the Application Wizard for a dialog-
   // based project for the dialog's WM_PAINT handler, runs only if the
   // window is iconic. The window erases the icon's area, then
   // paints the icon referenced by m_hIcon.
   if (IsIconic())
   {
      CPaintDC dc(this); // device context for painting

      SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);

      // Center icon in client rectangle
      int cxIcon = GetSystemMetrics(SM_CXICON);
      int cyIcon = GetSystemMetrics(SM_CYICON);
      CRect rect;
      GetClientRect(&rect);
      int x = (rect.Width() - cxIcon + 1) / 2;
      int y = (rect.Height() - cyIcon + 1) / 2;

      // Draw the icon
      dc.DrawIcon(x, y, m_hIcon);
   }
   else
   {
      CDialog::OnPaint();
   }
}

CWnd::SendMessageToDescendants

呼叫此成員函式,將指定的 Windows 訊息傳送至所有子代視窗。

void SendMessageToDescendants(
    UINT message,
    WPARAM wParam = 0,
    LPARAM lParam = 0,
    BOOL bDeep = TRUE,
    BOOL bOnlyPerm = FALSE);

參數

message
指定要傳送的訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

bDeep
指定要搜尋的層級。 如果 TRUE 為 ,則遞迴地搜尋所有子系;如果 FALSE 為 ,則只搜尋立即子系。

bOnlyPerm
指定暫存視窗是否會接收訊息。 如果 TRUE 為 ,則臨時視窗可以接收訊息;如果 FALSE 為 ,則只有永久視窗接收訊息。 如需暫存視窗的詳細資訊,請參閱 技術附注 3

備註

如果 bDeepFALSE ,則訊息只會傳送至視窗的直接子系,否則訊息會傳送至所有子系視窗。

如果 bDeepbOnlyPermTRUE ,搜尋會繼續在暫存視窗下方。 在此情況下,只有在搜尋期間遇到永久視窗才會接收訊息。 如果 bDeepFALSE ,訊息只會傳送至視窗的直接子系。

範例

// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.

// change font of child controls of a dialog
LOGFONT lf = {0};
// redraw of child controls not needed in OnInitDialog
// since controls aren't drawn yet.
short int fRedraw = FALSE;

lf.lfHeight = 15; // Request a 15-pixel-high font

// with face name "Arial".
wcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"));

m_font.CreateFontIndirect(&lf); // Create the font.

SendMessageToDescendants(WM_SETFONT,
                         (WPARAM)m_font.m_hObject, //handle to font
                         MAKELONG((WORD)fRedraw, 0),
                         FALSE); // send to all descendants(TRUE) or
                                 // just children of *this (FALSE)

CWnd::SendNotifyMessage

將指定的訊息傳送至視窗。

BOOL SendNotifyMessage(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

參數

message
指定要傳送的訊息。

wParam
指定其他訊息相依資訊。

lParam
指定其他訊息相依資訊。

傳回值

如果函式成功則為非零,否則為 0。

備註

如果視窗是由呼叫執行緒所建立, SendNotifyMessage 請呼叫視窗的視窗程式,而且在視窗程式處理訊息之前不會傳回。 如果視窗是由不同的執行緒所建立, SendNotifyMessage 請將訊息傳遞至視窗程式並立即傳回;它不會等待視窗程式完成處理訊息。

CWnd::SetActiveWindow

CWnd 使用中視窗成為使用中視窗。

CWnd* SetActiveWindow();

傳回值

先前使用中的視窗。

傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

SetActiveWindow成員函式應該小心使用,因為它可讓應用程式任意接管使用中的視窗和輸入焦點。 一般而言,Windows 會負責所有啟用。

CWnd::SetCapture

不論游標的位置為何,所有後續的滑鼠輸入都會傳送至目前 CWnd 物件。

CWnd* SetCapture();

傳回值

先前收到所有滑鼠輸入之視窗物件的指標。 NULL如果沒有這樣的視窗,則為 。 傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

當不再需要所有滑鼠輸入時 CWnd ,應用程式應該呼叫 函 ReleaseCapture 式,讓其他視窗可以接收滑鼠輸入。

擷取滑鼠輸入時,不會傳送任何 WM_NCHITTESTWM_SETCURSOR 訊息至使用中視窗。

CWnd::SetCaretPos

設定插入號的位置。

static void PASCAL SetCaretPos(POINT point);

參數

point
指定插入號的新 x 和 y 座標(在用戶端座標中)。

備註

只有當 SetCaretPos 成員函式是由目前工作中視窗所擁有時,才會移動插入號。 SetCaretPos 會移動插入號是否隱藏插入號。

插入號是共用資源。 如果視窗沒有插入號,則不應該移動插入號。

範例

// The following code snippet shows a caret when the left
// mouse button is pressed, and sets the caret's position to
// the cursor's position.
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
   //create a solid caret, the width is 2, the length is 20.
   CreateSolidCaret(2, 20);

   SetCaretPos(point);
   ShowCaret();

   CView::OnLButtonDown(nFlags, point);
}

CWnd::SetClipboardViewer

每當剪貼簿的內容變更時,就會將此視窗新增至通知的視窗鏈結(透過 WM_DRAWCLIPBOARD 訊息方式)。

HWND SetClipboardViewer();

傳回值

如果成功,則為剪貼簿檢視器鏈結中下一個視窗的控制碼。 應用程式應該儲存此控制碼(它可以儲存為成員變數),並在回應剪貼簿檢視器鏈結訊息時使用它。

備註

屬於剪貼簿檢視器鏈結一部分的視窗必須回應 WM_DRAWCLIPBOARDWM_CHANGECBCHAINWM_DESTROY 訊息,並將訊息傳遞至鏈結中的下一個視窗。

此成員函式會將 WM_DRAWCLIPBOARD 訊息傳送至視窗。 由於剪貼簿檢視器鏈結中下一個視窗的控制碼尚未傳回,因此應用程式不應該在呼叫 SetClipboardViewer 期間傳遞 WM_DRAWCLIPBOARD 它收到的訊息。

若要從剪貼簿檢視器鏈結中移除本身,應用程式必須呼叫 ChangeClipboardChain 成員函式。

CWnd::SetDlgCtrlID

將視窗的視窗識別碼或控制項識別碼設定為新的值。

int SetDlgCtrlID(int nID);

參數

nID
要為控制項識別碼設定的新值。

傳回值

如果成功,則為視窗的上一個識別碼;否則為 0。

備註

視窗可以是任何子視窗,而不只是對話方塊中的控制項。 視窗不可以是最上層視窗。

CWnd::SetDlgItemInt

將對話方塊中指定控制項的文字設定為指定整數值的字串表示。

void SetDlgItemInt(
    int nID,
    UINT nValue,
    BOOL bSigned = TRUE);

參數

nID
指定要變更之控制項的整數識別碼。

nValue
指定用來產生專案文字的整數值。

bSigned
指定整數值是帶正負號還是不帶正負號。 如果此參數為 TRUEnValue 則會簽署。 如果此參數是 TRUEnValue 小於 0,則會在字串中的第一個數位之前放置減號。 如果此參數為 FALSEnValue 則為不帶正負號。

備註

SetDlgItemIntWM_SETTEXT 訊息傳送至指定的控制項。

範例

請參閱 的 CWnd::SetDlgItemText 範例。

CWnd::SetDlgItemText

設定視窗或對話方塊所擁有的控制項標題或文字。

void SetDlgItemText(
    int nID,
    LPCTSTR lpszString);

參數

nID
識別要設定其文字的控制項。

lpszString
CString指向物件或以 Null 結束的字串,其中包含要複製到控制項的文字。

備註

SetDlgItemTextWM_SETTEXT 訊息傳送至指定的控制項。

範例

// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.

// Initialize dialog controls
SetDlgItemText(IDC_EDITNAME, _T("Type in text"));
SetDlgItemInt(IDC_EDITNUM, 100);

CWnd::SetForegroundWindow

將建立視窗的執行緒放置到前景並啟動視窗。

BOOL SetForegroundWindow();

傳回值

如果函式成功則為非零,否則為 0。

備註

鍵盤輸入會導向至視窗,而使用者會變更各種視覺提示。 前景視窗是使用者目前正在運作的視窗。 前景視窗僅適用于最上層視窗(框架視窗或對話方塊)。

範例

請參閱 的 CWnd::FindWindow 範例。

CWnd::SetFocus

宣告輸入焦點。

CWnd* SetFocus();

傳回值

先前具有輸入焦點之視窗物件的指標。 NULL如果沒有這樣的視窗,則為 。 傳回的指標可能是暫時的,不應該儲存。

備註

輸入焦點會將所有後續的鍵盤輸入導向至此視窗。 任何先前具有輸入焦點的視窗都會遺失它。

成員 SetFocus 函式會將 WM_KILLFOCUS 訊息傳送至失去輸入焦點的視窗,並將 WM_SETFOCUS 訊息傳送至接收輸入焦點的視窗。 它也會啟動視窗或其父代。

如果目前視窗為使用中,但沒有焦點(亦即沒有焦點),則按下的任何按鍵都會產生訊息 WM_SYSCHARWM_SYSKEYDOWNWM_SYSKEYUP

CWnd::SetFont

WM_SETFONT 訊息傳送至視窗以使用指定的字型。

void SetFont(
    CFont* pFont,
    BOOL bRedraw = TRUE);

參數

pFont
指向 CFont 物件的指標。

bRedraw
TRUE表示視窗在處理訊息之後立即重新繪製,否則 FALSEWM_SETFONT

備註

除非視窗處理訊息, WM_SETFONT 否則這個方法不會有任何作用。 許多衍生自 CWnd 此訊息的 MFC 類別,因為它們會附加至預先定義的視窗類別,其中包含訊息的 WM_SETFONT 訊息處理常式。 若要使用此方法,衍生自 CWnd 的類別必須定義訊息的方法處理常式 WM_SETFONT

CWnd::SetIcon

呼叫這個成員函式,將控制碼設定為特定的圖示,如 所 hIcon 識別。

HICON SetIcon(
    HICON hIcon,
    BOOL bBigIcon);

參數

hIcon
上一個圖示的控制碼。

bBigIcon
如果 TRUE ,則指定 32 圖元的 32 圖元圖示;如果 FALSE ,則指定 16 圖元 x 16 圖元圖示。

傳回值

圖示的控制碼。

備註

註冊視窗類別時,它會選取圖示。

範例

請參閱 的 CWnd::GetSystemMenu 範例。

CWnd::SetLayeredWindowAttributes

設定分層視窗的不透明和透明色鍵。

BOOL SetLayeredWindowAttributes(
    COLORREF crKey,
    BYTE bAlpha,
    DWORD dwFlags);

參數

crKey
COLORREF值的指標,指定撰寫分層視窗時要使用的透明度色彩索引鍵。 以這個色彩繪製的視窗所繪製的所有圖元都會是透明的。 若要產生 COLORREF ,請使用 RGB 宏。

bAlpha
用來描述分層視窗不透明度的 Alpha 值。 如需詳細資訊,請參閱 SourceConstantAlpha 結構的成員 BLENDFUNCTION 。 當 bAlpha 為 0 時,視窗會完全透明。 當 bAlpha 為 255 時,視窗不透明。

dwFlags
指定要採取的動作。 此參數可以是下列其中一或多個值。 如需可能值的清單,請參閱 SetLayeredWindowAttributes

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 SetLayeredWindowAttributes ,如 Windows SDK 中所述。

CWnd::SetMenu

將目前的功能表設定為指定的功能表。

BOOL SetMenu(CMenu* pMenu);

參數

pMenu
識別新的功能表。 如果此參數為 NULL ,則會移除目前的功能表。

傳回值

如果功能表已變更,則為非零;否則為 0。

備註

讓視窗重新繪製以反映功能表變更。

SetMenu 不會終結先前的功能表。 應用程式應該呼叫 CMenu::DestroyMenu 成員函式來完成這項工作。

範例

請參閱 的 CMenu::LoadMenu 範例。

CWnd::SetOwner

將目前視窗的擁有者設定為指定的視窗物件。

void SetOwner(CWnd* pOwnerWnd);

參數

pOwnerWnd
識別視窗物件的新擁有者。 如果此參數為 NULL ,則視窗物件沒有擁有者。

備註

然後,此擁有者可以從目前的視窗物件接收命令訊息。 根據預設,目前視窗的父代是其擁有者。

建立與視窗階層無關之視窗物件之間的連線通常很有用。 例如, CToolBar 將通知傳送給其擁有者,而不是傳送至其父系。 這可讓工具列成為一個視窗的子系(例如 OLE 容器應用程式視窗),同時將通知傳送至另一個視窗(例如就地框架視窗)。 此外,當伺服器視窗在就地編輯期間停用或啟用時,框架視窗所擁有的任何視窗就會隱藏或顯示。 這個擁有權會明確設定,並呼叫 SetOwner

此函式的擁有權概念與 的 GetWindow 擁有權概念不同。

CWnd::SetParent

變更子視窗的父視窗。

CWnd* SetParent(CWnd* pWndNewParent);

參數

pWndNewParent
識別新的父視窗。

傳回值

如果成功,則為上一個父視窗物件的指標。 傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

如果可以看到子視窗,Windows 會執行適當的重繪和重繪。

CWnd::SetProperty

呼叫這個成員函式,以設定 所 dwDispID 指定的 OLE 控制項屬性。

void AFX_CDECL SetProperty(
    DISPID dwDispID,
    VARTYPE vtProp, ...);

參數

dwDispID
識別要設定的屬性。

vtProp
指定要設定的屬性類型。 如需可能的值,請參閱 的一 COleDispatchDriver::InvokeHelper 節。

...
vtProp指定的類型單一參數。

備註

注意

這個函式應該只在代表 OLE 控制項的物件上 CWnd 呼叫。

如需搭配 OLE 控制項容器使用此成員函式的詳細資訊,請參閱 ActiveX 控制項容器:在 ActiveX 控制項容器 中設計 ActiveX 控制項一文

CWnd::SetRedraw

應用程式會呼叫 SetRedraw 以允許重新繪製變更,或防止重新繪製變更。

void SetRedraw(BOOL bRedraw = TRUE);

參數

bRedraw
指定重繪旗標的狀態。 如果此參數為 TRUE ,則會設定重繪旗標;如果 FALSE 為 ,則會清除旗標。

備註

此成員函式會設定或清除重繪旗標。 清除重繪旗標時,在每次變更之後都不會更新內容,而且在重繪旗標設定之前不會重新繪製。 例如,需要將數個專案新增至清單方塊的應用程式可以清除重繪旗標、新增專案,然後設定重繪旗標。 最後,應用程式可以呼叫 InvalidateInvalidateRect 成員函式,讓清單方塊重新繪製。

範例

// Updating a control or window with large amounts of data may cause
// flicker. In such cases it may be better to turn off drawing

//m_list is a member of type CListCtrl
m_List.SetRedraw(FALSE); // turn drawing off regardless of list mode

//
// Update control
//

m_List.SetRedraw(TRUE); // turn drawing back on and update the window

// invalidate the entire control, force painting
m_List.Invalidate();
m_List.UpdateWindow();

CWnd::SetScrollInfo

呼叫這個成員函式,以設定結構在捲軸上維護的資訊 SCROLLINFO

BOOL SetScrollInfo(
    int nBar,
    LPSCROLLINFO lpScrollInfo,
    BOOL bRedraw = TRUE);

參數

nBar
指定捲軸是視窗非工作區的控制項或一部分。 如果它是非工作區的一部分,nBar 也會指出捲軸是水準、垂直或兩者。 它必須是下列其中一項:

  • SB_CTL 包含捲軸控制項的參數。 資料 m_hWnd 成員必須是捲軸控制項的控制碼。

  • SB_HORZ 指定視窗是水準捲軸。

  • SB_VERT 指定視窗是垂直捲動條。

lpScrollInfo
結構的指標 SCROLLINFO 。 如需此結構的詳細資訊,請參閱 Windows SDK。

bRedraw
指定是否應重新繪製捲軸以反映新位置。 如果 bRedrawTRUE ,則會重新繪製捲軸。 FALSE如果是 ,則不會重新繪製。 捲軸預設會重新繪製。

傳回值

如果成功,則傳回 為 TRUE 。 否則為 FALSE

備註

結構 SCROLLINFO 包含捲軸的相關資訊,包括捲軸的下限和最大捲動位置、頁面大小,以及捲動方塊的位置(拇指)。 SCROLLINFO如需變更結構預設值的詳細資訊,請參閱 Windows SDK 中的結構主題。

指出捲軸位置的 MFC Windows 訊息處理常式, CWnd::OnHScrollCWnd::OnVScroll 僅提供 16 位的位置資料。 GetScrollInfo 並提供 SetScrollInfo 32 位的捲軸位置資料。 因此,應用程式可以在處理 CWnd::OnHScrollCWnd::OnVScroll 時呼叫 GetScrollInfo ,以取得 32 位捲軸位置資料。

注意

CWnd::GetScrollInfo 可讓應用程式使用 32 位捲軸位置。

CWnd::SetScrollPos

設定捲動方塊的目前位置,如果要求,請重新繪製捲軸以反映捲動方塊的新位置。

int SetScrollPos(
    int nBar,
    int nPos,
    BOOL bRedraw = TRUE);

參數

nBar
指定要設定的捲軸。 此參數可以是下列其中一項:

  • SB_HORZ 設定捲動方塊在視窗的水準捲軸中的位置。

  • SB_VERT 設定捲動方塊在視窗垂直捲動條中的位置。

nPos
指定捲動方塊的新位置。 它必須位於捲動範圍內。

bRedraw
指定是否應該重新繪製捲軸以反映新的捲動方塊位置。 如果此參數為 TRUE ,則會重新繪製捲軸;如果 FALSE 為 ,則不會重新繪製捲軸。

傳回值

捲動方塊的上一個位置。

備註

FALSE每當捲軸被後續呼叫另一個函式重新繪製時,將 設定 bRedraw 為 會很有用。

CWnd::SetScrollRange

設定給定捲軸的最小和最大位置值。

void SetScrollRange(
    int nBar,
    int nMinPos,
    int nMaxPos,
    BOOL bRedraw = TRUE);

參數

nBar
指定要設定的捲軸。 此參數可以是下列其中一個值:

  • SB_HORZ 設定視窗的水準捲軸範圍。

  • SB_VERT 設定視窗垂直捲動條的範圍。

nMinPos
指定最小捲動位置。

nMaxPos
指定捲動位置上限。

bRedraw
指定是否應該重新繪製捲軸以反映變更。 如果 bRedrawTRUE ,則會重繪捲軸;如果 FALSE 為 ,則不會重新繪製捲軸。

備註

它也可以用來隱藏或顯示標準捲軸。

應用程式不應該呼叫此函式,以在處理捲軸通知訊息時隱藏捲軸。

如果 的呼叫緊接在對成員函式的呼叫 SetScrollPosSetScrollRange 之後,成員函式中的 SetScrollPos 參數應該是 0, bRedraw 以防止捲軸被繪製兩次。

標準捲軸的預設範圍是 0 到 100。 捲軸控制項的預設範圍是空的( nMinPosnMaxPos 值為 0)。 和 nMaxPosnMinPos 指定值之間的差異不得大於 INT_MAX

CWnd::SetTimer

安裝系統計時器。

UINT_PTR SetTimer(
    UINT_PTR nIDEvent,
    UINT nElapse,
    void (CALLBACK* lpfnTimer)(HWND,
    UINT,
    UINT_PTR,
    DWORD));

參數

nIDEvent
指定非零計時器識別碼。 如果計時器識別碼是唯一的,則會由 SetTimer 傳回這個相同的值。 否則, SetTimer 會判斷新的唯一值,並傳回該值。 對於具有回呼函式的視窗計時器,值必須是唯一 NULL 的,僅適用于與目前視窗相關聯的其他視窗計時器。 對於回呼計時器,值對於所有進程中的所有計時器而言都必須是唯一的。 因此,當您建立回呼計時器時,傳回的值可能會與您指定的值不同。

nElapse
以毫秒為單位指定逾時值或間隔。

lpfnTimer
指定處理 WM_TIMER 訊息的應用程式提供 TimerProc 回呼函式位址。 如果此參數是 NULL ,訊息 WM_TIMER 會放在應用程式的訊息佇列中,並由 物件處理 CWnd

傳回值

如果函式成功,則為新計時器的計時器識別碼。 這個值不一定等於透過 nIDEvent 參數傳入的值。 應用程式應該一律將傳回值傳遞至 KillTimer 成員函式,以終止計時器。 如果成功,則為非零;否則為 0。

備註

指定間隔值,而且每次間隔經過時,系統都會將訊息張貼 WM_TIMER 至安裝應用程式的安裝訊息佇列,或將訊息傳遞至應用程式定義的 TimerProc 回呼函式。

lpfnTimer 呼函式不需要命名 TimerProc ,但必須宣告為靜態,並定義如下。

void CALLBACK TimerProc(
    HWND hWnd,   // handle of CWnd that called SetTimer
    UINT nMsg,   // WM_TIMER
    UINT_PTR nIDEvent,   // timer identification
    DWORD dwTime    // system time);

範例

此範例會使用 CWnd::SetTimerCWnd::OnTimerCWnd::KillTimer 來處理 WM_TIMER 訊息。 第一個 WM_TIMER 計時器設定為每隔 2 秒 OnStartTimer 將訊息傳送至主框架視窗。 OnTimer事件處理常式會處理 WM_TIMER 主框架視窗的訊息。 此方法會每隔 2 秒讓電腦喇叭發出嗶聲。 第二個計時器每隔 3.75 秒就會將訊息傳送至回呼函式。 OnStopTimer 會呼叫每個計時器識別碼來 CWnd::KillTimer 停止這兩個計時器。

void CMainFrame::OnStartTimer()
{
   // This timer uses a WM_TIMER message, not a callback.
   // Therefore, the timer is specific to this window.
   // m_nWindowTimer is a UINT_PTR field.
   m_nWindowTimer = SetTimer(1, 2000, NULL);

   // For this demo, we specify an interval that won't overlap
   // with the window timer.
   m_nCallbackTimer = SetTimer(2, 3750, &CMainFrame::MyTimerProc);

   // See whether we got the ID we requested in the first parameter.
#ifdef _DEBUG
   CString str;
   str.Format(_T("m_ncallbackTImer ID = %d"), m_nCallbackTimer);
   TRACE(str);
#endif
}

void CALLBACK CMainFrame::MyTimerProc(
    HWND hWnd,         // handle of CWnd that called SetTimer
    UINT nMsg,         // WM_TIMER
    UINT_PTR nIDEvent, // timer identification
    DWORD dwTime       // system time
)
{
   MessageBeep(0x00000030L); // Windows question sound.
}

void CMainFrame::OnStopTimer()
{
   KillTimer(m_nWindowTimer);
   KillTimer(m_nCallbackTimer);
}

void CMainFrame::OnTimer(UINT nIDEvent)
{
   MessageBeep(0xFFFFFFFF); // Beep

   // Call base class handler.
   CMDIFrameWnd::OnTimer(nIDEvent);
}

CWnd::SetWindowContextHelpId

呼叫這個成員函式,將說明內容識別碼與指定的視窗產生關聯。

BOOL SetWindowContextHelpId(DWORD dwContextHelpId);

參數

dwContextHelpId
說明內容識別碼。

傳回值

如果函式成功則為非零,否則為 0。

備註

如果子視窗沒有說明內容識別碼,則會繼承其父視窗的識別碼。 同樣地,如果擁有的視窗沒有說明內容識別碼,則會繼承其擁有者視窗的識別碼。 這個說明內容識別碼的繼承可讓應用程式只設定對話方塊及其所有控制項的一個識別碼。

範例

// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.

// Associate a help context id with the control.
// IDC_TESTHELP_CONTROL is the id of the control
// and HIDC_TESTHELP_CONTROL is its help context
// id associated with the control.
CWnd *pWnd = GetDlgItem(IDC_TESTHELP_CONTROL);
pWnd->SetWindowContextHelpId(HIDC_TESTHELP_CONTROL);

CWnd::SetWindowPlacement

設定視窗的顯示狀態和一般 (還原)、最小化和最大化位置。

BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);

參數

lpwndpl
指向 WINDOWPLACEMENT 指定新顯示狀態和位置的結構。

傳回值

如果函式成功則為非零,否則為 0。

CWnd::SetWindowPos

變更子系、快顯視窗和最上層視窗的大小、位置和 Z 順序。

BOOL SetWindowPos(
    const CWnd* pWndInsertAfter,
    int x,
    int y,
    int cx,
    int cy,
    UINT nFlags);

參數

pWndInsertAfter
CWnd識別將位於 Z 順序中這個 CWnd 物件之前 (高於) 的物件。 此參數可以是 的 CWnd 指標,或下列其中一個值的指標:

  • wndBottom 將視窗放在 Z 順序的底部。 如果這是 CWnd 最上層的視窗,視窗會失去其最上層狀態;系統會將視窗放在所有其他視窗的底部。

  • wndTop 將視窗放在 Z 順序的頂端。

  • wndTopMost 將視窗置於所有非最上層視窗上方。 即使視窗已停用,視窗仍會維持其最上層位置。

  • wndNoTopMost 將視窗重新置放到所有非最上層視窗的頂端(也就是在所有最上層視窗後面)。 如果視窗已經不是最上層的視窗,則此旗標沒有任何作用。

如需如何使用此參數的規則,請參閱本主題的一節。

x
指定視窗左側的新位置。

y
指定視窗頂端的新位置。

cx
指定視窗的新寬度。

cy
指定視窗的新高度。

nFlags
指定調整大小和定位選項。 此參數可以是下列旗標的組合:

  • SWP_DRAWFRAME 在視窗周圍繪製框架(定義于視窗建立時)。

  • SWP_FRAMECHANGEDWM_NCCALCSIZE將訊息傳送至視窗,即使視窗的大小未變更也一樣。 如果未指定此旗標, WM_NCCALCSIZE 則只會在視窗的大小變更時傳送。

  • SWP_HIDEWINDOW 隱藏視窗。

  • SWP_NOACTIVATE 不會啟動視窗。 如果未設定此旗標,則會啟動視窗並移至最上層或最上層群組的頂端(視參數的 pWndInsertAfter 設定而定)。

  • SWP_NOCOPYBITS 捨棄工作區的整個內容。 如果未指定此旗標,則會在視窗調整大小或重新置放之後,儲存並複製回工作區的有效工作區。

  • SWP_NOMOVE 保留目前的位置(忽略 xy 參數)。

  • SWP_NOOWNERZORDER 不會變更 Z 順序中的擁有者視窗位置。

  • SWP_NOREDRAW 不會重新繪製變更。 如果設定此旗標,則不會重新繪製任何種類的 。 這適用于工作區、非工作區區域(包括標題和捲軸),以及因為移動視窗而發現父視窗的任何部分。 設定此旗標時,應用程式必須明確失效或重新繪製必須重新繪製之視窗和父視窗的任何部分。

  • SWP_NOREPOSITIONSWP_NOOWNERZORDER 相同。

  • SWP_NOSENDCHANGING 防止視窗接收 WM_WINDOWPOSCHANGING 訊息。

  • SWP_NOSIZE 保留目前的大小(忽略 cxcy 參數)。

  • SWP_NOZORDER 保留目前的排序(忽略 pWndInsertAfter )。

  • SWP_SHOWWINDOW 顯示視窗。

傳回值

如果函式成功,則為非零;否則為 0。

備註

Windows 會根據其 Z 順序在畫面上排序;Z 順序頂端的視窗會依順序出現在所有其他視窗的頂端。

子視窗的所有座標都是用戶端座標(相對於父視窗工作區左上角)。

您可以將 參數設定 pWndInsertAfter&wndTopMost ,並確保 SWP_NOZORDER 旗標未設定,或設定視窗的 Z 順序,使其高於任何現有的最上層視窗,即可將視窗移至 Z 順序的頂端。 當非最上層視窗成為最上層時,其擁有的視窗也會成為最上層。 其擁有者不會變更。

如果最上層視窗重新置放到 Z 順序的底部或 &wndBottom 位於任何非最上層視窗之後,最上層的視窗就不再是最上層的視窗。 當最上層視窗成為非最上層時,其所有擁有者和擁有的視窗也會成為非最上層的視窗。

SWP_NOACTIVATE如果未指定 或 SWP_NOZORDER ,也就是說,當應用程式要求同時啟動視窗並置於指定的 Z 順序時,中指定的值 pWndInsertAfter 只會在下列情況下使用:

  • &wndTopMost&wndNoTopMost 都未在 參數中 pWndInsertAfter 指定 。

  • 此視窗不是使用中的視窗。

應用程式無法啟動非使用中的視窗,也無法將其帶到 Z 順序的頂端。 應用程式可以變更已啟動視窗的 Z 順序,而不受限制。

非最上層視窗可能擁有最上層的視窗,但反之亦然。 最上層視窗擁有的任何視窗(例如對話方塊)本身都會成為最上層視窗,以確保所有擁有的視窗都保持在其擁有者之上。

使用 Windows 3.1 版和更新版本時,視窗可以移至 Z 順序的頂端,並藉由設定其 WS_EX_TOPMOST 樣式加以鎖定。 即使停用,這類最上層視窗仍會維持其最上層的位置。 例如,選取 WinHelp Always On Top 命令會讓 [說明] 視窗最上層,然後在您返回應用程式時仍保持可見。

若要建立最上層的視窗,請使用 等於 的參數呼叫 SetWindowPos ,或在建立視窗時設定 WS_EX_TOPMOST 樣式。 &wndTopMostpWndInsertAfter

如果 Z 順序包含任何具有樣式的 WS_EX_TOPMOST 視窗,則以 &wndTopMost 值移動的視窗會放在所有非最上層視窗的頂端,但在最上層視窗下方。 當應用程式啟動沒有 WS_EX_TOPMOST 位的非使用中視窗時,視窗會移至所有非最上層視窗上方,但位於最上層視窗下方。

如果 SetWindowPos 當 參數是 &wndBottomCWnd 是最上層的視窗時 pWndInsertAfter 呼叫 ,則視窗會失去最上層的狀態( WS_EX_TOPMOST 已清除),而系統會將視窗放在 Z 順序的底部。

範例

void CMyApp::OnHideApplication()
{
   //m_pMainWnd is the main application window, a member of CMyApp
   ASSERT_VALID(m_pMainWnd);

   // hide the application's windows before closing all the documents
   m_pMainWnd->ShowWindow(SW_HIDE);
   m_pMainWnd->ShowOwnedPopups(FALSE);

   // put the window at the bottom of z-order, so it isn't activated
   m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
                            SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}

CWnd::SetWindowRgn

呼叫這個成員函式來設定視窗的區域。

int SetWindowRgn(
    HRGN hRgn,
    BOOL bRedraw);

參數

hRgn
區域的控制碼。

bRedraw
如果 TRUE 為 ,則作業系統會在設定區域之後重新繪製視窗,否則不會。 一般而言,如果視窗可見,則設定 bRedrawTRUE 。 如果設定為 TRUE ,則系統會將 和 WM_WINDOWPOSCHANGED 訊息傳送 WM_WINDOWPOSCHANGING 至視窗。

傳回值

如果函式成功,則傳回非零的值。 如果此函式失敗,則傳回值為零。

備註

視窗視窗區域的座標相對於視窗左上角,而不是視窗的工作區。

成功呼叫 SetWindowRgn 之後,作業系統會擁有區域控制碼 hRgn 所指定的區域。 作業系統不會建立區域的複本,因此請勿使用此區域控制碼進行任何進一步的函式呼叫,也不會關閉此區域控制碼。

CWnd::SetWindowText

將視窗的標題設定為指定的文字。

void SetWindowText(LPCTSTR lpszString);

參數

lpszString
指向 CString 物件或以 Null 結束的字串,做為新的標題或控制項文字。

備註

如果視窗是控制項,則會設定控制項內的文字。

此函式會導致訊息 WM_SETTEXT 傳送至此視窗。

範例

// set the text in IDC_EDITNAME
CWnd *pWnd = GetDlgItem(IDC_EDITNAME);
pWnd->SetWindowText(_T("Gerald Samper"));

// Get the text back. CString is convenient, because MFC
// will automatically allocate enough memory to hold the
// text--no matter how large it is.

CString str;
pWnd->GetWindowText(str);
ASSERT(str == _T("Gerald Samper"));

// The LPTSTR override works, too, but it might be too short.
// If we supply a buffer that's too small, we'll only get those
// characters that fit.

TCHAR sz[10];
int nRet = pWnd->GetWindowText(sz, 10);

// Nine characters, plus terminating null
ASSERT(_tcscmp(sz, _T("Gerald Sa")) == 0);
ASSERT(nRet == 9);

// You can query the length of the text without the length of
// the string using CWnd::GetWindowTextLength()
nRet = pWnd->GetWindowTextLength();
ASSERT(nRet == 13);

CWnd::ShowCaret

在插入號目前位置的畫面上顯示插入號。

void ShowCaret();

備註

顯示後,插入號會開始自動閃爍。

成員 ShowCaret 函式只有在具有目前圖形且未連續隱藏兩次或多次時,才會顯示插入號。 如果插入號不是此視窗所擁有,則不會顯示插入號。

隱藏插入號是累計的。 HideCaret如果成員函式已連續呼叫五次, ShowCaret 則必須呼叫五次以顯示插入號。

插入號是共用資源。 只有當視窗具有輸入焦點或作用中時,視窗才會顯示插入號。

範例

請參閱 的 CWnd::CreateCaret 範例。

CWnd::ShowOwnedPopups

顯示或隱藏此視窗所擁有的所有快顯視窗。

void ShowOwnedPopups(BOOL bShow = TRUE);

參數

bShow
指定要顯示或隱藏快顯視窗。 如果此參數為 TRUE ,則會顯示所有隱藏的快顯視窗。 如果此參數為 FALSE ,則會隱藏所有可見的快顯視窗。

範例

請參閱 的 CWnd::SetWindowPos 範例。

CWnd::ShowScrollBar

顯示或隱藏捲軸。

void ShowScrollBar(
    UINT nBar,
    BOOL bShow = TRUE);

參數

nBar
指定捲軸是視窗非工作區的控制項或一部分。 如果它是非工作區的一部分, nBar 也表示捲軸是水準、垂直或兩者的位置。 它必須是下列其中一項:

  • SB_BOTH 指定視窗的水準和垂直捲動條。

  • SB_HORZ 指定視窗是水準捲軸。

  • SB_VERT 指定視窗是垂直捲動條。

bShow
指定 Windows 是否顯示或隱藏捲軸。 如果此參數為 TRUE ,則會顯示捲軸,否則捲軸會隱藏。

備註

處理捲軸通知訊息時,應用程式不應該呼叫 ShowScrollBar 來隱藏捲軸。

CWnd::ShowWindow

設定視窗的可見度狀態。

BOOL ShowWindow(int nCmdShow);

參數

nCmdShow
指定要如何 CWnd 顯示 。 它必須是下列其中一個值:

  • SW_HIDE 隱藏此視窗,並將啟用傳遞至另一個視窗。

  • SW_MINIMIZE 將視窗最小化,並啟動系統清單中的最上層視窗。

  • SW_RESTORE 啟動並顯示視窗。 如果視窗最小化或最大化,Windows 會將它還原至其原始大小和位置。

  • SW_SHOW 啟動視窗,並將其顯示在其目前的大小和位置。

  • SW_SHOWMAXIMIZED 啟動視窗,並將其顯示為最大化的視窗。

  • SW_SHOWMINIMIZED 啟動視窗,並將其顯示為圖示。

  • SW_SHOWMINNOACTIVE 將視窗顯示為圖示。 目前使用中的視窗會維持使用中狀態。

  • SW_SHOWNA 以目前狀態顯示視窗。 目前使用中的視窗會維持使用中狀態。

  • SW_SHOWNOACTIVATE 以最近的大小和位置顯示視窗。 目前使用中的視窗會維持使用中狀態。

  • SW_SHOWNORMAL 啟動並顯示視窗。 如果視窗最小化或最大化,Windows 會將它還原至其原始大小和位置。

傳回值

如果先前顯示視窗,則為非零;如果先前已隱藏 , CWnd 則為 0。

備註

ShowWindow 針對具有 CWinApp::m_nCmdShow 的主視窗,每個應用程式只能呼叫一次。 的後續呼叫 ShowWindow 必須使用上述其中一個值,而不是 所 CWinApp::m_nCmdShow 指定的值。

範例

請參閱 的 CWnd::CalcWindowRect 範例。

CWnd::SubclassDlgItem

呼叫這個成員函式,以「動態子類別」從對話方塊範本建立的控制項,並將它附加至這個 CWnd 物件。

BOOL SubclassDlgItem(
    UINT nID,
    CWnd* pParent);

參數

nID
控制項的識別碼。

pParent
控制項的父代 (通常是對話方塊)。

傳回值

如果函式成功則為非零,否則為 0。

備註

當控制項動態子類別化時,Windows 訊息會先透過 CWnd 的訊息對應路由,並呼叫 類別中的 CWnd 訊息處理常式。 傳遞至基類的訊息將會傳遞至 控制項中的預設訊息處理常式。

這個成員函式會將 Windows 控制項附加至 CWnd 物件,並取代控制項的 WndProcAfxWndProc 函式。 函式會將舊的 WndProc 儲存在成員函式所 GetSuperWndProcAddr 傳回的位置。

範例

// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.

// IDC_BUTTON1 is the ID for a button on the
// dialog template used for CMyDlg.
m_MyButton.SubclassDlgItem(IDC_BUTTON1, this);

CWnd::SubclassWindow

將此成員函式稱為「動態子類別」視窗,並將它附加至這個 CWnd 物件。

BOOL SubclassWindow(HWND hWnd);

參數

hWnd
視窗的控制碼。

傳回值

如果函式成功則為非零,否則為 0。

備註

動態子類別化視窗時,視窗訊息會先透過 CWnd 的訊息對應路由,並呼叫 類別中的 CWnd 訊息處理常式。 傳遞至基類的訊息將會傳遞至視窗中的預設訊息處理常式。

這個成員函式會將 Windows 控制項附加至 CWnd 物件,並取代視窗的 WndProcAfxWndProc 函式。 函式會將指標儲存至 物件中的 CWndWndProc

注意

呼叫此函式時,視窗不得已附加至 MFC 物件。

範例

// The following code shows how to subclass the edit control and list box
// controls inside a combo box. It uses WM_CTLCOLOR for subclassing.
// CSuperComboBox represents the combo box
HBRUSH CSuperComboBox::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   if (nCtlColor == CTLCOLOR_EDIT)
   {
      //Edit control
      if (m_edit.GetSafeHwnd() == NULL)
         m_edit.SubclassWindow(pWnd->GetSafeHwnd());
   }
   else if (nCtlColor == CTLCOLOR_LISTBOX)
   {
      //ListBox control
      if (m_listbox.GetSafeHwnd() == NULL)
         m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
   }

   HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
   return hbr;
}

void CSuperComboBox::OnDestroy()
{
   //unsubclass edit and list box before destruction
   if (m_edit.GetSafeHwnd() != NULL)
      m_edit.UnsubclassWindow();
   if (m_listbox.GetSafeHwnd() != NULL)
      m_listbox.UnsubclassWindow();
   CComboBox::OnDestroy();
}

CWnd::UnlockWindowUpdate

呼叫這個成員函式,以解除鎖定已鎖定的 CWnd::LockWindowUpdate 視窗。

void UnlockWindowUpdate();

備註

一次只能鎖定 LockWindowUpdate 一個視窗。 如需鎖定視窗的詳細資訊,請參閱 CWnd::LockWindowUpdate 或 Win32 函 LockWindowUpdate 式。

CWnd::UnsubclassWindow

呼叫這個成員函式,將 設定 WndProc 回其原始值,並將 HWND 所識別的 CWnd 視窗與 物件中斷連結。

HWND UnsubclassWindow();

傳回值

未分類視窗的控制碼。

範例

請參閱 的 CWnd::SubclassWindow 範例。

CWnd::UpdateData

呼叫這個成員函式以初始化對話方塊中的資料,或擷取和驗證對話資料。

BOOL UpdateData(BOOL bSaveAndValidate = TRUE);

參數

bSaveAndValidate
旗標,指出對話方塊正在初始化 ( FALSE ) 或正在擷取資料 ( TRUE )。

傳回值

如果作業成功,則為非零;否則為 0。 如果 bSaveAndValidateTRUE ,則非零的傳回值表示資料已成功驗證。

備註

架構會在 的預設實作中建立強制回應對話方塊時,自動呼叫 UpdateDatabSaveAndValidate 設定 FALSECDialog::OnInitDialog 的 。 呼叫會在對話方塊可見之前發生。 的預設實作會 CDialog::OnOK 呼叫這個成員函式,並將 bSaveAndValidate 設定為 TRUE 來擷取資料,如果成功,將會關閉對話方塊。 (如果在對話方塊中按一下 [取消] 按鈕,對話方塊就會關閉,而不會擷取資料。

CWnd::UpdateDialogControls

呼叫這個成員函式,以更新對話方塊按鈕的狀態,以及使用回呼機制的 ON_UPDATE_COMMAND_UI 對話方塊或視窗中的其他控制項。

void UpdateDialogControls(
    CCmdTarget* pTarget,
    BOOL bDisableIfNoHndler);

參數

pTarget
指向應用程式的主框架視窗,並用於路由更新訊息。

bDisableIfNoHndler
指出沒有更新處理常式的控制項是否應該自動顯示為停用的旗標。

備註

如果子控制項沒有處理常式且 bDisableIfNoHndlerTRUE ,則會停用子控制項。

架構會針對對話方塊欄或工具列中的控制項呼叫這個成員函式,做為應用程式閒置處理的一部分。

CWnd::UpdateLayeredWindow

更新分層視窗的位置、大小、形狀、內容和透明度。

BOOL UpdateLayeredWindow(
    CDC* pDCDst,
    POINT* pptDst,
    SIZE* psize,
    CDC* pDCSrc,
    POINT* pptSrc,
    COLORREF crKey,
    BLENDFUNCTION* pblend,
    DWORD dwFlags);

參數

pDCDst
螢幕裝置內容的指標。 當視窗內容更新時,它會用於調色盤色彩比對。 如果 pDCDstNULL ,則會使用預設調色盤。

如果 pDCSrcNULLpDCDst 必須是 NULL

pptDst
結構的指標 POINT ,指定分層視窗的新螢幕位置。 如果目前的位置未變更, pptDst 可以是 NULL

psize
SIZE結構的指標,指定分層視窗的新大小。 如果視窗的大小未變更, psize 可以是 NULL

如果 pDCSrcNULLpsize 必須是 NULL

pDCSrc
定義分層視窗之介面的 DC 指標。 如果視窗的圖形和視覺內容未變更, pDCSrc 可以是 NULL

pptSrc
POINT結構的指標,指定裝置內容中圖層的位置。

如果 pDCSrcNULLpptSrc 應該是 NULL

crKey
COLORREF值的指標,指定撰寫分層視窗時要使用的透明度色彩索引鍵。 以這個色彩繪製的視窗所繪製的所有圖元都會是透明的。 若要產生 COLORREF ,請使用 RGB 宏。

pblend
BLENDFUNCTION結構的指標,指定撰寫分層視窗時要使用的透明度值。

dwFlags
指定要採取的動作。 此參數可以是下列其中一或多個值。 如需可能值的清單,請參閱 UpdateLayeredWindow

傳回值

如果函式成功則為非零值,否則為 0。

備註

此成員函式會模擬 函式的功能 UpdateLayeredWindow ,如 Windows SDK 中所述。

CWnd::UpdateWindow

如果更新區域不是空的,請傳送 WM_PAINT 訊息來更新工作區。

void UpdateWindow();

備註

成員函式會 UpdateWindow 直接傳送 WM_PAINT 訊息,略過應用程式佇列。 如果更新區域是空的, WM_PAINT 則不會傳送。

範例

// In this example a rectangle is drawn in a view.
// The OnChangeRect() function changes the dimensions
// of the rectangle and then calls CWnd::Invalidate() so the
// client area of the view will be redrawn next time the
// window is updated.  It then calls CWnd::UpdateWindow
// to force the new rectangle to be painted.

void CMdiView::OnChangeRect()
{
   // Change Rectangle size.
   m_rcBox = CRect(20, 20, 210, 210);

   // Invalidate window so entire client area
   // is redrawn when UpdateWindow is called.
   Invalidate();

   // Update Window to cause View to redraw.
   UpdateWindow();
}

// On Draw function draws the rectangle.
void CMdiView::OnDraw(CDC *pDC)
{
   // Other draw code here.

   pDC->Draw3dRect(m_rcBox, 0x00FF0000, 0x0000FF00);
}

CWnd::ValidateRect

從視窗的更新區域移除矩形,以驗證指定矩形內的工作區。

void ValidateRect(LPCRECT lpRect);

參數

lpRect
指向 CRect 物件或 RECT 結構 ,其中包含要從更新區域移除之矩形的用戶端座標。 如果 lpRectNULL ,則會驗證整個視窗。

備註

成員 BeginPaint 函式會自動驗證整個工作區。 ValidateRect如果下次產生之前 WM_PAINT 需要驗證更新區域的一部分,則不應該呼叫 或 ValidateRgn 成員函式。

Windows 會繼續產生 WM_PAINT 訊息,直到驗證目前的更新區域為止。

CWnd::ValidateRgn

從視窗的目前更新區域移除區域,以驗證指定區域內的工作區。

void ValidateRgn(CRgn* pRgn);

參數

pRgn
物件的指標 CRgn ,識別定義要從更新區域移除的區域的區域。 如果此參數為 NULL ,則會移除整個工作區。

備註

指定的區域之前必須由區域函式建立。 區域座標會假設為用戶端座標。

成員 BeginPaint 函式會自動驗證整個工作區。 ValidateRect如果在產生下 WM_PAINT 一則訊息之前,必須驗證更新區域的一部分,則不應該呼叫 和 ValidateRgn 成員函式。

CWnd::WindowFromPoint

擷取包含指定點的視窗; point 必須指定螢幕上點的螢幕座標。

static CWnd* PASCAL WindowFromPoint(POINT point);

參數

point
指定要 CPoint 檢查之點的物件或 POINT 資料結構。

傳回值

指向該點所在之視窗物件的指標。 NULL如果指定點上沒有任何視窗存在,則為 。 傳回的指標可能是暫時的,不應該儲存以供稍後使用。

備註

WindowFromPoint 即使點位於視窗內,也不會擷取隱藏或停用的視窗。 應用程式應該使用 ChildWindowFromPoint 成員函式進行非緊急搜尋。

CWnd::WindowProc

提供 物件的 CWnd Windows 程式 ( WindowProc )。

virtual LRESULT WindowProc(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

參數

message
指定要處理的 Windows 訊息。

wParam
提供處理訊息時所使用的其他資訊。 參數值取決於訊息。

lParam
提供處理訊息時所使用的其他資訊。 參數值取決於訊息。

傳回值

傳回值取決於訊息。

備註

它會透過視窗的訊息對應分派訊息。

CWnd::WinHelp

呼叫以初始化 WinHelp 應用程式。

virtual void WinHelp(
    DWORD_PTR dwData,
    UINT nCmd = HELP_CONTEXT);

參數

dwData
指定其他資料。 所使用的值取決於 參數的值 nCmd

nCmd
指定要求的說明類型。 如需可能值的清單及其影響 dwData 參數的方式,請參閱 WinHelp Windows SDK 中的 Windows 函式。

備註

如需相關資訊,請參閱 CWinApp::WinHelp

CWnd::RegisterTouchWindow

註冊或取消註冊 Windows touch 支援。

BOOL RegisterTouchWindow(
    BOOL bRegister = TRUE,
    ULONG ulFlags = 0);

參數

bRegister
TRUE 表示註冊 Windows touch 支援; FALSE 否則。

ulFlags
指定選擇性修改的一組位旗標。 此欄位可能包含 0 或下列其中一個值:、 TWF_FINETOUCHTWF_WANTPALM

傳回值

如果成功,則為 TRUE,否則為 FALSE

備註

CWnd::ResizeDynamicLayout

如果已啟用視窗的動態配置,則會在視窗大小變更以調整子視窗的版面配置時由架構呼叫。

virtual void ResizeDynamicLayout();

備註

另請參閱

CCmdTarget
階層架構圖表
CFrameWnd
CView