Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DrawThemeBackground - CaptionButton - Windows XP (.NET) [D6, WinXP]


Страницы:   1 2

Ученик ©   (2002-10-02 09:01:00) 

Рисуется кнопка (своя) в заголовке окна с использованием DrawThemeBackground (WP_MINBUTTON),
Проблема: на кнопке присутствует значок минимизации;
Вопрос: возможно ли рисование кнопки без картинки, может режим какой-то надо установить, или в параметры чего-нибудь добавить ?


Ученик   (2002-10-04 13:20:00) [21]

>Игорь Шевченко © (04.10.02 13:08)
Нарисовать кнопку такую же как системные кнопки в заголовке окна (XP, .NET), но со своей картинкой


Игорь Шевченко   (2002-10-04 13:08:00) [22]

Ученик © (04.10.02 13:04)

Весьма вероятно. Но я совсем понимаю, что тебе надо. Может, поподробнее ?


Ученик   (2002-10-04 13:04:00) [23]

Ученик © (04.10.02 13:00)
Использование DrawFrameControl отключает XP-стиль окна


Ученик   (2002-10-04 13:00:00) [24]

>Игорь Шевченко © (04.10.02 12:54)
Нет


Игорь Шевченко   (2002-10-04 12:54:00) [25]

Ученик © (04.10.02 12:34)

Значок минимизации рисуется функцией DrawFrameControl


Ученик   (2002-10-04 12:34:00) [26]

>Ученик © (04.10.02 12:33)
Имеется ввиду как рисуется значок минимизации, перехват, вроде, налажен


Ученик   (2002-10-04 12:33:00) [27]

>Игорь Шевченко © (04.10.02 12:25)
Поэтому и вопрос в форуме, как добиться, пока рисунок затирается после DrawThemeBackground (но решение не очень),
есть еще идея перехватить вывод картинки, но какой функцией это делается пока не понятно.


Игорь Шевченко   (2002-10-04 12:25:00) [28]

Ученик © (04.10.02 12:14)

По моему скромному мнению, DrawThemeBackground не распозанет такого пользовательского элемента, как нестандартная кнопка в заголовке окна. Может, я и ошибаюсь...


Ученик   (2002-10-04 12:25:00) [29]

>Termik © (04.10.02 12:16)
Спасибо, но нужны кнопки


Ученик   (2002-10-04 12:24:00) [30]

>Игорь Шевченко © (04.10.02 11:57)

Код получше (это Delphi 7)

procedure WMNCPaint(var Message : TWMNCPaint); message WM_NCPAINT;

uses
Themes, XPMan;

procedure TForm1.WMNCPaint(var Message : TWMNCPaint);
var
DC : HDC;
Details: TThemedElementDetails;
begin
inherited;
DC := GetWindowDC(Handle);
if DC <> 0 then try
if ThemeServices.ThemesEnabled then begin
Details := ThemeServices.GetElementDetails(twMinButtonNormal);
ThemeServices.DrawElement(DC, Details, Rect(100, 5, 125, 30));
end
finally
ReleaseDC(Handle, DC)
end
end;


Termik   (2002-10-04 12:16:00) [31]

Обязательно так рисовать ?
А вот так не подойдет ?

type
TMyForm=class(TForm)
procedure wmSysCommand(var Message:TMessage); message WM_SYSCOMMAND;
end;
const
ID_ABOUT = WM_USER+1;
ID_CALENDAR=WM_USER+2;
ID_EDIT = WM_USER+3;
ID_ANALIS = WM_USER+4;

implementation

procedure TMyForm.wmSysCommand;
begin
case Message.wParam of
ID_CALENDAR:DatBitBtnClick(Self) ;
ID_EDIT :EditBitBtnClick(Self);
ID_ANALIS:AnalisButtonClick(Self);
end;

inherited;

end;



procedure TMyForm.FormCreate(Sender: TObject);
var SysMenu:THandle;
begin
SysMenu:=GetSystemMenu(Handle,False);
InsertMenu(SysMenu,Word(-1),MF_SEPARATOR,ID_ABOUT,"");
InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Calendar, "Calendar");
InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Analis, "Analis");
InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Edit, "Edit");
end;


Ученик   (2002-10-04 12:14:00) [32]

>BP_xxxx

Кнопка будет не того стиля.

uses
Themes;

var
ThemedWindow : TThemedWindow;
...
ThemedWindow := twMinButtonNormal;

if ThemeServices.ThemesEnabled then begin
Details := ThemeServices.GetElementDetails(ThemedWindow);
ThemeServices.DrawElement(FCanvas.Handle, Details, FButtonRect);
end;


Игорь Шевченко   (2002-10-04 11:57:00) [33]

WP_MINBUTTON - это кнопка минимизации.

Может, BP_xxxx поможет ?
(XP под рукой нет, если не получится, давай код, дома попробую)


Ученик   (2002-10-04 11:49:00) [34]

>Игорь Шевченко © (04.10.02 11:30)
Какую часть сообщения ?


Игорь Шевченко   (2002-10-04 11:30:00) [35]

А поподробнее ?


Ученик   (2002-10-04 10:35:00) [36]

Проблема еще не решена, может есть идеи ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо