View Full Version : چطور مختصات یا Rect یک کنترل رو به دست بیارم؟
soroush_vs
شنبه 24 مرداد 1388, 15:11 عصر
با سلام
من میخام مختصات محل قرار گرفتن یک کنترل بر روی یک پنچره رو به دست بیارم
کد هایی مثل تابع
CRect RectVariable;
GetClientRect(ListView.m_hWnd,&RectVariable); رو هم تست کردم اما مختصات صحیح رو به دست نمیده.
لطفا راهنمایی کنید
A_Salimi
شنبه 24 مرداد 1388, 18:33 عصر
به اين ترتيب
اول هندلش رو بگير كه بستگي به نوع كنترلش داره.و با FindWindow و GetSafeHwnd مي توني اين كار رو بكني
بعد هم از GetWindowRect:: استفاده كن كه پارامتر اولش هنل رو ميدي و در دومي هم اشاره گري به ساختار CRect
GetWindowRect(hw,&rect)
حالا rect خودش چهار تا عضو داره
Left
Top
Bottom
Right
كه ميتوني ازشون استفاده كني
soroush_vs
یک شنبه 25 مرداد 1388, 13:17 عصر
ممنون از شما دوست خوبم
اما این هم انگار مکان دقیق رو بهم نمیده .
کاری که من میخام انجام بدم این هست که من دو تا کنترل از یک نوع دارم فرض کنید دو تا لیست ویو.حالا من میخام کنترل دوم رو دقیقا در محل کنترل اول قرار بدم.برای همین میخام Rect کنترل اول رو به دست بیارم.اما این کد هم محل دقیقش رو نمیده.فکر میکنم دلیلش این هست که خود title پنچره و Menu یک Height دارن که تاثیر گذار هست و باعث میشه که کنتزل دوم پایین تر از محل مورد نظر قرار بگیره.خلاصه اینکه هنوز به جواب دقیقی نرسیدم
لطفا در این مورد راهنمایی کنید
Saeed_m_Farid
یک شنبه 25 مرداد 1388, 14:27 عصر
ممنون از شما دوست خوبم
اما این هم انگار مکان دقیق رو بهم نمیده .
کاری که من میخام انجام بدم این هست که من دو تا کنترل از یک نوع دارم فرض کنید دو تا لیست ویو.حالا من میخام کنترل دوم رو دقیقا در محل کنترل اول قرار بدم.برای همین میخام Rect کنترل اول رو به دست بیارم.اما این کد هم محل دقیقش رو نمیده.فکر میکنم دلیلش این هست که خود title پنچره و Menu یک Height دارن که تاثیر گذار هست و باعث میشه که کنتزل دوم پایین تر از محل مورد نظر قرار بگیره.خلاصه اینکه هنوز به جواب دقیقی نرسیدم
لطفا در این مورد راهنمایی کنید
سلام
آقا سروش شما با GetWindowRect که A_Salimi گفتن : top و left فرمت (نه لیست ویو) رو بدست میاری (که الان تو RectVariable قرار دارن)، بعدش به ترتیب با top و left لیست ویو اولی (که قراره بره زیر!) جمع می کنی، حاصل جمع میشه top و left لیست ویویی که قراره مکانش تغییر کنه (دومی).
اگه متوجه شدی چی گفتم به خودمم بگو :لبخند: ...
موفق باشی ...
soroush_vs
یک شنبه 25 مرداد 1388, 16:10 عصر
آقا سعید گل ممنون این مورد که شما گفتید هم مشکل رو حل نکرد
اما با استفاده از تابع ScreenToClient تونستم Rect مورد نظرم رو به دست بیارم و مشکلم حل شد.
لطفا این پستم رو مفید ارزیابی کنید:لبخند:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.