ورود

View Full Version : سوال: مرتب سازی آیتمهای ListCtrl



حسین محمدی
دوشنبه 28 اردیبهشت 1388, 12:09 عصر
با سلام

LsitCtrl یک متد با نام SortItems دارد که نام یک تابع را برای مرتب سازی اعضا دریافت می کند.

کسی تا حالا با این متد کار کرده یا مثالی برای این موضوع داره؟

با تشکر

Nima_NF
دوشنبه 28 اردیبهشت 1388, 20:15 عصر
برای این کار ابتدا شما باید توسط ساختار LVITEM اطلاعات مورد نظر برای مقایسه را به تابعی callback ای که قرار هست بنویسید بفرستید. در MFC با SetItemData داده را می توانید بفرستید (مثلا رشته ای که قرار هست نوشته شود) . برای هر آیتم باید معادل همان ارسال شود. سپس به طور خودکار سیستم هر بار که نیاز به مرتب سازی شد تابع Callback شما را فراخوانی می کند و به ترتیب داده ها ارسال شده را به Callback می فرستد (lparam1 و lparam2 یعنی برای دو تا از آیتم ها ). پس شما باید آن ها را دریافت کنید و استفاده کنید.

ضمنا تابع Callback یک تابعی هست که هر وقت سیستم لازم شد با توجه به تعریف کار آن، اتومات آن را فراخوانی می کند. چیز خاصی نیست که نیاز به دانستن بیشتری باشد. فقط بدانید که اگر در کلاس قرار هست عضو باشد باید به صورت static باشد تا همواره در دسترس سیستم باشد، یا کلا خارج از کلاس به صورت عمومی تعریف شود.

برای یک مثال عالی و کامل:
از این لینک پشتیبانی مایکروسافت استفاده کنید. (http://support.microsoft.com/kb/250614)

در مثال فوق برای راحتی یک ساختار تحت عنوان ITEMDATA ساخته است و آن را پر می کند و به هر آیتم اختصاص می دهد.