Разноцветный Listbox в WindowsCE
От: Nokin  
Дата: 17.08.10 08:46
Оценка:
В приложении необходимо использовать Listbox с цветами, отличными от стандартных.
Для указанных целей используется обработка сообщения WM_CTLCOLORLISTBOX стандартным образом.

         case WM_CTLCOLORLISTBOX:
            if ((HWND)lParam==hList) {
                SetTextColor((HDC)wParam,RGB(255,255,255));
                SetBkColor((HDC)wParam,RGB(0,0,0));
                return (LRESULT)hBrush;
            }


Сам Listbox создается следующим образом

hList=CreateWindow(TEXT("listbox"),NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
            LBS_NOTIFY,20,30,150,200,hWnd,(HMENU)0,g_hInst,NULL);



Если главное окно приложения создано с помощью функции CreateWindow(), то раскрашенный Listbox отображается как нужно


Однако, приложение сделано на основе диалога, Listbox выглядит не надлежащим образом: фон, незанятый итемами, не закрашивается нужным цветом


Как решить такую проблему?

MinimalWindowProgram.ZIP
MinimalDlgProgramCPPPPC.zip
listbox windowsce colored listbox
Re: Разноцветный Listbox в WindowsCE
От: Onorin Нигерия  
Дата: 20.08.10 07:22
Оценка:
Здравствуйте, Nokin, Вы писали:

N>В приложении необходимо использовать Listbox с цветами, отличными от стандартных.

N>Для указанных целей используется обработка сообщения WM_CTLCOLORLISTBOX стандартным образом.

N>
N>         case WM_CTLCOLORLISTBOX:
N>            if ((HWND)lParam==hList) {
N>                SetTextColor((HDC)wParam,RGB(255,255,255));
N>                SetBkColor((HDC)wParam,RGB(0,0,0));
N>                return (LRESULT)hBrush;
N>            }
N>


N>Сам Listbox создается следующим образом


N>
N>hList=CreateWindow(TEXT("listbox"),NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
N>            LBS_NOTIFY,20,30,150,200,hWnd,(HMENU)0,g_hInst,NULL);

N>



N>Если главное окно приложения создано с помощью функции CreateWindow(), то раскрашенный Listbox отображается как нужно

N>

N>Однако, приложение сделано на основе диалога, Listbox выглядит не надлежащим образом: фон, незанятый итемами, не закрашивается нужным цветом

N>

N>Как решить такую проблему?


N>MinimalWindowProgram.ZIP

N>MinimalDlgProgramCPPPPC.zip

В WM_ERASEBKGND закрасить нужным цветом
Re[2]: Разноцветный Listbox в WindowsCE
От: Nokin  
Дата: 20.08.10 10:36
Оценка:
O>В WM_ERASEBKGND закрасить нужным цветом

Пробовал, при перерисовке, ListBox все-равно закрашивает эту область белым.
Re: Разноцветный Listbox в WindowsCE
От: Nokin  
Дата: 20.08.10 11:01
Оценка:
N>Однако, приложение сделано на основе диалога, Listbox выглядит не надлежащим образом: фон, незанятый итемами, не закрашивается нужным цветом

Что интересно, если тот же самый проект собрать под Win32, все выглядит как надо.


Так что получается, что проблема в реализации CE?

Код здесьMinimalDlgProgramCPPWin32.zip
Re[3]: Разноцветный Listbox в WindowsCE
От: Onorin Нигерия  
Дата: 20.08.10 13:47
Оценка:
Здравствуйте, Nokin, Вы писали:


O>>В WM_ERASEBKGND закрасить нужным цветом


N>Пробовал, при перерисовке, ListBox все-равно закрашивает эту область белым.


А кисть какая?
Re[4]: Разноцветный Listbox в WindowsCE
От: Nokin  
Дата: 27.08.10 12:43
Оценка:
N>>Пробовал, при перерисовке, ListBox все-равно закрашивает эту область белым.

O>А кисть какая?


GetStockBrush(BLACK_BRUSH)

Если смотреть под отладчиком, то при стирании действительно закрашивается область черным, но потом, когда элемент отрисовывается, белый фон появляется.
Re: Разноцветный Listbox в WindowsCE
От: Nokin  
Дата: 27.08.10 12:44
Оценка:
Может быть есть вариант решить проблему через SetSystemColor?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.