#c #winapi
#c #winapi
Вопрос:
Я пытаюсь создать небольшую программу на C и Windows API, и мне нужно обновить некоторый текст в статическом элементе управления. Я прочитал, что изменение текста static во время выполнения невозможно, и я должен дублировать класс и создавать его в соответствии с требованиями. Проблема в том, как мне дублировать класс. Я новичок, и ниже приведены текущие атрибуты класса, которые у меня есть (что, конечно, для окна!). Какие изменения необходимы для такого элемента управления? Или, если это слишком много работы, должен ли я вместо этого использовать текстовое поле (неизменяемое пользователем)?
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.lpszClassName = TEXT( "Window" );
wc.hInstance = hInstance ;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpfnWndProc = WndLogProc;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
Комментарии:
1. Я кое-что обнаружил. Если я добавлю WS_DISABLED в редактор редактирования, это будет выглядеть как static! И редактирование его текста — это не ракетостроение! Итак, это сделано.
2. Вы можете опубликовать это как ответ и принять его, если это работает для вас.
3. Я новый пользователь, и он просит меня подождать 24 часа, прежде чем отвечать!
Ответ №1:
Кто вам сказал, что невозможно изменить текст статического окна? Если вы используете SetWindowText
, вы можете изменить содержимое. Это не будет отображать это новое содержимое автоматически, но вы можете принудительно перерисовать окно с помощью RedrawWindow
.
P.S. Вы должны использовать тип класса «static» для статического элемента управления, а не «Window». Список встроенных классов окон находится здесь, в MSDN.
Комментарии:
1. Я читал это в учебнике! Ну, я не знал о SetWindowText (я был в WIN Api всего 5-6 дней!). На данный момент я использую отключенные поля редактирования, поскольку они делают то же самое. Однако в следующий раз я рассмотрю SetWindowText. Спасибо за ответ!
2. @Ишан Шарма, отключенное окно редактирования — это не совсем то же самое. Он отображается другим цветом и позволяет выделять текст. Это особенно прискорбно, если вы привыкли использовать клавишу Tab для перехода от одного элемента управления к следующему, поскольку вы не ожидаете останавливаться на статическом тексте.
3. Да, я знаю, что у него другой цвет, но не знал, что текст можно выбрать. В моем приложении не так много полей, поэтому я пока пропущу SetWindowText.
4. @Ишан Шарма: И что бы это было за руководство?
5. @In Silico Извините, но я не помню! Прямо сейчас у меня открыто около 20 вкладок о Windows API, и определить точную из них было бы очень сложно!