我在资源里建立了几个static控件,是默认宋体字体。在dialog上我加了一个按钮,点击它时,那几个Static控件轮流变成黑体字,其它的保持默认字体。
代码如下void CConfigurationDlg::OnNext()
{
// TODO: Add your control notification handler code here
m_iCurStep++; // In last step there is no NEXT button
if (4 < m_iCurStep)
{
m_iCurStep = 4;
return;
}
if (4 == m_iCurStep)
{
m_btnNext.ShowWindow(SW_HIDE);
m_btnOk.ShowWindow(SW_SHOW);
}
m_btnPrevious.ShowWindow(SW_SHOW); CFont* font;
CFont* oldfont;
font = new CFont();
oldfont = new CFont(); font->CreateFont(16,0,0,0,FW_BOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"黑体");
oldfont->CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"宋体"); // lpszFacename CStatic * pSta;
CString s; pSta = (CStatic *)m_arrSta[m_iCurStep-1]; pSta->ShowWindow(SW_HIDE);
pSta->ShowWindow(SW_SHOW);
pSta->SetFont(oldfont); //把前一个字体还原
pSta = NULL;
s = ""; pSta = (CStatic *)m_arrSta[m_iCurStep]; pSta->ShowWindow(SW_HIDE);
pSta->ShowWindow(SW_SHOW);
pSta->SetFont(font); //把这个换成新字体
delete font;
delete oldfont;
font = NULL;
oldfont = NULL; CWnd* pWnd;
pWnd = (CWnd *)m_arrDlg.GetAt(m_iCurStep);
SwitchTo(pWnd); GetDlgItem(IDC_STATIC0)->SetFocus();}
现在有2个问题 1,我这样弄完以后,点击按钮时确实是一个static一个static的变黑体字体了,但是在窗口隐藏后、或是被其它窗口挡住后再显示的时候,那几个static全变成黑体字了。这怎么办?
(这个问题求解决办法)2.为什么 pSta->ShowWindow(SW_HIDE);
pSta->ShowWindow(SW_SHOW);
pSta->SetFont(font); //把这个换成新字体
pSta->setfont这句要在showwindow(sw_show)之后啊,我试过放在前面任何一句前都不行。
(这个问题应该是基础性的问题,我对windows这个还不熟,高手指点下我该去上哪本书上看哪部分就好了)
代码如下void CConfigurationDlg::OnNext()
{
// TODO: Add your control notification handler code here
m_iCurStep++; // In last step there is no NEXT button
if (4 < m_iCurStep)
{
m_iCurStep = 4;
return;
}
if (4 == m_iCurStep)
{
m_btnNext.ShowWindow(SW_HIDE);
m_btnOk.ShowWindow(SW_SHOW);
}
m_btnPrevious.ShowWindow(SW_SHOW); CFont* font;
CFont* oldfont;
font = new CFont();
oldfont = new CFont(); font->CreateFont(16,0,0,0,FW_BOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"黑体");
oldfont->CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"宋体"); // lpszFacename CStatic * pSta;
CString s; pSta = (CStatic *)m_arrSta[m_iCurStep-1]; pSta->ShowWindow(SW_HIDE);
pSta->ShowWindow(SW_SHOW);
pSta->SetFont(oldfont); //把前一个字体还原
pSta = NULL;
s = ""; pSta = (CStatic *)m_arrSta[m_iCurStep]; pSta->ShowWindow(SW_HIDE);
pSta->ShowWindow(SW_SHOW);
pSta->SetFont(font); //把这个换成新字体
delete font;
delete oldfont;
font = NULL;
oldfont = NULL; CWnd* pWnd;
pWnd = (CWnd *)m_arrDlg.GetAt(m_iCurStep);
SwitchTo(pWnd); GetDlgItem(IDC_STATIC0)->SetFocus();}
现在有2个问题 1,我这样弄完以后,点击按钮时确实是一个static一个static的变黑体字体了,但是在窗口隐藏后、或是被其它窗口挡住后再显示的时候,那几个static全变成黑体字了。这怎么办?
(这个问题求解决办法)2.为什么 pSta->ShowWindow(SW_HIDE);
pSta->ShowWindow(SW_SHOW);
pSta->SetFont(font); //把这个换成新字体
pSta->setfont这句要在showwindow(sw_show)之后啊,我试过放在前面任何一句前都不行。
(这个问题应该是基础性的问题,我对windows这个还不熟,高手指点下我该去上哪本书上看哪部分就好了)
解决方案 »
- 多线程时的CreateDispatch问题
- 使用Openssl的脚本来生成CA签名时,无法响应输入.
- 如何实现鼠标点击listctrl中一行item时旁边编辑框内同步显示item的内容
- VC项目文件不能更新,不能作任何改动,否则异常??高手指教
- DialogBox创建对话框如何来加上背景色?
- 关于硬盘序列号
- CFile读写二进制流,CStdioFile读写字符串流,CArchive简单,用哪个好呢
- UNIX和WND2000的SOCKET通讯问题
- 高手请看,如何在VC中用MAPI搜索地址簿中的邮件地址
- 高手赐教(非高手莫入!):vb+flash:在vb中使用flash控件(奇怪问题)
- error LNK2001静态库连接错误
- 如何通过实例句柄,关闭由A进程ShellExecute出的进程B?
delete font;
font = NULL;
去掉
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"黑体");
不能真正改变字体,改成“华文彩云”没效果。
用方法
pFont->CreatePointFont(100,"华文彩云");