Форум: "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 и NT4procedure 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 и NT4procedure 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