powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MessageBox цвет
25 сообщений из 25, страница 1 из 1
MessageBox цвет
    #39180767
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как программно покрасить текст месседжа ?
...
Рейтинг: 0 / 0
MessageBox цвет
    #39180777
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В С++ изначально нет стандартов на проектирование UI.

Поэтому нужно уточнять под какую целевую ОС/платформу вы пишете ПО.
Gnome/GTK, KDE, Qt, Windows/GDI/Forms, e.t.c.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39180780
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдКак программно покрасить текст месседжа ?
Никак. Цвет диалогов это пользовательская настройка UI, программам в неё лучше не лезть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MessageBox цвет
    #39180866
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
HHOOK g_Hook = NULL;
LRESULT CALLBACK CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam)
{
   LRESULT retval = CallNextHookEx(0, nCode, wParam, lParam);
   if ( nCode == HC_ACTION ) {
      CWPRETSTRUCT *msg = (CWPRETSTRUCT *)lParam;
      if ( msg->message == WM_CONTROLCOLORSTATIC ) {
           ....................... TODO
      }
   }
   return retval;
}
int CMyApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt) 
{
   g_Hook = ::SetWindowsHookEx(WH_CALLWNDPROCRET, CallWndRetProc, NULL, 
      ::GetCurrentThreadId());
   int nRet = CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt);
   if (g_Hook) ::UnhookWindowsHookEx(g_Hook);
   return nRet; 
}
...
Рейтинг: 0 / 0
MessageBox цвет
    #39180986
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,
ты свихнулся уже похоже на смене цвета...

на кой это вообще делать, если можно просто тупо сделать свой собственный диалог вывода сообщения?
...
Рейтинг: 0 / 0
MessageBox цвет
    #39180999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это... это как? 50 лет эволюции кибернетики и вычислительной техники
прошли зря. Вот это 20 строк кода надо написать чтобы цвет текста
поменять?

Как-же Алан Тьюринг? Как-же Джон-Маккарти?

Их смерть была напрасной? Ради чего они вообще жили? Чтобы мы в 20 строк
меняли цвет MessageBox?

Душно мне... и тяжко. Пойду бухать.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39181000
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот это... это как? 50 лет эволюции кибернетики и вычислительной техники
прошли зря. Вот это 20 строк кода надо написать чтобы цвет текста
поменять?

Как-же Алан Тьюринг? Как-же Джон-Маккарти?

Их смерть была напрасной? Ради чего они вообще жили? Чтобы мы в 20 строк
меняли цвет MessageBox?

Душно мне... и тяжко. Пойду бухать.
Это тебе не Бейсик.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39181001
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
ты свихнулся уже похоже на смене цвета...

на кой это вообще делать, если можно просто тупо сделать свой собственный диалог вывода сообщения?
Ларису Ивановну хачу!!!

Хочу месседж красным цветом, когда сообщение плохое.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39181027
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

mb_iconstop недостаточно заметно?
...
Рейтинг: 0 / 0
MessageBox цвет
    #39181044
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдА так:Ты понимаешь, что этот код делает? :) Он, вообще, на глаз, рабочий. Но если ты его применишь, как есть, ты огребёшь проблем. Поэтому сначала лучше разобраться и понять, что тут каждая строчка неправильно делает
maytonДушно мне... и тяжко. Пойду бухать. ж)
MasterZivна кой это вообще делать, если можно просто тупо сделать свой собственный диалог вывода сообщения? Хотел я ответить: "для единообразия", но вовремя передумал :)
...
Рейтинг: 0 / 0
MessageBox цвет
    #39181100
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЛарису Ивановну хачу!!!а есть какая то религия, запрещающая использовать тег SRC при оформлении сообщения на форуме? можно ознакомиться с постулатами?
...
Рейтинг: 0 / 0
MessageBox цвет
    #39182887
Alca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
MessageBox цвет
    #39182889
