CMyDlg::OnOK()
{
changeColorOfBtn(IDCALCEL);
}请高手实现函数changeColorOfBtn(int IDName),参数是按钮或者静态文本框的ID。xiexie!
{
changeColorOfBtn(IDCALCEL);
}请高手实现函数changeColorOfBtn(int IDName),参数是按钮或者静态文本框的ID。xiexie!
解决方案 »
- 分享一个serv-u配置日志+散分。
- MFC,能否将对话框中自己添加的消息响应函数打包成一个类
- 超级难题 在WORD中插入ACTIVEX作的输入框,为什么得不到焦点?请高手帮忙
- 有错误了,救命.
- 如何双击一个tab关闭这个tab联系的document?另求CMDIFrameWnd和CMDIChildWnd两者之间的具体关系??
- 急!!!windows2000下如何根据进程ID号获取该进程内存地址?
- 怎样让一个窗口获得键盘输入??
- 我用CStatic的SetBitmap怎么显示不出来?求教!
- 状态栏显示鼠标坐标问题
- 哪个网站更适合编程初学者 ,为什么这的东西都这么深奥
- 问一个关于类的对象的问题和文件流读文件的问题,希望大家能探讨一下!
- CFile 问题
VERIFY(font.CreateFont( //本函数在OnInitDialog中
36, // 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
"Arial")); // lpszFacenamevoid changeColorOfBtn(int nID)
{
CWnd *pWnd = GetDlgItem(nID);
pWnd->SetFont(&font);
}
我们是不是应该首先取得"确定"按钮的原来的字体设置,然后只改变字号就可以了?
听人说,要用CreateFontIndirect,但是,我还不太会用.
2.为什么要在对话框的OnInitDialog函数中,用CreateFont创建CFont对象呢?
我们在函数void changeColorOfBtn(int nID)内部创建CFont对象可不可以?
如:
CFont *pFont = GetDlgItem(IDCANCEL)->GetFont();
LOGFONT lf;
pFont->GetLogFont(&lf);
lf.lfHeight = 36;
CFont m_NewFont;
m_NewFont.CreateFontIndirect(&lf); 2.在changeColorOfBtn中创建font也是可以的。但是你要确定该函数只会被调用一次。font对象是不能创建两次的。所以如果这个字体是固定的,因该在初始化函数中就创建比较好。当然,如果font的字体大小是动态的,比如changeColorOfBtn函数中把字体大小作为参数,那么应该在changeColorOfBtn中创建字体,创建字体前,必须先将成员变量font先调用DeleteObject释放掉,否则会出错。
{
CFont font; //这里font为局部变量
int size = 10;
for (int i=0;i<5;i++)
{
font.CreateFont(
size=size+2, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
TRUE, // bItalic
TRUE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial"); // lpszFacename
CWnd *pWnd = GetDlgItem(IDOK);
pWnd->SetFont(&font);
font.DeleteObject();
}
}
CFont font;
换成
static CFont font;
仍然是不行的.
再说一边,要是成员变量。