Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как закрасить MainMenu?   Найти похожие ветки 

 
TankMan ©   (2004-03-09 21:52) [0]

Думал думал, не дадумался :(...Проблема вобщем такова, весь у меня интерфейс исполнен, в определенной цветовой гамме, а вот Mainmenu, серого цвета я себе позволить не могу - оно как бельмо на глазу... дайте примерчик, как закрасить сам mainmenu и его раскрывающийся список...


 
TankMan ©   (2004-03-09 21:52) [0]

Думал думал, не дадумался :(...Проблема вобщем такова, весь у меня интерфейс исполнен, в определенной цветовой гамме, а вот Mainmenu, серого цвета я себе позволить не могу - оно как бельмо на глазу... дайте примерчик, как закрасить сам mainmenu и его раскрывающийся список...


 
nexxiss ©   (2004-03-10 01:04) [1]

www.torry.net


 
nexxiss ©   (2004-03-10 01:04) [1]

www.torry.net


 
TankMan ©   (2004-03-10 05:48) [2]

Краткость- сестра таланта, но всетаки?


 
TankMan ©   (2004-03-10 05:48) [2]

Краткость- сестра таланта, но всетаки?


 
RDen   (2004-03-10 07:37) [3]

В Кладовке есть чё-то вроде ItemDraw


 
RDen   (2004-03-10 07:37) [3]

В Кладовке есть чё-то вроде ItemDraw


 
Игорь Шевченко ©   (2004-03-10 10:32) [4]


> а вот Mainmenu, серого цвета я себе позволить не могу


Придется позволить.

Выпадающее меню ты можешь раскрасить стандартным способом, через OwnerDraw, а саму полосу не сможешь, попробуй найти готовое меню, если повезет.


 
Игорь Шевченко ©   (2004-03-10 10:32) [4]


> а вот Mainmenu, серого цвета я себе позволить не могу


Придется позволить.

Выпадающее меню ты можешь раскрасить стандартным способом, через OwnerDraw, а саму полосу не сможешь, попробуй найти готовое меню, если повезет.


 
Плохиш   (2004-03-10 10:35) [5]

>TankMan ©   (09.03.04 21:52)

Извращаетесь, так делайте все меню ручками


 
Плохиш   (2004-03-10 10:35) [5]

>TankMan ©   (09.03.04 21:52)

Извращаетесь, так делайте все меню ручками


 
Игорь Шевченко ©   (2004-03-10 10:38) [6]

Плохиш   (10.03.04 10:35)


> так делайте все меню ручками


В этом случае даже ножками не поможет - полоса меню это такая же часть окна, как заголовок, и рисоваться должна аналогичными средствами, через WM_NCxxxxxxx


 
Игорь Шевченко ©   (2004-03-10 10:38) [6]

Плохиш   (10.03.04 10:35)


> так делайте все меню ручками


В этом случае даже ножками не поможет - полоса меню это такая же часть окна, как заголовок, и рисоваться должна аналогичными средствами, через WM_NCxxxxxxx


 
Плохиш   (2004-03-10 10:47) [7]

>Игорь Шевченко ©   (10.03.04 10:38) [6]
:-)
Если сказано все меню, то сюда полоса меню тоже входит. :-|
Берётся панелька и суются в неё всякие кнопочки и др. визуальные компонентики ;-)


 
Плохиш   (2004-03-10 10:47) [7]

>Игорь Шевченко ©   (10.03.04 10:38) [6]
:-)
Если сказано все меню, то сюда полоса меню тоже входит. :-|
Берётся панелька и суются в неё всякие кнопочки и др. визуальные компонентики ;-)


 
Игорь Шевченко ©   (2004-03-10 12:20) [8]

Плохиш   (10.03.04 10:47)

Или Toolbar ;)


 
Игорь Шевченко ©   (2004-03-10 12:20) [8]

Плохиш   (10.03.04 10:47)

