نمایش نتایج 1 تا 4 از 4

نام تاپیک: تغییر رنگ و فونت در یک edit control

  1. #1
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372

    Tick تغییر رنگ و فونت در یک edit control

    در ویژوال سی 2005 (به نظر من ) هیچ optionی برای تغییر متن و یا فونت یک edit control وجود نداره برای تغییر رنگ وفونت در این شئ و اشیا مشابه مثل static text باید چیکار کرد ؟

    باید بگم که یک سری کد در codeproject پیدا کردم که خیلی جالب جواب دادن:
    برای تغییر فونت :
     

    BOOL CMyDlg::OnInitDialog()
    {
    CFont myfont;
    CStatic* pStatic = GetDlgItem ( IDC_SOME_LABEL );
    // ... create a font here using the 'myfont' object ...
    // Change the static control's font.
    pStatic->SetFont ( &myfont );
    return TRUE;
    }



    برای تغییر رنگ پس زمینه یک کنترل :
    در ابتدای برنامه یک متغیر CBrush به نام m_bkbrush تعریف شود.
     

    HBRUSH CsdDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here

    if ( pWnd->GetSafeHwnd() == GetDlgItem(IDC_STATIC)->GetSafeHwnd() &&
    CTLCOLOR_STATIC == nCtlColor )
    {
    // m_bkbrush is a CBrush member variable
    m_bkbrush.CreateSolidBrush ( RGB(230,0,20) );
    pDC->SetBkMode ( TRANSPARENT );
    return m_bkbrush;
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;


    }
    که رنگ static text رو تغییر میده .
    اگه ممکنه برای تغییر رنگ فونت کمک کنید . . .

  2. #2
    خوب ، خودتان جواب را دادید .
    در MFC و Win32 باید از طریق همان کدها و پیام هاِ آن ، رنگ ها را تغییر داد ، برای درک درست پیام ها ابتدا باید بر روی پیام های win32 کار کنید تا متوجه شوید که با MFC چگونه عمل کنید ؛ قبلا در این صفحه توضیحات داده شده است:
    https://barnamenevis.org/showthread.php?t=74998

    در MFC نیز به همان شکل در رویداد OnCtlColor و توسط CTLCOLOR_STATIC (برای Static control ها) به همان شکل به جای دستورات فوق انجام می شود که باید ID کنترل مورد نظر را هم مورد تست قرار دهید و فقط برای همان مورد ، یک brush با رنگ دلخواه برگردانید (برای پشت زمینه) و برای بقیه کنترل ها مقدار قبلی را برگردانید.

    برای تغییر رنگ نوشته از طریق SetTextColor با DC مربوط به آن کنترل می توانید رنگ text را تغییر دهید:

    HBRUSH CZilchDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {

    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
    {
    // Set the text color to red
    pDC->SetTextColor(RGB(255, 0, 0));

    pDC->SetBkMode(TRANSPARENT);

    hbr = m_brush;
    }

    return hbr;
    }

  3. #3
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    ممنونم
    کد شما به خوبی جواب داد فقط یه سوال در مورد کد تغییر فونتی که گذاشتم دارم
    اون کد رو زمانی که در برنامه قرار دادم فونت کنترل من تغییر کرد در صورتی که در اونجا هیچ کدی خلق (creat) نمیشه آیا مقدار پیش فرضی وجود داره که از اون استفاده میشه ؟

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

تاپیک های مشابه

  1. تغییر زبان control
    نوشته شده توسط خانم گل در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 06 دی 1386, 01:22 صبح
  2. پاسخ: 2
    آخرین پست: سه شنبه 02 اسفند 1384, 15:52 عصر
  3. پاسخ: 0
    آخرین پست: سه شنبه 02 اسفند 1384, 13:32 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •