информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Bm_setstyle 28.01.03 12:09  Число просмотров: 1228
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вопрос глупый, но как установить свойство контрола
> (используя WinAPI)? К примеру TRUE или FALSE у свойства
> Flat Button'a. как в делфи button1.flat:= true;
> Смотрел исходники, там вроде для этого спользуется
> SendDlgItemMessage(), но не понятно какое именно сообщение
> нужно посылать для изменения того или иного св-ва..
А вообще по свойствам контролов поглянь widowsx.h, в частности Button_Xxx макросы. Есть там и Button_SetStyle. Вот только одного не пойму: почему они в MSDN-е не задокументированы.

Кроме того, если юзаешь MFC - некоторым нравится. Там есть функция CButton::SetButtonStyle

И еще кроме того есть SetWindowLong
<programming>
[C++] Свойства контрола 28.01.03 08:49  
Автор: makeworld Статус: Member
<"чистая" ссылка>
Вопрос глупый, но как установить свойство контрола (используя WinAPI)? К примеру TRUE или FALSE у свойства Flat Button'a. как в делфи button1.flat:= true;
Смотрел исходники, там вроде для этого спользуется SendDlgItemMessage(), но не понятно какое именно сообщение нужно посылать для изменения того или иного св-ва..
Bm_setstyle 28.01.03 12:09  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вопрос глупый, но как установить свойство контрола
> (используя WinAPI)? К примеру TRUE или FALSE у свойства
> Flat Button'a. как в делфи button1.flat:= true;
> Смотрел исходники, там вроде для этого спользуется
> SendDlgItemMessage(), но не понятно какое именно сообщение
> нужно посылать для изменения того или иного св-ва..
А вообще по свойствам контролов поглянь widowsx.h, в частности Button_Xxx макросы. Есть там и Button_SetStyle. Вот только одного не пойму: почему они в MSDN-е не задокументированы.

Кроме того, если юзаешь MFC - некоторым нравится. Там есть функция CButton::SetButtonStyle

И еще кроме того есть SetWindowLong
Bm_setstyle 29.01.03 08:21  
Автор: makeworld Статус: Member
<"чистая" ссылка>
Попробовал двумя способами:
SendMessage(GetDlgItem(hDlg,ID_CLOSE),BM_SETSTYLE,BS_FLAT,TRUE);
и
Button_SetStyle(GetDlgItem(hDlg,ID_CLOSE),BS_FLAT,TRUE);

все равно не работает..
Да я тоже попробовал - болт 29.01.03 16:06  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> все равно не работает..
Некоторые стили не могут меняться на лету при помощи сообщений. Нужно удалить кнопку и пересоздать ее с новым стилем. Ну или пользоваться GetWindowLong/SetWindowLong. Этот пример работает - я специально проверил (только стиль обновляется как-то странно - но это уже другой вопрос)
case IDM_FLAT:
	SetWindowLong(GetDlgItem(hDlg, IDOK), GWL_STYLE, GetWindowLong(GetDlgItem(hDlg, IDOK), GWL_STYLE) | BS_FLAT);
	break;

---
Да я тоже попробовал - болт 31.01.03 06:54  
Автор: makeworld Статус: Member
<"чистая" ссылка>
> > все равно не работает..
> Некоторые стили не могут меняться на лету при помощи
> сообщений. Нужно удалить кнопку и пересоздать ее с новым
> стилем. Ну или пользоваться GetWindowLong/SetWindowLong.
> Этот пример работает - я специально проверил (только стиль
> обновляется как-то странно - но это уже другой вопрос)
>
> case IDM_FLAT:
> 	SetWindowLong(GetDlgItem(hDlg, IDOK), GWL_STYLE,
> GetWindowLong(GetDlgItem(hDlg, IDOK), GWL_STYLE) |
> BS_FLAT);
> 	break;
> 

---

После изменения стиля с помощью SetWindowLong() кнопка не перерисовывается автоматически. По идее должно быть сообщение для обновления окна, но я ничего не нашел и сделал так:

void RefreshButton (HWND bh) {
char buttext[65535];
SendMessage(bh,WM_GETTEXT,sizeof(buttext),(LPARAM)((LPCTSTR)buttext));
SendMessage(bh,WM_SETTEXT,0,(LPARAM)((LPCTSTR)buttext));
}

Теперь стиль обновляется нормально
Вот об этом я и говорил, когда сказал, что странно стиль обновляется :-))) 31.01.03 12:52  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Я примерно так и представлял себе решение. Еще стиль обновляется когда кнопка получает фокус - можно переключить
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach