2012-03-29 46 views

回答

2

編輯控件應該有ES_WANTRETURN style改變自己的行爲,以期望:

指定當用戶按下 ENTER鍵,而在 對話框中輸入文本多行編輯控件回車插入。如果您不指定此樣式,按ENTER鍵 與按下對話框的默認按鈕具有相同的效果。 此樣式對單行編輯控件沒有影響。

要在創建控件後更改此樣式,請使用 SetWindowLong。

+0

我應該更清楚。我確實希望輸入鍵可以觸發默認按鈕,但我希​​望將焦點留在編輯控件中(並且不要插入換行符)。 – user1299863 2012-03-29 18:01:34

+0

然後,你不需要'ES_WANTRETURN'風格,否則它會被控制權吃掉,對嗎?你傳遞它,讓默認值轉移焦點並觸發按鈕。現在你已經調用了'BN_CLICKED'通知並且處理它。這是您處理通知的工作機會,然後通過使用'SetFocus'將焦點轉移到您的編輯控件來完成它。 – 2012-03-29 19:03:43

+0

如果您有幾個編輯控件,並且您想要將焦點返回到按鈕之前的焦點,那麼情況會變得更加複雜。然後,您可能想要聽取'EN_KILLFOCUS'通知並記住按鈕單擊之前的最後一個通知。或者,您可以對按鈕控件進行子類化並處理其「WM_SETFOCUS」,以查看從按鈕到哪個控件焦點。或者,可能會有其他對話框消息對您可以使用Spy ++工具看到的目的有用並利用。 – 2012-03-29 19:06:14

相關問題