информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





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

---
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach