Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

StaticText - программно изменить свойство

16K
02 ноября 2006 года
PupaJr
20 / / 14.09.2006
Среда - MSVC7.1, прога без MFC.
Такая проблема - в ходе выполнения программы надо сделать свойство обычного StaticText - ModalFrame или ClientEdge c True на false а потом наоборот, с помощю API функций (типо вдавленный текст или как кнопка и пр.).
Текст caption меняется легко - SetDlgItemText(hwndDlg,IDC_STATICT,"мой статик"), а вот как свойства...
hwndDlg - точно моего статика, поскольку caption меняется.
Пробывал SendMessage(hwndDlg,WM_COMMAND,SS_xxxxxx, true/false);
Может не те сообщения и свойства lParam и wParam ставлю, искал в хелпе все смойства StaticText , нахожу какие-то SS_xxxx, EM_xxxx, перепробывал кучу комбинаций, просто устал и ещё не дошёл видимо до нужной комбинации :-((((.
Может вообще не тот подход???
Просто аналогичные задачи были и с другими простыми стандартными объектами а вот такая загвоздка...
Спасибо.
16K
02 ноября 2006 года
PupaJr
20 / / 14.09.2006
CRect key_rect;

HWND my_stat=GetDlgItem(mainwind,IDC_STATICB);

BOOL recctt=::GetWindowRect(my_stat, &key_rect);

HDC pSource = ::GetDC(my_stat);

BOOL aa=DrawEdge(pSource,&key_rect,EDGE_RAISED,BF_TOPRIGHT);

Команда DrawEdge вроде как раз этим и занимается - изменяет "углы" но выдаёт 1 - типо всё сделано а ничего не меняется, пробывал разные настройки её - тоже никак... а примера тоже не нашёл...
8.8K
02 ноября 2006 года
The_Ice
109 / / 04.04.2006
Посмотри SetWindowLong() - скорее всего ты про нее спрашиваешь :)
16K
07 ноября 2006 года
PupaJr
20 / / 14.09.2006
Спасибо, попробывал, понял, что копать надо здесь, но стили меняются не так как надо, и к тому же если в исходном ресурсе изменить вид окна, то программый код установки атрибутов работает уже не так - не те свойства меняются, вот если например уже стоит modalframe, то пытаюсь его повторно установить или снять то внешний вид этого статика меняется на какую-то непонятную комбинацию. Есть стили конкретно для статика SS_xxxxx и просто для окон
WS_EX_xxxxxx, пробывал их комбинации, кое-что появляется, но бывает такая комбинация что стиль вообще никак не меняется, или изменится, а потом при переносе окна - когда происходит обновление формы (перересовка) вид опять меняется на непонятно что.
Существуют видимо запрещённые комбинации и приоритетные стили в этих атрибутах, меняеш один, но если при этом стоит ещё какой-то, то эффект не тот что ожидаеш. Видимо таких вариантов очень много. Пытался сначала читать статус окна GetWindowLong, анализировал его с теми атрибутами что стоят в ресурсах, сравнивал биты со свойствами окна SS_xxxxx и WS_EX_xxxxxx - НЕСОВПАДАЮТ. Потому видимо я их ставлю а результат не тот. Как и что тут ещё можно просмотреть и попробывать проверить?
16K
09 ноября 2006 года
PupaJr
20 / / 14.09.2006
SetWindowLong(mainwind, GWL_EXSTYLE, GetWindowLong(mainwind, GWL_EXSTYLE) | WS_EX_STATICEDGE);

Работает, но почему-то не те параметры ставит, вместо углубления статика появляется белый квадрат, а когда таскаеш форму то белый цвет меняется на цвет закрывающей формы (или формы с другого приложения)..
Просматривал файл ресурсов, там стоит SS_.... и через запятую WS_EX_DIALOGFRAME - выпуклый статик, рядом второй вдавленный у него те-же SS_.. но стоит уже WS_EX_MODALFRAME, логично подумать если я поменяю программно эти свойства наоборот с помощью SetWindowLong то и на форме во время работы проги статики поменяют свой вид на другой, так НЕТ - появляются белые квадраты - ну вообще не втему.... что не так....???
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог