2014-02-18 189 views
1

我使用MFC文檔/視圖體系結構在C++中進行編程。我一直在努力實現類似MFC CEdit lose focus handler的東西。正如答案所示,我處理了消息EN_KILLFOCUS。子窗口(CEdit)失去焦點

基本上,我正在這樣做:我在視圖中繪製了文本。當用戶單擊視圖中文本的區域時,我將定位並在其上方顯示CEdit窗口,以便用戶能夠編輯文本。當編輯失去焦點時,我得到CEdit文本並將其保存在文檔中。然後使視圖無效。

但是,當視圖失去焦點時,我似乎只收到EN_KILLFOCUS消息。我必須在其他地方點擊,例如對接窗口或工具欄,以使CEdit失去焦點。我希望它發生在我在CEdit框外部的視圖上單擊任何其他位置時。

我正在用WS_CHILD樣式創建CEdit。我試過WS_POPUP,但仍然是同樣的問題。

任何幫助,將不勝感激。

回答

1

創建CEdit派生類/控件。並在您的視圖中創建此類的實例

在派生類中處理EN_KILLFOCUS。一旦用戶在編輯控制窗口外單擊,您將能夠處理此消息。
將您的編輯框保存爲WS_CHILD。

設置焦點以查看視圖的鼠標向下,在視圖的LButtonDown上調用SerFocus()。

+0

嗯......我試過了。但它似乎並不奏效。如果整個觀點失去了重點,我仍然只會收到消息。 – l3utterfly

+0

嗯..你是否把注意力集中在視圖的鼠標上?如果沒有,請在視圖的LButtonDown上調用SerFocus().. –

+0

謝謝!那就是訣竅。但是,我發現,CEdit的子類化已經沒有意義了。我可以在父窗口OnCommand中處理EN_KILLFOCUS – l3utterfly