2010-09-17 2 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)

Смежные вопросы