A_Salimi
جمعه 17 آبان 1387, 23:14 عصر
برنامه ای دارم که زبان انگلیسی و فارسی داره. در این برنامه combo box هایی دارم که اطلاعات درون آنها هم در موقع تغییر زبان به اون زبان تغییر میکنه .حالا میخوام بدونم چطور از طریق کد نویسی میتونم جهت دکمه کشویی combo box رو تغییر بدم .(این کار از طریق گزینه های تنظیمات از طریق تغییر مشخصه Right Align Text امکان پذیر است)
کارهایی که خودم انجام دادم :
در یک نمونه مثال که در codeproject دیدم که دقیقا این کار پیاده سازی میشد (البته با MFC و خانواده C نبود) هندل Edit box در آن combo box دریافت میشد و بعد هم پیغامهای EM_SETMARGINS با مقادیر EC_RIGHTMARGIN یاEC_LEFTMARGINرا به آن ارسال میکرد.
من هم به این صورت عمل کردم :
گرفتن هندل combo :
HWND hw=m_combo.GetSafeHwnd();
گرفتن هندل کادر ویرایشی آن :
CString Str;
HWND hwchild=::FindWindowEx(hw,NULL,NULL,Str);
فرستادن پیغام :
::PostMessage(hwchild, EM_SETMARGINS, EC_RIGHTMARGIN,100);
كه اين كار فقط متن داخل باکس را با توجه به پارامتر آخر در محل جدیدی قرار میداد.
میخواستم بدانم که اولا مشکل کد بالا چیست و ثانیا آیا راه ساده تری وجود ندارد ؟ در کل هر کنترل مشخصه های زیادی دارد ... روش رسیدن به هر مشخصه دلخواه و تغییر آن از طریق کد نویسی چیست ؟
با تشکر
کارهایی که خودم انجام دادم :
در یک نمونه مثال که در codeproject دیدم که دقیقا این کار پیاده سازی میشد (البته با MFC و خانواده C نبود) هندل Edit box در آن combo box دریافت میشد و بعد هم پیغامهای EM_SETMARGINS با مقادیر EC_RIGHTMARGIN یاEC_LEFTMARGINرا به آن ارسال میکرد.
من هم به این صورت عمل کردم :
گرفتن هندل combo :
HWND hw=m_combo.GetSafeHwnd();
گرفتن هندل کادر ویرایشی آن :
CString Str;
HWND hwchild=::FindWindowEx(hw,NULL,NULL,Str);
فرستادن پیغام :
::PostMessage(hwchild, EM_SETMARGINS, EC_RIGHTMARGIN,100);
كه اين كار فقط متن داخل باکس را با توجه به پارامتر آخر در محل جدیدی قرار میداد.
میخواستم بدانم که اولا مشکل کد بالا چیست و ثانیا آیا راه ساده تری وجود ندارد ؟ در کل هر کنترل مشخصه های زیادی دارد ... روش رسیدن به هر مشخصه دلخواه و تغییر آن از طریق کد نویسی چیست ؟
با تشکر