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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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