Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как в файле ресурсов поменять цвет диалога.


Автор: cuvorov 27.9.2007, 20:27
Добрый день.
Как в файле ресурсов поменять цвет диалога?
И как перехватить сообщение о отжатии кнопки.

Автор: 586 27.9.2007, 21:35
Цитата(cuvorov @  27.9.2007,  21:27 Найти цитируемый пост)
Как в файле ресурсов поменять цвет диалога?

никак. В функции обработки сообщений перехватьвай сообщение WM_CTLCOLORDLG
Код
switch (uMsg)
{
case WM_CTLCOLORDLG:
  return (INT_PTR)GetStockObject(BLACK_BRUSH);
}


или так:
Код
static HBRUSH hbr;
switch(uMsg)
{
case WM_INITDIALOG:
  hbr=CreateSolidBrush(0xFF0000);  // создание заливки синего цвета
  break;

case WM_CLOSE:
  DeleteObject((HGDIOBJ)hbr);  // не забываем освобождать ресурсы GDI
  break;

case WM_CTLCOLORDLG:
  return (INT_PTR)hbr;

default:
  return FALSE;
}
return TRUE;


Цитата
И как перехватить сообщение о отжатии кнопки

Где? В диалоге WM_KEYUP return TRUE. Если в контроле, можно перехватывать в цикле обработки сообщений (если это окно главное, то это не проблема).
Код

while(GetMessage(&msg, 0, 0, 0))
{
  if((msg.uMsg==WM_KEYUP) /*&&  (msg.hWnd!=hDlg)*/)
    continue;
  if(!IsDialogMessage(...))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
}

Автор: cuvorov 27.9.2007, 21:45
Да я не совсем коректно выразился.
Кнопка имеется в виду контрол (BUTTON).
И мне надо узнать когда пользователь после клика отпустил кнопку.

Автор: 586 27.9.2007, 22:12
Цитата(cuvorov @  27.9.2007,  22:45 Найти цитируемый пост)
 мне надо узнать когда пользователь после клика отпустил кнопку

может опять вопрос не понял... По идее, нажатие кнопку не произойдет, если пользователь не отпустит её.
Код
case WM_COMMAND:
  switch(LOWORD(wParam))
  {
  case ID_BUTTON:  // ID кнопки

    break;
  }
  break;

Автор: cuvorov 27.9.2007, 22:24
У меня такая постанова.
Когда юзер нжимает мышью на кнопку у нее меняется картинка. Когда юзер отпускает возвращается изначальная картинка.
Вот на нажатие у меня меняется а обратно нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)