PDA

View Full Version : problem with TRANSPARENT in icon



d3dgameprogramming
چهارشنبه 19 دی 1386, 00:01 صبح
13524
سلام دوستان. من با استفاده از کد زیر رنگ فونت رو عوض کردم ولی همون طور که تو تصویر می بینید background آیکون مشکل داره.

case WM_CTLCOLORSTATIC:

SetBkMode((HDC)wParam, TRANSPARENT);

SetTextColor((HDC)wParam,RGB(0,0,255));

return (INT_PTR) GetStockObject(NULL_BRUSH);

break;
الان در dialog box سه تا static control وجود داره: دوتا text و یک icon.
با کد بالا تغییرات روی تمایی static control ها اعمال میشه، حالا اگه بخواهیم فقط یکی از text ها رو تغییر رنگ بدیم، باید چی کار کنیم؟؟؟
من تلاش کردم با switch کردن wParam این کار رو انجام بدم:


wmId = (int)wParam;
switch(wmId)
case IDC_STATIC1:

code here

break;

ولی جواب نداد:متفکر:

Nima_NF
چهارشنبه 19 دی 1386, 18:41 عصر
از آنجایی که سوال شما در ادامه تاپیک قبلی هست ، بهتر بود در همان پست این سوال را مطرح می کردید .

1)در هر صورت شما در صورتی که نمی خواهید brush خاصی را برای رنگ پس زمینه استفاده کنید باید به راحتی فقط FALSE برگردانید


2) ضمنا در صورت استفاده از brsuh آن را به یک BOOL باید تغییر دهید ، عملcast
3) برای سایر کنترل ها فقط به همان صورت باید FALSE را برگردانید و نباید از break استفاده کنید.
4) شما برای هندل باید از lParam استفاده کنید نه wParam
5) هندل را باید از طریق GetDlgItem دریافت کنید.

(حال با if یا با همان switch ) :




HWND EditHwnd = GetDlgItem (hDlg, IDC_STATIC_RED);

if( EditHwnd == (HWND)lParam )
{
// Do something for texts color
return (BOOL) your_brush ;

// or return FALSE ; // return default brush
}
else
{
// Do default brush for bk
return FALSE;
}