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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
15-1152640667
ArtemESC
2006-07-11 21:57
2006.08.06
Где можно заказать/купить пульт...


6-1143130382
RusGl
2006-03-23 19:13
2006.08.06
idHTTP, SSL и Connection Closed Gracefully


2-1153366193
RobinBad
2006-07-20 07:29
2006.08.06
TRichEdit Line?


6-1139059311
Get_
2006-02-04 16:21
2006.08.06
TIdTelnetServer, помогите избавится от ошибок


2-1152884670
Sirus
2006-07-14 17:44
2006.08.06
Замена сообщения об ошибке





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский