スタティックテキストの色変更について。
起動時にCOM情報がエラーの時は、赤文字にしたいのですが
調べながら色々試しているのですが、なかなかうまくできません。
どなたかご教示ください。
環境:VC++、MFC
HBRUSH CDataWriting::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: ここで DC の属性を変更してください。
// ダイアログの色変更
if (nCtlColor == CTLCOLOR_DLG)
{
if (*pWnd == *this)
{
// 背景色
hbr = static_cast<HBRUSH>(GetStockObject(BLACK_BRUSH));
}
}
int ID = pWnd->GetDlgCtrlID();
switch(ID) {
case IDC_STATIC_COM_INFO:
pDC->SetTextColor(RGB(0,255,0)); // 文字色緑
pDC->SetBkColor(RGB(0,0,0)); // 文字背景色黒
break;
case IDC_GRP_OPE:
pDC->SetTextColor(RGB(255,255,0)); // 文字色黄
pDC->SetBkColor(RGB(0,0,0)); // 文字背景色黒
break;
case IDC_GRP_PRO_REP: /
pDC->SetTextColor(RGB(255,0,0)); // 文字色赤
pDC->SetBkColor(RGB(0,0,0)); // 文字背景色黒
break;
case IDC_GRP_SET:
pDC->SetTextColor(RGB(0,0,255)); // 文字色緑
pDC->SetBkColor(RGB(0,0,0)); // 文字背景色黒
break;
case IDC_STATIC_COM_INFOMATION:
pDC->SetTextColor(RGB(0,255,0)); // 文字色緑
pDC->SetBkColor(RGB(0,0,0)); // 文字背景色黒
break;
case IDC_STATIC_OPE:
pDC->SetTextColor(RGB(255,255,0));
pDC->SetBkColor(RGB(0,0,0));
break;
case IDC_STATIC_PROREP:
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(0,0,0));
break;
case IDC_STATIC_SETTING:
pDC->SetTextColor(RGB(0,255,255));
pDC->SetBkColor(RGB(0,0,0));
break;
}
// TODO: 既定値を使用したくない場合は別のブラシを返します。
return hbr;
}
BOOL CDataWriting::OnInitDialog()
{
CDialog::OnInitDialog();
【中略】
/*初期表示*/
asd.Format("【%5s:%6s,%s%s%s】",m_StataPort,w_StataBaud,w_statepali,w_StataBit,w_statestop) ;
/*Com判定*/
if(com_check){
m_ddx_v_com_info = asd;
}
else{
CWnd* pWnd = GetSafeHwnd(); ここに文字色を赤にする記述を書きたい
//CDC* pDC = GetDlgItem(IDC_STATIC_COM_INFO) ->GetDC();
//CDC test = GetDC(hWnd);
//::SetTextColor(hWnd,RGB(255,0,0));
//HDC GetDC(HWND hWnd);
//CDC* pDC = GetDlgItem(IDC_STATIC_COM_INFO) ->GetDC();
CDC* pDC;
pDC = pWnd->GetDlgCtrlID();
//CDC* pDC ->
pDC -> SetTextColor(RGB(255,0,0)); // 文字色赤
pDC -> SetBkColor(RGB(0,0,0));
m_ddx_v_com_info = "【Non-connection】";
};
/*CDC* pDC = (CDC*)GetDlgItem(IDC_STATIC_COM_INFO);
pDC -> SetTextColor(RGB(255,0,0));
pDC -> SetBkColor(RGB(0,0,0));
*/
//CWindowDC dc(this);
//CSize sizesize = dc.GetTextExtent(m_ddx_v_com_info);
//CEdit* editedit = (CEdit*)GetDlgItem(IDC_STATIC_COM_INFO);
//editedit->SetWindowPos(editedit,0,0,sizesize.cx-96,12,SWP_NOMOVE|SWP_NOZORDER);
//CButton *Btn = (CButton*)GetDlgItem(IDC_BTN_SEND);
//Btn->EnableWindow(FALSE); // 無効
UpdateData(FALSE);
return FALSE; // return TRUE unless you set the focus to a control
// 例外 : OCX プロパティ ページは必ず FALSE を返します。
}
色々、調べていたら解決しました。
お騒がせしました。
ツイート | ![]() |