Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

Как изменить цвет меню c помошью ф-й WinAPI?   Найти похожие ветки 

 
Maxus ©   (2003-05-27 21:15) [0]

Ребята, задаю Вам этот вопрос, потому что надежда осталась только на Вас :))
Столкнулся со следующей проблемой: пишу на Visual C++ (просьба не ругаться) без использования MFC и иже с ними, т.е. в основном приходится писать на WinAPI. Поставили следующее требование: хотим чтобы меню программы было другого цвета (желтого например).
Что я перепробовал:
1) SetSysColors(...) - не подходит т.к. хачит цвета меню во всей системе :(
2) чудесная есть командочка SetMenuInfo(hMenu,MENUINFO) - которая тоже к сожалению не подходит т.к. поддерживается не всеми операционками (2000, 98)
3) отрисовка меню самому: MFT_OWNERDRAW - здесь сходу тоже не получилось, а именно: не получилось сделать СРАЗУ ВСЕ меню типа OWNERDRAW, пришлось делать каждый элемент меню вручную :( естественно после этого нужным мне цветом рисуются только элементы меню, а полоска меню, остается серой :(( Причем выглядит это настолько кустарно, что понимаешь, что делаешь что-то не совсем так ;)

Вопрос такой: можно ли изменить цвет меню каким-нибудь более красивым или хотя бы более эффективным способом?


 
Song ©   (2003-05-27 21:17) [1]

Скачать другое наиболее подходящее меню. Поверь: это легче


 
Nick Denry ©   (2003-05-28 21:43) [2]

Можно, подожди еще день, плз, а то я протебя забыл.........
А ввобще ладно, держи что есть, если непонятно пиши еще.
А вообще на wm_draw проверяешь: if lparam(PDrawItemStruct)=ODT_MENU не для каждого элемента, а для типа контрола, вот тебе код, модифицируй як хочешь!


WM_DRAWITEM:
begin

if PDrawItemStruct(lparam).hwndItem=button1 then begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonQuit);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin
{TBmp:=bmpButtonQuit;
bmpButtonQuit:=bmpButtonQuitP;
bmpButtonQuitP:=Tbmp;}
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonQuitP);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end else begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonQuit);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end;
end;
end;
if PDrawItemStruct(lparam).hwndItem=button2 then begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonHide);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin
{TBmp:=bmpButtonQuit;
bmpButtonQuit:=bmpButtonQuitP;
bmpButtonQuitP:=Tbmp;}
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonHideP);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end else begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonHide);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end;
end;
end;

to be continied.....


 
Nick Denry ©   (2003-05-28 21:43) [3]

Можно, подожди еще день, плз, а то я протебя забыл.........
А ввобще ладно, держи что есть, если непонятно пиши еще.
А вообще на wm_draw проверяешь: if lparam(PDrawItemStruct)=ODT_MENU не для каждого элемента, а для типа контрола, вот тебе код, модифицируй як хочешь!


WM_DRAWITEM:
begin

if PDrawItemStruct(lparam).hwndItem=button1 then begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonQuit);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin
{TBmp:=bmpButtonQuit;
bmpButtonQuit:=bmpButtonQuitP;
bmpButtonQuitP:=Tbmp;}
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonQuitP);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end else begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonQuit);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end;
end;
end;
if PDrawItemStruct(lparam).hwndItem=button2 then begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonHide);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin
{TBmp:=bmpButtonQuit;
bmpButtonQuit:=bmpButtonQuitP;
bmpButtonQuitP:=Tbmp;}
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonHideP);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end else begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonHide);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end;
end;
end;

to be continied.....


 
Nick Denry ©   (2003-05-28 21:45) [4]

в продолжение...


if PDrawItemStruct(lparam).hwndItem=button3 then begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonSave);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin

dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonSaveP);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end else begin
dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,bmpButtonSave);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left,PDrawItemStruct(lparam).rcItem.Top,32,
32,dcl,0,0,SrcCopy);
deletedc(dcl);
end;
end;
end;


if PDrawItemStruct(lparam).itemID=ID_RESTORE then begin
procDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuOptions,bmpMenuOptionsH,"Options");
end;



if PDrawItemStruct(lparam).itemID=ID_MINIMIZE then begin
procDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuHide,bmpMenuHideH,"Hide");
end;

if PDrawItemStruct(lparam).itemID=ID_QUIT then begin
procDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuQuit,bmpMenuQuitH,"Exit");
end;


 
Nick Denry ©   (2003-05-28 21:47) [5]

продолжение 3.3


if PDrawItemStruct(lparam).itemID=ID_CLOSECD then begin
ProcDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuCloseCD,bmpMenuCloseCDH,"Close CD");
{dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn3bmp);

BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,32,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
SetBkColor(PDrawItemStruct(lparam).HDC, RGB(0,128,0));
DrawText(PDrawItemStruct(lparam).hDC,PChar("Close CD"),Length("Close CD"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);
if (PDrawItemStruct(lparam).itemAction=ODA_SELECT) then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if ((PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0)
then begin

SetTextColor(PDrawItemStruct(lparam).HDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
SetBkColor(PDrawItemStruct(lparam).HDC, RGB(0,128,0));
brush:=CreateSolidBrush(RGB(0,255,0));

DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC,brush));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hDC,CreatePen(PS_SOLID ,0,RGB(0,128,0))));


end else begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC, RGB(0,128,0)));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_SOLID ,0 ,GetSysColor(COLOR_MENU))));
end;

Rectangle(PDrawItemStruct(lparam).HDC, PDrawItemStruct(lparam).rcItem.Left,
PDrawItemStruct(lparam).rcItem.Top
,PDrawItemStruct(lparam).rcItem.Right,
PDrawItemStruct(lparam).rcItem.Bottom);

dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn3bmp);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,110,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
DrawText(PDrawItemStruct(lparam).hDC,PChar("Close CD"),Length("Close CD"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);

end;}
end;
if PDrawItemStruct(lparam).itemID=ID_OPENCD then begin
procDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuOpenCD,bmpMenuOpenCDH,
"Open CD");
{dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn4bmp);

BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,32,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
DrawText(PDrawItemStruct(lparam).hDC,PChar("CD Open"),Length("CD Open"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin

SetTextColor(PDrawItemStruct(lparam).HDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
SetBkColor(PDrawItemStruct(lparam).HDC, GetSysColor(COLOR_HIGHLIGHT));

DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC,GetSysColorBrush(COLOR_HIGHLIGHT)));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hDC,CreatePen(PS_SOLID ,0,GetSysColor(COLOR_MENUTEXT))));


end else begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC, GetSysColorBrush(COLOR_MENU)));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_SOLID ,0 ,GetSysColor(COLOR_MENU))));
end;


Rectangle(PDrawItemStruct(lparam).HDC, PDrawItemStruct(lparam).rcItem.Left,
PDrawItemStruct(lparam).rcItem.Top
,PDrawItemStruct(lparam).rcItem.Right,
PDrawItemStruct(lparam).rcItem.Bottom);

dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn4bmp);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,32,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
DrawText(PDrawItemStruct(lparam).hDC,PChar("CD Open"),Length("CD Open"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);

end;}

end;

{MessageBeep(mb_iconhand);}

{result:=SetBkColor(PDrawItemStruct(lparam).hDC, GetSysColor(COLOR_HIGHLIGHT));
if result=0 then MessageBox(MaINwND,PChar("4324234"),PChar("3424"),mb_ok);}
end;
end;


С уважением, Nick Denry.



 
Nick Denry ©   (2003-05-28 21:47) [6]

продолжение 3.3


if PDrawItemStruct(lparam).itemID=ID_CLOSECD then begin
ProcDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuCloseCD,bmpMenuCloseCDH,"Close CD");
{dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn3bmp);

BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,32,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
SetBkColor(PDrawItemStruct(lparam).HDC, RGB(0,128,0));
DrawText(PDrawItemStruct(lparam).hDC,PChar("Close CD"),Length("Close CD"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);
if (PDrawItemStruct(lparam).itemAction=ODA_SELECT) then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if ((PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0)
then begin

SetTextColor(PDrawItemStruct(lparam).HDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
SetBkColor(PDrawItemStruct(lparam).HDC, RGB(0,128,0));
brush:=CreateSolidBrush(RGB(0,255,0));

DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC,brush));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hDC,CreatePen(PS_SOLID ,0,RGB(0,128,0))));


