Jak zmienić lokalizację paska menu w WinAPI

0

Cześć
Czy ktoś z was wie jak zmienić lokalizację paska menu?
Mam taką funkcję:

void Controls( HWND hwnd )
{
	HMENU hMenubar;
	HMENU hMenu;

	hMenubar = CreateMenu();
	hMenu = CreateMenu();

	AppendMenuW(hMenu, MF_STRING, 1, L"&New");
	AppendMenuW(hMenu, MF_STRING, 2, L"&Open");
	AppendMenuW(hMenu, MF_SEPARATOR, 0, NULL);
	AppendMenuW(hMenu, MF_STRING, 3, L"&Quit");

	AppendMenuW(hMenubar, MF_POPUP, (UINT_PTR)hMenu, L"&File");
	SetMenu(hwnd, hMenubar);
}

którą wywołuję w zdarzeniu WM_CREATE głównego okna.
Tworzy ona pasek menu na samej górze okna.
Chciałbym ten pasek przesunąć nieco w dół, ale totalnie nie mam pojęcia jak.
Czy ktoś z was mógłby mi pomóc?

0

Nie da rady bez większej ilości kodu.
Możnaby utworzyć menu w oknie bez belki, wiszącym gdzieś nad właściwym oknem, ale tak się nie robi.
No niestety, firma zza oceanu od lat postępuje z menubarem, jak Intel z wybrakowaną listą instrukcji. Ale są sposoby.

Trzeba zasymulować menu za pomocą kontrolki toolbar. W linku poniżej masz (bardzo stary) przykład w MFC, który kompiluje się i działa w prawdopodobnie VS5.
W VS6 też działa, ale wymaga drobnej korekty na końcu CCoolBar::Create by pozbyć się jednego błędu kompilacji, a w nowszych (sprawdzałem w VS2008) wymaga ręcznego poprawienia wielu błędów, by w ogóle skompilować, a potem sprawić, by rebar został utworzony.
http://www.microsoft.com/msj/0199/c/c0199.aspx (słowa kluczowe Jan99CQA, MBTest)

0
sapero napisał(a):

Nie da rady bez większej ilości kodu.
Możnaby utworzyć menu w oknie bez belki, wiszącym gdzieś nad właściwym oknem, ale tak się nie robi.
No niestety, firma zza oceanu od lat postępuje z menubarem, jak Intel z wybrakowaną listą instrukcji.

Też później na to wpadłem, ale zrobiłem coś innego. Dałem puste okno WS_POPUP i do niego dałem menu.
Nie wiem czy jest to poprawnie i czy tak się robi, ale nawet działa :)
a na pewno da się to zrobić bo nawet Internet Explorer czy Explorator Windows ma ten pasek dużo niżej.

sapero napisał(a):

Trzeba zasymulować menu za pomocą kontrolki toolbar. W linku poniżej masz (bardzo stary) przykład w MFC, który kompiluje się i działa w prawdopodobnie VS5.

Właśnie zależy mi żeby to nie było MFC, ani żadna inna biblioteka tylko czyściutkie C i WinApi, ale dzięki za link.
Może coś ciekawego tam znajdę.

0

http://msdn.microsoft.com/en-us/library/windows/desktop/ms647995(v=vs.85).aspx

MSDN napisał(a)

A menu can be assigned to any window that is not a child window.

1 użytkowników online, w tym zalogowanych: 0, gości: 1