Toolbar verschieben
-
Hallo
Ich möchte eine Toolbar an einer Position (x,y) mit der Ausmaßen (l,h) haben
Ich habe es mit
CreateWindowEx( WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, (LPSTR) NULL, WS_CHILD |WS_VISIBLE|WS_BORDER, 10, 330, 600, 22, hWnd, (HMENU) ID_TOOLBAR, ((LPCREATESTRUCT)lParam)->hInstance, NULL );versucht, aber es erscheint immer noch bei (0,0)
warum geht funktioniert das nicht ?
-
Afaik wird eine Toolbar immer oben links beim Parent-Fenster erstellt. Mach dir einfach ein rahmenloses Fenster, welches du dort platzierst, wo die Toolbar hin soll, und als Child dann die Toolbar. Dann kannst du mittels Verschieben des Parentfensters auch die neue Position on-the-fly ändern.

-
Verschiebt dein Parent-Window eventuell das Fenster immer in WM_SIZE?
-
WM_SIZE ? Nein
Ich glaub ich lass di da wo sie ist

Danke
-
kannst du den ganzen code posten?
-
habs aus den faq entnommen:
// Toolbar einrichten HWND Tool_create( HINSTANCE instance, HWND hwnd, int style ) { InitCommonControls(); //Create window for toolbar, parent is current window HWND hwnd_toolbar = CreateWindowEx( 0, TOOLBARCLASSNAME, (LPSTR) NULL, WS_CHILD | style, 0, 200, 0, 0, hwnd, (HMENU) ID_TOOLBAR, instance, NULL ); if (!hwnd) //Continue if creating toolbar was successfull { return NULL; } //Add Standard-Buttons to toolbar's Image-List TBADDBITMAP bitid; bitid.hInst = HINST_COMMCTRL; bitid.nID = IDB_STD_SMALL_COLOR; SendMessage(hwnd_toolbar, TB_ADDBITMAP, 1, (long)&bitid); SendMessage(hwnd_toolbar, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0); //Backward compatiblity ShowWindow(hwnd_toolbar, SW_SHOW); //Show Toolbar! return hwnd_toolbar; }und dann herumexperimentiert.
aufgerufen wird die Funktion :hwndCtrl[ID_TOOLBAR] =Tool_create(((LPCREATESTRUCT)lParam)->hInstance,hWnd,WS_VISIBLE);
-
Ich hab bisher auch keine andere Möglichkeit gefunden, als den Weg den Ynnus beschrieben hat

-
Und wie kann die Toolbar das machen?
-
An application sends the TB_AUTOSIZE message after causing the size of a toolbar to change either by setting the button or bitmap size or by adding strings for the first time.
Also ich würde am Ende der Funktion nochmal MoveWindow aufrufen.
-
ich hab versucht nachdem ich alle Button zugefügt habe mit MoveWindow()
zu verschieben . Das Ding steht immer noch oben in der Ecke
-
kannst du den ganzen code schreiben, damit ich mal compilieren und ausprobieren kann?
-
hmm, ist schon ein größeres Projekt . mal schauen ob ich es abspecken kann
-
ok dann bau ich mir besser ein eigenes beispiel und teste ein bisschen rum.
könnte sein das die toolbar WM_SIZE abfängt und sein eigenes dinge durchzieht.

-
ah hier stehts:
Also, the toolbar window procedure automatically adjusts the size of the toolbar whenever it receives a WM_SIZE or TB_AUTOSIZE message.
also wenn man MoveWindow aufruft kriegt die Toolbar die WM_SIZE nachricht und dann passt die toolbar sich dem parent fenster an.