end else begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC, RGB(0,128,0)));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_SOLID ,0 ,GetSysColor(COLOR_MENU))));
end;

Rectangle(PDrawItemStruct(lparam).HDC, PDrawItemStruct(lparam).rcItem.Left,
PDrawItemStruct(lparam).rcItem.Top
,PDrawItemStruct(lparam).rcItem.Right,
PDrawItemStruct(lparam).rcItem.Bottom);

dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn3bmp);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,110,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
DrawText(PDrawItemStruct(lparam).hDC,PChar("Close CD"),Length("Close CD"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);

end;}
end;
if PDrawItemStruct(lparam).itemID=ID_OPENCD then begin
procDrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuOpenCD,bmpMenuOpenCDH,
"Open CD");
{dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn4bmp);

BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,32,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
DrawText(PDrawItemStruct(lparam).hDC,PChar("CD Open"),Length("CD Open"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);
if PDrawItemStruct(lparam).itemAction=ODA_SELECT then
begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_NULL, 0, 0)));
if (PDrawItemStruct(lparam).itemState and ODS_SELECTED) <> 0 then begin

SetTextColor(PDrawItemStruct(lparam).HDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
SetBkColor(PDrawItemStruct(lparam).HDC, GetSysColor(COLOR_HIGHLIGHT));

DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC,GetSysColorBrush(COLOR_HIGHLIGHT)));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hDC,CreatePen(PS_SOLID ,0,GetSysColor(COLOR_MENUTEXT))));


end else begin
DeleteObject(SelectObject(PDrawItemStruct(lparam).HDC, GetSysColorBrush(COLOR_MENU)));
DeleteObject(SelectObject(PDrawItemStruct(lparam).hdc, CreatePen(PS_SOLID ,0 ,GetSysColor(COLOR_MENU))));
end;


Rectangle(PDrawItemStruct(lparam).HDC, PDrawItemStruct(lparam).rcItem.Left,
PDrawItemStruct(lparam).rcItem.Top
,PDrawItemStruct(lparam).rcItem.Right,
PDrawItemStruct(lparam).rcItem.Bottom);

dcl:=CreateCompatibleDC(menu_pstr.hdc);
SelectObject(dcl,btn4bmp);
BitBlt(PDrawItemStruct(lparam).hDC,PDrawItemStruct(lparam).rcItem.Left+2,PDrawItemStruct(lparam).rcItem.Top+1,32,
32,dcl,0,0,SrcCopy);
TextRect:=PDrawItemStruct(lparam).rcitem;
TextRect.Left:=TextRect.Left+36;
DrawText(PDrawItemStruct(lparam).hDC,PChar("CD Open"),Length("CD Open"),TextRect,
DT_SINGLELINE or DT_VCENTER or DT_Left);
deletedc(dcl);

end;}

end;

{MessageBeep(mb_iconhand);}

{result:=SetBkColor(PDrawItemStruct(lparam).hDC, GetSysColor(COLOR_HIGHLIGHT));
if result=0 then MessageBox(MaINwND,PChar("4324234"),PChar("3424"),mb_ok);}
end;
end;


С уважением, Nick Denry.



 
Maxus ©   (2003-05-30 12:42) [7]

Большое спасибо всем!!! ;)



Страницы: 1 вся ветка

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
6-10321
izx
2003-05-27 18:57
2003.08.04
Подключение из программы на Delphi к web серверу через proxy.


14-10368
Soft
2003-07-15 13:57
2003.08.04
Извиняюсь перед всем форумом


14-10424
Кен
2003-07-12 02:50
2003.08.04
Посоветуйте статистическую функцию ? Есть большой текст (Война и


14-10428
tlwlite
2003-07-18 00:39
2003.08.04
подскажите html редактор какой-нить.


4-10503
LOX
2003-06-01 17:56
2003.08.04
ListBox