Или Toolbar ;)


 
nexxiss ©   (2004-03-10 12:21) [9]

to> Игорь Шевченко:
полностью согласен, что с помощью WM_NCxxxxxx плюс перекрываем метод перерисовки компонента. Только так.
Еще можно свой компонент состряпать, что достаточно утомительно.


 
nexxiss ©   (2004-03-10 12:21) [9]

to> Игорь Шевченко:
полностью согласен, что с помощью WM_NCxxxxxx плюс перекрываем метод перерисовки компонента. Только так.
Еще можно свой компонент состряпать, что достаточно утомительно.


 
MetalFan ©   (2004-03-10 13:42) [10]

SetMenuInfo
The SetMenuInfo function sets information for a specified menu.

BOOL SetMenuInfo(
 HMENU hmenu,       // handle to menu
 LPCMENUINFO lpcmi  // menu information
);
где:
typedef struct tagMENUINFO {
 DWORD   cbSize;
 DWORD   fMask;
 DWORD   dwStyle;
 UINT    cyMax;
 HBRUSH  hbrBack;      
 DWORD   dwContextHelpID;
 ULONG_PTR  dwMenuData;
} MENUINFO, FAR *LPMENUINFO;
typedef MENUINFO CONST FAR *LPCMENUINFO;

где
hbrBack
Brush to use for the menu"s background.

Может поможет?


 
MetalFan ©   (2004-03-10 13:42) [10]

SetMenuInfo
The SetMenuInfo function sets information for a specified menu.

BOOL SetMenuInfo(
 HMENU hmenu,       // handle to menu
 LPCMENUINFO lpcmi  // menu information
);
где:
typedef struct tagMENUINFO {
 DWORD   cbSize;
 DWORD   fMask;
 DWORD   dwStyle;
 UINT    cyMax;
 HBRUSH  hbrBack;      
 DWORD   dwContextHelpID;
 ULONG_PTR  dwMenuData;
} MENUINFO, FAR *LPMENUINFO;
typedef MENUINFO CONST FAR *LPCMENUINFO;

где
hbrBack
Brush to use for the menu"s background.

Может поможет?


 
TankMan ©   (2004-03-10 22:33) [11]

Мдяя... а чуть-чуть по подробнее про WM_NCxxxxxx можно ?


 
TankMan ©   (2004-03-10 22:33) [11]

Мдяя... а чуть-чуть по подробнее про WM_NCxxxxxx можно ?


 
Игорь Шевченко ©   (2004-03-10 23:01) [12]

TankMan ©   (10.03.04 22:33)

Хороший совет: поискать уже готовый компонент/набор компонент, который красит полосу меню (да и само меню тоже) в нужный цвет.
Второй хороший совет: имитировать MainMenu, например Toolbar"ом, как в среде Delphi, Toolbar покрасить гораздо легче.

Даже если сказать чуть-чуть поподробнее про сообщения, посылающиеся неклиентской области окна, это займет очень много времени и места.


 
Игорь Шевченко ©   (2004-03-10 23:01) [12]

TankMan ©   (10.03.04 22:33)

Хороший совет: поискать уже готовый компонент/набор компонент, который красит полосу меню (да и само меню тоже) в нужный цвет.
Второй хороший совет: имитировать MainMenu, например Toolbar"ом, как в среде Delphi, Toolbar покрасить гораздо легче.

Даже если сказать чуть-чуть поподробнее про сообщения, посылающиеся неклиентской области окна, это займет очень много времени и места.


 
TankMan ©   (2004-03-10 23:56) [13]

А в чем собственно проблема с сообщениями посылающимися не клиентской оболасти окна? Разве не тоже самое что и обработка обычного WM_Paint?


 
TankMan ©   (2004-03-10 23:56) [13]

А в чем собственно проблема с сообщениями посылающимися не клиентской оболасти окна? Разве не тоже самое что и обработка обычного WM_Paint?


 
Игорь Шевченко ©   (2004-03-11 00:03) [14]

