Win32/MFC احصل على نافذة المستقيم من العميل
سؤال
أعلم أن هناك وظيفة في مكان ما تقبل مستطيل العميل وستحوله إلى مربع نافذة لك.أنا فقط لا أستطيع العثور عليه / تذكره!
هل من أحد يعرف ما هذا؟
سوف يفعل شيئًا مشابهًا لما يلي:
const CRect client(0, 0, 200, 200);
const CRect window = ClientRectToWindowRect(client);
SetWindowPos(...)
المحلول
ربما كنت تفكر في AdjustWindowRectEx()
.ضع في اعتبارك أن هذا مخصص للاستخدام عندما خلق النافذة - ليس هناك ما يضمن أنها ستنتج مجموعة دقيقة من أبعاد النافذة لنافذة موجودة؛لذلك، استخدم GetWindowRect()
.
نصائح أخرى
إذا كنت تريد تعيين إحداثيات العميل لإحداثيات النافذة، فاستخدم الملف ClientToWindow واجهة برمجة التطبيقات.
إذا كنت تريد تعيين إحداثيات العميل لإحداثيات الشاشة، فاستخدم ClientToScreen واجهة برمجة التطبيقات.
لاستخدام تغيير موضع التحكم:
RECT client;
::SetRect(&client, 0, 0, 200, 200);
::MapWindowPoints(hwndControl, ::GetParent(hwndControl), (POINT*)&client, 2);
::SetWindowPos(...)
لا تنتمي إلى StackOverflow