سؤال

أعلم أن هناك وظيفة في مكان ما تقبل مستطيل العميل وستحوله إلى مربع نافذة لك.أنا فقط لا أستطيع العثور عليه / تذكره!

هل من أحد يعرف ما هذا؟

سوف يفعل شيئًا مشابهًا لما يلي:

const CRect client(0, 0, 200, 200);
const CRect window = ClientRectToWindowRect(client);
SetWindowPos(...)
هل كانت مفيدة؟

المحلول

ربما كنت تفكر في AdjustWindowRectEx().ضع في اعتبارك أن هذا مخصص للاستخدام عندما خلق النافذة - ليس هناك ما يضمن أنها ستنتج مجموعة دقيقة من أبعاد النافذة لنافذة موجودة؛لذلك، استخدم GetWindowRect().

نصائح أخرى

هل هذا ما كنت تبحث عنه؟

ClientToScreen

http://msdn.microsoft.com/en-us/library/ms532670(VS.85).aspx

إذا كنت تريد تعيين إحداثيات العميل لإحداثيات النافذة، فاستخدم الملف ClientToWindow واجهة برمجة التطبيقات.

إذا كنت تريد تعيين إحداثيات العميل لإحداثيات الشاشة، فاستخدم ClientToScreen واجهة برمجة التطبيقات.

لاستخدام تغيير موضع التحكم:

RECT client;
::SetRect(&client, 0, 0, 200, 200);
::MapWindowPoints(hwndControl, ::GetParent(hwndControl), (POINT*)&client, 2);
::SetWindowPos(...)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top