2012-01-12 63 views
0

我已閱讀here(當用戶選擇一個編輯控件,....並使用反向視頻突出顯示其文本),如果我理解正確,CEdit應該突出顯示(我希望它當我點擊它時,就和select一樣)文本。CMFCPropertyGridProperty和CEdit文本自動選擇

我使用CMFCPropertyGridCtrl和CMFCPropertyGridProperty。但是當我點擊網格(一個屬性值)時,它不會選擇任何東西。

我發現了什麼:屬性創建內部CEdit,這是手動編輯屬性值。它被創建,它的字體被設置等。然後SetFocus被調用,然後UpdateWindow--重新繪製編輯框並在第一個字符之前設置光標。在此之後,再次引發鼠標點擊編輯框 - 這似乎是正確的。但沒有選擇文字。

我也嘗試創建自己的屬性類,它從CMFCPropertyGridProperty派生。所有這些之後我都打電話給SetSel。它真的選擇了我的文本,但它只是取消選擇它(在下一次重繪)。我也取得的成就是,重繪後只有文本從開始到鼠標點擊被選中(當我點擊第4個字符後,只有前4個字符被選中)。

我的問題:

是否應CEdit的真正選擇後第一個鼠標點擊automaticaly文字? (你有一些資源嗎?)

難道你不知道,爲什麼這不工作在CMFCPropertyGridProperty?

CMFCPropertyGridCtrl和CMFCPropertyGridProperty可以在mfc源代碼目錄下的afxpropertygridctrl.h/.cpp中找到。

回答

0

所以,我終於找到了:

CEdit的可能不點擊它後,選擇文本。這必須由SetSel函數手動完成。

但是在CMFCPropertyGridCtrl中,如果單擊它,它會傳遞給CMFCPropertyGridProperty,並且重複點擊。所以如果我使用SetSel,它會取消選擇文本。所以我不得不編寫自己的類繼承CMFCPropertyGridProperty並跳過此步驟(再次單擊)。它足以讓SetFocus和SetSel(它也將光標設置爲CEdit窗口)。