Sie können ein Fenster ohne Titelleiste, zum Beispiel
CreateWindow(className, title, WS_THICKFRAME | WS_POPUP, ...)
Dann WM_NCHITTEST
außer Kraft schaffen die Anforderungen zum Bewegen des Fensters nach unten und zu ändern.
Wenn Fenster Titelleiste hat, zum Beispiel:
CreateWindow(className, title, WS_OVERLAPPEDWINDOW, ...)
Dann überschreiben hinzufügen für WM_WINDOWPOSCHANGING
auch:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_NCHITTEST:
{
LRESULT lresult = DefWindowProc(hwnd, msg, wParam, lParam);
switch (lresult)
{
case HTTOP: lresult = HTCLIENT; break;
case HTTOPLEFT: lresult = HTLEFT; break;
case HTTOPRIGHT: lresult = HTRIGHT; break;
}
return lresult;
}
case WM_WINDOWPOSCHANGING:
{
WINDOWPOS* wndpos = (WINDOWPOS*)lParam;
wndpos->y = 100;//choose a fixed position
break;
}
...
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
Ist das für ein Kind Fenster? Wenn Sie zeigen, was Sie bereits getan haben, wäre es leichter zu verstehen. –
Nur eine einfache exe erstellen Sie ein Fenster mit 'CreateWindowEx'. Viele Hilfsklassen sind an der Erstellung des Fensters beteiligt, so dass es schwierig ist, den gesamten relevanten Code zu veröffentlichen. Ich bin hoffentlich auf der Suche nach einer einfachen Möglichkeit, das vorhandene 'HWND' zu manipulieren, um das zu erreichen. – idanshmu
Sie meinen, Sie möchten nicht, dass der Benutzer das Fenster verschieben kann? (Dazu müssen Sie die Beschriftung entfernen und eine benutzerdefinierte Größenanpassung implementieren.) - oder suchen Sie nach "SetWindowPos (hwnd, 0, 0, 0, width, height, SWP_NOMOVE)", das die Größe des Fensters ändert, aber nicht die obere linker Eckwert –