TankMan ©   (10.03.04 23:56)


> А в чем собственно проблема с сообщениями посылающимися
> не клиентской оболасти окна?


В том, что их не одно и они не настолько подробно документированы, как WM_PAINT.


 
Игорь Шевченко ©   (2004-03-11 00:03) [14]

TankMan ©   (10.03.04 23:56)


> А в чем собственно проблема с сообщениями посылающимися
> не клиентской оболасти окна?


В том, что их не одно и они не настолько подробно документированы, как WM_PAINT.


 
Игорь Шевченко ©   (2004-03-11 00:55) [15]

TankMan ©   (10.03.04 23:56)

см. MetalFan ©   (10.03.04 13:42) [10]

Для Windows больше чем 98 и NT4

procedure TfMain.Button1Click(Sender: TObject);
var
 Info : TMENUINFO;
begin
 FillChar(Info, SizeOf(Info), 0);
 Info.cbSize := SizeOf(Info);
 Info.fMask := MIM_APPLYTOSUBMENUS or MIM_BACKGROUND;
 Info.hbrBack := GetStockObject(WHITE_BRUSH);
 SetMenuInfo(MainMenu.Handle, Info);
 DrawMenuBar(Handle);
end;


 
Игорь Шевченко ©   (2004-03-11 00:55) [15]

TankMan ©   (10.03.04 23:56)

см. MetalFan ©   (10.03.04 13:42) [10]

Для Windows больше чем 98 и NT4

procedure TfMain.Button1Click(Sender: TObject);
var
 Info : TMENUINFO;
begin
 FillChar(Info, SizeOf(Info), 0);
 Info.cbSize := SizeOf(Info);
 Info.fMask := MIM_APPLYTOSUBMENUS or MIM_BACKGROUND;
 Info.hbrBack := GetStockObject(WHITE_BRUSH);
 SetMenuInfo(MainMenu.Handle, Info);
 DrawMenuBar(Handle);
end;


 
Игорь Шевченко ©   (2004-03-11 00:56) [16]

MetalFan ©   (10.03.04 13:42)

Спасибо :) Пора отвыкать от NT4


 
Игорь Шевченко ©   (2004-03-11 00:56) [16]

MetalFan ©   (10.03.04 13:42)

Спасибо :) Пора отвыкать от NT4


 
X9   (2004-03-11 11:58) [17]

А кто нибудь знает, как можно поменять цвет меню не только на белый, серый, чёрный, а как TColor. Например, когда в Delphi7 делаешь CLX-проект, то там у TMainMenu есть даже свойство Color типа TColor. Ведь как-то же всё-таки реализованно! Я порылся в QMenus.pas, нон так и не догнал, как это делается. Кому не в лом - посмотрите, а если нет исходников - могу выслать, в архиве немного весят - около 15Кб.


 
X9   (2004-03-11 11:58) [17]

А кто нибудь знает, как можно поменять цвет меню не только на белый, серый, чёрный, а как TColor. Например, когда в Delphi7 делаешь CLX-проект, то там у TMainMenu есть даже свойство Color типа TColor. Ведь как-то же всё-таки реализованно! Я порылся в QMenus.pas, нон так и не догнал, как это делается. Кому не в лом - посмотрите, а если нет исходников - могу выслать, в архиве немного весят - около 15Кб.


 
Игорь Шевченко ©   (2004-03-11 12:31) [18]


> А кто нибудь знает, как можно поменять цвет меню не только
> на белый, серый, чёрный, а как TColor.


Переведи вопрос для не имеющих D7 и не делающих CLX-проектов


 
Игорь Шевченко ©   (2004-03-11 12:31) [18]


> А кто нибудь знает, как можно поменять цвет меню не только
> на белый, серый, чёрный, а как TColor.


Переведи вопрос для не имеющих D7 и не делающих CLX-проектов


 
X9   (2004-03-12 06:36) [19]

