关于两个DIALOG显示问题,请教一下各位大虾,谢谢

janyming 2007-05-14 05:22:31
我做了一个两天的界面程序,发现当更改一个EDIT1里字体大小时,EDIT2里的字体全部都跟着更改了,之前输入到EDIT2里面的也都改了,怎么办?字体颜色也一样!谢谢各位!
我是用按钮调系统字体颜色来更改的.
详细:
void CChatDialog::OnBnClickedOk()
{
CString str, mes;
CString str1=CTime::GetCurrentTime().Format(_T("%H:%M:%S"));
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
if(str.GetLength()<1)
{
MessageBox(_T("发送消息不能为空"));
return;
}


CEdit *pEditCtrl=(CEdit *)GetDlgItem(IDC_EDIT2);
pEditCtrl->GetWindowText(mes);
mes+=ShowID+_T(" ")+str1+_T("\r\n");
mes+=str+_T("\r\n\r\n");
pEditCtrl->SetWindowText(mes);
pEditCtrl->LineScroll(pEditCtrl->GetLineCount());
GetDlgItem(IDC_EDIT1)->SetWindowText(_T(""));
GetDlgItem(IDC_EDIT1)->SetFocus();

}

void CChatDialog::OnBnClickedButton1()
{
CColorDialog ColorDlg(m_textcolor);
if(ColorDlg.DoModal()==IDOK)
{
m_textcolor = ColorDlg.GetColor();
Invalidate();
}

// TODO: 在此添加控件通知处理程序代码

}

void CChatDialog::OnBnClickedButton2()
{
CFont*tempfont =m_writemsg.GetFont();
LOGFONT logfont;
tempfont->GetLogFont(&logfont);
CFontDialog fontdlg(&logfont);
if(fontdlg.DoModal()==IDOK)
{
m_font.Detach();
LOGFONT temp;
fontdlg.GetCurrentFont(&temp);
m_font.CreateFontIndirectW(&temp);
m_writemsg.SetFont(&m_font);
m_showmsg.SetFont(&m_font);
// TODO: 在此添加控件通知处理程序代码
}
}

HBRUSH CChatDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetTextColor(m_textcolor);

// TODO: 在此更改 DC 的任何属性

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
...全文
247 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
janyming 2007-05-18
  • 打赏
  • 举报
回复
还是没有完成
janyming 2007-05-15
  • 打赏
  • 举报
回复
我按照四楼的做了,还是不行啊,改后连字体颜色都不更改,郁闷,看来判断也不行啊,大家帮帮我啊,急啊!
gyssoft 2007-05-14
  • 打赏
  • 举报
回复
可以 BOOL bClicked=FALSE; 当用户单击BUTTON时,bClicked=TRUE;然后在 OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)中判断一下bClicked是否为TRUE如果为TRUE,就改变然后再
bClicked=FALSE;当时这不是好的办法,治标不治本呵呵不过简单啊完成任务再说吧
janyming 2007-05-14
  • 打赏
  • 举报
回复
那更改字体呢?我是分两个BUTTON来更改的,有大虾能一个BUTTON来更改字体和颜色吗?
myview 2007-05-14
  • 打赏
  • 举报
回复
CTLCOLOR_DLG把这个改成你的EDIT的ID就OK了
myview 2007-05-14
  • 打赏
  • 举报
回复
修改OnCtlColor()函数如下:
HBRUSH CChatDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_DLG)
{
pDC->SetTextColor(m_textcolor);
}

// TODO: 在此更改 DC 的任何属性

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}

ouyh12345 2007-05-14
  • 打赏
  • 举报
回复
pDC->SetTextColor(m_textcolor);


把所有控件的字体颜色都改了。

应该先判断pWnd是否为IDC_EDIT1等,再做修改
mynamelj 2007-05-14
  • 打赏
  • 举报
回复
在OnCtlColor消息中判断控件ID然后再设置颜色
  • 打赏
  • 举报
回复
要针对 edit使用 更改字体
你现在是对对话框更改字体

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