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

Вниз

SHAppBarMessage(ABM_SETSTATE, pabd) - занчение константы :(   Найти похожие ветки 

 
Мефисто   (2006-07-09 10:31) [0]

Здрасте всем!
Вотс и задам пожалуй вопросец на форум :)

Для воего taskbar нужно установить свойста: ABS_AUTOHIDE | ABS_ALWAYSONTOP

В MSDN есть такая запись: SHAppBarMessage(ABM_SETSTATE, pabd), дабы установить нужные мне значения. Но в D7, в ее модулях, константа  ABM_SETSTATE не объявлена :( Кто знает, какое значение должно быть присвоено данной константе?


 
Юрий Зотов ©   (2006-07-09 12:19) [1]


////
//// AppBar stuff
////
#define ABM_NEW           0x00000000
#define ABM_REMOVE        0x00000001
#define ABM_QUERYPOS      0x00000002
#define ABM_SETPOS        0x00000003
#define ABM_GETSTATE      0x00000004
#define ABM_GETTASKBARPOS 0x00000005
#define ABM_ACTIVATE      0x00000006  // lParam == TRUE/FALSE means activate/deactivate
#define ABM_GETAUTOHIDEBAR 0x00000007
#define ABM_SETAUTOHIDEBAR 0x00000008  // this can fail at any time.  MUST check the result
                                       // lParam = TRUE/FALSE  Set/Unset
                                       // uEdge = what edge
#define ABM_WINDOWPOSCHANGED 0x0000009
#define ABM_SETSTATE      0x0000000a

// these are put in the wparam of callback messages
#define ABN_STATECHANGE    0x0000000
#define ABN_POSCHANGED     0x0000001
#define ABN_FULLSCREENAPP  0x0000002
#define ABN_WINDOWARRANGE  0x0000003 // lParam == TRUE means hide

// flags for get state
#define ABS_AUTOHIDE    0x0000001
#define ABS_ALWAYSONTOP 0x0000002

#define ABE_LEFT        0
#define ABE_TOP         1
#define ABE_RIGHT       2
#define ABE_BOTTOM      3

typedef struct _AppBarData
{
   DWORD cbSize;
   HWND hWnd;
   UINT uCallbackMessage;
   UINT uEdge;
   RECT rc;
   LPARAM lParam; // message specific
} APPBARDATA, *PAPPBARDATA;

SHSTDAPI_(UINT_PTR) SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);

////
////  EndAppBar
////


 
Мефисто   (2006-07-09 12:23) [2]

Спасибо, большое, дядь Юра! ;)


 
Мефисто   (2006-07-09 16:20) [3]

Вот жешь, блин. Не выходит у меня чего-то каменный цветок, не могу приготовить свой TaskBar :(

Думал щяс, как по маслу... Ага, размечтался...

У меня почему-то параметры ABS_AUTOHIDE и ABS_ALWAYSONTOP передаются родному (системному) TaskBar-у, а не моему :)

Собственно листинг кода:

 private
   FABD: TAppBarData;
   { Private declarations }
 protected
   procedure CreateParams(var Params: TCreateParams); override;

const
 ABM_SETSTATE = 10;

// Регистрируем новый Bar в системе
procedure TAppForm.bnNewClick(Sender: TObject);
begin
 FillChar(FABD, SizeOf(TAppBarData), #0);

 FABD.cbSize := SizeOf(TAppBarData);
 FABD.hWnd := AppForm.Handle;
 FABD.uCallbackMessage := 0;
 FABD.uEdge := ABE_Top;
 FABD.rc := Rect(0, 0, 1280, 80);
 FABD.lParam := 0;

 SHAppBarMessage(ABM_NEW, FABD);
end;

// Удалем ранее зарегестрированный Bar
procedure TAppForm.bnRemClick(Sender: TObject);
begin
 SHAppBarMessage(ABM_REMOVE, FABD);
end;

// Устанавливаю клиентскую область под Bar и в эту область равняю форму AppForm
procedure TAppForm.bnSetClick(Sender: TObject);
begin
 SHAppBarMessage(ABM_SETPOS, FABD);
 AppForm.BoundsRect := FABD.rc;

 // Здесь пытаюсь назначить стиль автоматически скрываться и
 // всегда быть сверху, но почемуто данные параметры передаются
 // родному системному TaskBar-у
 FABD.lParam := LParam(ABS_AUTOHIDE or ABS_ALWAYSONTOP);
 SHAppBarMessage(ABM_SETSTATE, FABD);
end;

// Как я понял не всякое окно можно прилепить в область TaskBar-а.
// В связи с чем изменил стиль окна

procedure TAppForm.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.Style := Params.Style - WS_SYSMENU or WS_MAXIMIZEBOX or WS_MINIMIZEBOX;
 Params.ExStyle := Params.ExStyle + WS_EX_APPWINDOW + WS_EX_TOOLWINDOW;
end;

Вопрос на данный момент таков: как ABS_AUTOHIDE и ABS_ALWAYSONTOP назначить для моего собственного TaskBar-а? Как тут правильно его (TaskBar) "приготовить"? :)

P.S. Подозреваю, что вопросов по TaskBar может еще добавться. Если, что модераторам данную ветку можно перенсти в соотвествующую конференцию.



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

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

Наверх




Память: 0.48 MB
Время: 0.038 c
2-1153402661
Вовка
2006-07-20 17:37
2006.08.06
Как узнать числовое значение CPU Usage (%) ?


3-1148966505
WG
2006-05-30 09:21
2006.08.06
SQL выборка из таблицы с датами последнего изменения


3-1149135442
Muzzy
2006-06-01 08:17
2006.08.06
HELP!!! DataSet при Insert ругается, что база read-only.


15-1152592598
antonn
2006-07-11 08:36
2006.08.06
вопросик по авибилетам...


2-1153074505
alexandrine
2006-07-16 22:28
2006.08.06
Сорри за простой, наверное вопрос...