CLX - библиотека для создания мультиплатформенных приложений. Я как-то заглянул туда - для интереса. Но я же говорю, что могу выслать QMenus.pas - аналог Menus.pas, только для CLX. Если кто-нибудь хочет посмотреть, то давайте мыло - вышлю.


 
X9   (2004-03-12 06:36) [19]

CLX - библиотека для создания мультиплатформенных приложений. Я как-то заглянул туда - для интереса. Но я же говорю, что могу выслать QMenus.pas - аналог Menus.pas, только для CLX. Если кто-нибудь хочет посмотреть, то давайте мыло - вышлю.


 
TankMan ©   (2004-03-12 22:47) [20]

Ну давайте мне ... TankMan@newmail.ru

... эх... закрасил я этот несчастный MainMenu...вобщем сделал, так - на обрисовке компонента потомка TMenuItem, узнаю размер окна, которому принадлежит мой потомок TMainMenu, и крашу как хочу, но проблема в том, что он дает размеры окна полностью, вместе с заголовком, а как узнать какой высоты заголовок, если он не стандартный? т.е. я переделал TMainMenu и TMenuItem, - сделал THMenu и ThMenuItem соответсвенно.... - программно создаю сам THMenu и далее к THMenu присоединяю THMenuItem и также , присоединяю другие THMenuItem к другим THMenuitem, т.е. делаю йерархию этих менюшек - все нормально, они закрашиваются и изменяют цвет как нужно вобщем все ОК, но вот сделать самостоятельный комопнент, который можно вывести на панель инструментов не получается  :((... т.е. если я даже вывожу на панельку THMenu, то мне всеравно приходится добовлять MenuItem в процессе старта программы :( а как переделать в нормальный компонент не знаю :(... может кто-нибудь посмотреть мои наброски?.. впринципе там ничего такого-то и нет, понимающему человеку хватит 5 минут чтобы разобраться...
Заранее благодарен...


 
TankMan ©   (2004-03-12 22:47) [20]

Ну давайте мне ... TankMan@newmail.ru

... эх... закрасил я этот несчастный MainMenu...вобщем сделал, так - на обрисовке компонента потомка TMenuItem, узнаю размер окна, которому принадлежит мой потомок TMainMenu, и крашу как хочу, но проблема в том, что он дает размеры окна полностью, вместе с заголовком, а как узнать какой высоты заголовок, если он не стандартный? т.е. я переделал TMainMenu и TMenuItem, - сделал THMenu и ThMenuItem соответсвенно.... - программно создаю сам THMenu и далее к THMenu присоединяю THMenuItem и также , присоединяю другие THMenuItem к другим THMenuitem, т.е. делаю йерархию этих менюшек - все нормально, они закрашиваются и изменяют цвет как нужно вобщем все ОК, но вот сделать самостоятельный комопнент, который можно вывести на панель инструментов не получается  :((... т.е. если я даже вывожу на панельку THMenu, то мне всеравно приходится добовлять MenuItem в процессе старта программы :( а как переделать в нормальный компонент не знаю :(... может кто-нибудь посмотреть мои наброски?.. впринципе там ничего такого-то и нет, понимающему человеку хватит 5 минут чтобы разобраться...
Заранее благодарен...


 
имя   (2004-03-14 05:05) [21]

Удалено модератором


 
имя   (2004-03-14 05:05) [21]

Удалено модератором



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

Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.034 c
1-1082906276
Seldon
2004-04-25 19:17
2004.05.09
Информация о Themes.pas


1-1082374017
cort33
2004-04-19 15:26
2004.05.09
Разбитие текста


6-1079677681
gosha
2004-03-19 09:28
2004.05.09
Обмен между базами


1-1082362011
serg128
2004-04-19 12:06
2004.05.09
Как заполнить данными MS Outlook из своего приложения?


3-1081697458
Mishenka
2004-04-11 19:30
2004.05.09
Добавление записи в таблицу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский