2010-09-17 94 views
1

我們正在實現一個文本字段以進行數字輸入。我們繼承了標準的wxTextCtrl。行爲是當用戶決定編輯值時,他們得到一個完整的精度版本,它被選中。WX:嘗試在單擊文本字段時選擇值

第一次嘗試是重寫焦點處理程序,以便當字段獲得焦點時,該值顯示爲已完成並被選中。除了您點擊該字段的情況外,此功能非常有用。在這種情況下,焦點處理程序被調用並且值被選擇...但是在一段時間之後,它被取消選擇並且編輯點放置在發生鼠標點擊的地方。我想也許我可以重寫SetSelection並設置調試點,但它似乎使用其他方法來設置選擇!我被困在漫不經心的事件處理廢話的英里來弄清楚......我想在鼠標按鈕處理程序,但到目前爲止我還沒有找到任何。

如果有人可能已經知道我需要重寫以指出它,那將會很好。我需要在哪裏尋找?

回答

0

答案是,它無法做到的。我試圖覆蓋的行爲是由win32組件本身實現的,並且wx沒有提供任何方法來做到這一點....只是繞過WX獲取win32句柄並使用win32 api。

需要在WX API中編寫一個新組件來獲得所需的行爲。

0

我會嘗試此代碼爲您wxTextCtrl(但我不知道這是你想要的 - 聚焦和點擊)

m_textCtrl1->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(MyDialog1::LeftDown), NULL, this); 
m_textCtrl1->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(MyDialog1::SetFocus), NULL, this); 


void LeftDown(wxMouseEvent& event); 
void SetFocus(wxFocusEvent& event); 

如果你做什麼是由默認值(系統)覆蓋您可以嘗試'wxPostEvent'來執行您以後想要的操作(默認處理後)。

我也建議使用此設計師(對於這個問題,我偷走wxFormBuilder產生了一些代碼)

相關問題