Alca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
MessageBox цвет
    #39183253
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри в сторону WM_CTLCOLORDLG
А вообще непонятно что это за окно WIN API или библиотека какая.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39183341
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыхин СергейСмотри в сторону WM_CTLCOLORDLG
А вообще непонятно что это за окно WIN API или библиотека какая.

Где ты WM_CTLCOLORDLG будешь обрабатывать? Оно обрабатывается в окне-родителе элемента UI, который нужно
раскрасить. А это в случае MessageBox окно MessageBox, оно системное, и его функция окна тоже системая, можно только
хуками ловить, но всё равно остаётся один главный вопрос -- НАФИГА ?
Если аналог окна MessageBox делается за час, хороший -- за 3 дня..
...
Рейтинг: 0 / 0
MessageBox цвет
    #39183754
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivМалыхин СергейСмотри в сторону WM_CTLCOLORDLG
А вообще непонятно что это за окно WIN API или библиотека какая.

Где ты WM_CTLCOLORDLG будешь обрабатывать? Оно обрабатывается в окне-родителе элемента UI, который нужно
раскрасить. А это в случае MessageBox окно MessageBox, оно системное, и его функция окна тоже системая, можно только
хуками ловить, но всё равно остаётся один главный вопрос -- НАФИГА ?
Если аналог окна MessageBox делается за час, хороший -- за 3 дня..
Хочу еще рамочку под золото забабахать.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39183755
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдХочу еще рамочку под золото забабахать.
остальные проблемы стало быть решены?
...
Рейтинг: 0 / 0
MessageBox цвет
    #39185745
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, рамку из золота, а потом мне сидеть перед всякими нокия-хренокия-киас-тюнсами, которые все расскрашены, как новогодняя елка в кремлевском дворце съездов, но при этом умудряются нихрена не работать или даже тупо падают в seqfault.

я бы реально таких деятелей, что это все делают, расстреливал бы (в профессиональном смысле).

главное, качаешь это говно полчаса, ибо 20 гигабайт, ставишь еще полчаса, оно запускается и тут же - шмяк - в койку.

а делать должна только импорт номеров телефонов из аппарата.

ваще слов нет.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39185808
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Красивее всего драйвера ставились для видях Nvidia и сканеров HP в 98м году.
Берёшь значить компаХт диск. Запускаешь экзешник. А там - красотища.
И всякие анимированные окошки. И музыка звучит. И в режиме визарда
всё ставится. Только дави next->next...

А в конечном счёте тоже самое я стал делать через панель управления,
установка дров e.t.c. и кликал на inf-файлик. А потом вообще в эпоху
этих ваших интернетов windows завёл репозитарий дров и эти нарядные
сопутствующие компакт-диски я стал сразу выбрасывать в мусорное ведро.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39185842
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Набора контролов в виндах хватает для 99% случаев. Если контролов не хватает - проблемы в архитектуре.
- Стандартного GUI(API) винды вообще хватает для нормального отображения любой информации для юзера. Тут всё строже, лучше сильно придерживаться этого стандарта (т.е. никак не велосипедить)
...
Рейтинг: 0 / 0
MessageBox цвет
    #39185849
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у меня десятка стоит. И тут уже таких бантиков сбоку понакручено - мама не горюй.
И tiles, и ribbons. И окна с text search. Похоже от строгости мы уже отказались.

Не знаю насколько они стандартны - но наверное уже являются частью GDI.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39185872
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе знаю насколько они стандартны - но наверное уже являются частью GDI.
GDI/Direct2D/Direct3D - это инcтрумент для рисования хрени

хрень живёт в shell и экстеншнах
...
Рейтинг: 0 / 0
MessageBox цвет
    #39186004
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот у меня десятка стоит. И тут уже таких бантиков сбоку понакручено - мама не горюй.
И tiles, и ribbons. И окна с text search. Похоже от строгости мы уже отказались.

Не знаю насколько они стандартны - но наверное уже являются частью GDI.


