Sen Sonra yukarı ve aşağı pencere hareketli değişiklik isteklerine WM_NCHITTEST
geçersiz örnek
CreateWindow(className, title, WS_THICKFRAME | WS_POPUP, ...)
için, hiçbir başlık çubuğuna sahip bir pencere oluşturabilirsiniz.
CreateWindow(className, title, WS_OVERLAPPEDWINDOW, ...)
Sonra yanı WM_WINDOWPOSCHANGING
için geçersiz kılma ekleyin: pencere örneğin başlık çubuğu, varsa
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);
}
bu küçük pencere için mi? Eğer zaten ne yaptığını gösterirseniz, anlaşılması daha kolay olacaktır. –
Sadece basit bir exe 'CreateWindowEx' kullanarak bir pencere oluşturun. yardımcı programların birçoğu pencere oluşturulmasında yer almaktadır, bu yüzden ilgili tüm kodları göndermek zor. Umarım bunu başarmak için mevcut 'HWND'yi manipüle etmenin basit bir yolunu ararım. – idanshmu
Kullanıcının pencereyi hareket ettirmesini istemediğini mi söylüyorsun? (Bu, altyazıyı kaldırmayı ve özel bir yeniden boyutlandırmayı gerektirmeyi gerektirir) - veya pencereyi yeniden boyutlandıracak olan SetWindowPos (hwnd, 0, 0, 0, width, height, SWP_NOMOVE) 'ı arıyor ancak üstünü değiştirmez. sol köşe değeri. –