мне как раз кажется Win10 наоборот наведет порядок с этим делом, у них теперь в моде очень простой и понятный интерфейс.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39186244
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М-м-м-дя! Тему пора на ПТ переносить.
...
Рейтинг: 0 / 0
MessageBox цвет
    #39186300
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.codeguru.com/cpp/w-p/win32/messagebox/article.php/c14605/Fancy-Custom-MessageBox.htm

Introduction
One of the most used Windows API functions is MessageBox. You easily can set its contents (caption, text, and buttons) and behavior (application, task, or system modal) but it's not flexible enough to allow changing, for example, its appearance. Of course, you can make your own dialog box, based on a dialog resource template, but this is not always the handiest choice. This article shows a simple method for customizing a message box's appearance, but not only the appearance.

Here is an example of message box with a custom background (it can be your company logo as well) and changed text color.


A First Try
After searching SDK headers, some people could be tempted to handle the WM_CTLCOLORMSGBOX message (not documented but defined in WINUSER.H). It seems to be destined, like the other WM_CTLCOLORxxx messages (WM_CTLCOLORSTATIC, WM_CTLCOLOREDIT, and so forth), to be sent to the parent window when a message box is about to be drawn. Then, it's just "a walk in the park" to change the message box text color, backround color, and so on.

That's no use! You can try handling WM_CTLCOLORMSGBOX as in the following example and see that the WM_CTLCOLORMSGBOX message is never sent.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam,
                         LPARAM lParam)
{
   switch(uMsg)
   {
      //...
      HANDLE_hWnd, WM_CTLCOLORMSGBOX, Dlg_OnCtlColorMsgBox;
   }
   return FALSE;
}
 
HBRUSH Dlg_OnCtlColorMsgBox(HWND hWnd, HDC hdc, HWND hWndChild,
                            int type)
{
   HBRUSH hbr = NULL;
   // Just for testing WM_CTLCOLORMSGBOX message.
   if(CTLCOLOR_MSGBOX == type)
   {
      // hbr = ... get a valid brush handle to return ...
      // But it NEVER enters here!!!
   }
   return hbr;
}


What Can be Done?
One idea is to trap the dialog box creation to subclass it, and then use the application-defined window procedure to handle messages that allow changing the appearance like in any other dialog window procedure. For that, you can use a CBT (computer-based training) hook.

CbtHookProc: the CBT Hook Procedure
Here is the implementation of the hook procedure:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
LRESULT CALLBACK CbtHookProc(int nCode, WPARAM wParam,
                             LPARAM lParam)
{
   if(nCode < 0)
   {
      return ::CallNextHookEx(cmbv.hHook, nCode, wParam, lParam);
   }
   switch(nCode)
   {
   case HCBT_CREATEWND:    // a window is about to be created
      {
         LPCBT_CREATEWND lpCbtCreate = (LPCBT_CREATEWND)lParam;
         if(WC_DIALOG == lpCbtCreate->lpcs->lpszClass)
         {
            // WC_DIALOG is the class name of message box but it
            // has not yet had a window procedure set.
            // So keep in mind the handle to sublass it later when
            // its first child is about to be created.
            cmbv.hWnd = (HWND)wParam;
         }
         else
         {
            if((NULL == cmbv.lpMsgBoxProc) && (NULL != cmbv.hWnd))
            {
               // subclass the dialog 
               cmbv.lpMsgBoxProc = 
                  (WNDPROC)::SetWindowLong(cmbv.hWnd, GWL_WNDPROC,
                     (LONG)CustomMessageBoxProc);
            }
         }
      }
      break;
   case HCBT_DESTROYWND:    // a window is about to be destroyed
      {
         if(cmbv.hWnd == (HWND)wParam)    // it's our messge box
         {
            // so set back its default procedure
            ::SetWindowLong(cmbv.hWnd, GWL_WNDPROC,
                            (LONG)cmbv.lpMsgBoxProc);
         }
      }
   }
   return 0;
}


You can observe a little trick in the code above: The dialog box is not subclassed when its own creation is signaled. That's because, at that time, it has not yet associated a procedure. You know that any message box contains at least one control, so you subclass it a little bit later, when its first child is about to be created.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / MessageBox цвет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]