用CreateFont在对话框中展示自定义字体,动态修改显示的字,重绘刷新不正常,需要最小化再开启后才能看到更新

用CreateFont在对话框中显示自定义字体,动态修改显示的字,重绘刷新不正常,需要最小化再开启后才能看到更新。
新建了一个对话框程序
自定义了一个颜色结构
typedef struct realColorType{
int red;
int green;
int blue;
}ColorType;

ColorType showType;//颜色
CString charCN;//要显示的字

OnPaint()的else中的代码:
else
{
CPaintDC dc(this);
ShowColorWord(&dc);
CDialogEx::OnPaint();

}

添加如下的字体
void CFontOnPaintDlg::ShowColorWord(CDC * dc)
{
CFont * oldFont,myFont;
myFont.CreateFont (  
40, // nHeight 字体高度
40, // nWidth 字体宽度
0, // nEscapement 显示角度
0, // nOrientation 字体角度
FW_BOLD, // nWeight 字体磅值
FALSE, // bItalic 是否倾斜
FALSE, // bUnderline 是否斜体
0, // cStrikeOut 是否加删除线
GB2312_CHARSET, // nCharSet 指定字符集
OUT_DEFAULT_PRECIS, // nOutPrecision 指定输出精度
CLIP_DEFAULT_PRECIS, // nClipPrecision 指定剪切精度
DEFAULT_QUALITY, // nQuality 指定输出质量
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 字符族
"粗体"); // 指定字体的字样名

oldFont = dc->SelectObject ( &myFont);
dc->SetTextColor (RGB (showType.red,showType.green,showType.blue));
dc->SetBkMode (TRANSPARENT); //背景模式为透明
dc->TextOut(10,10,charCN);
dc->SelectObject ( oldFont);

}

想按下一个按钮后能够显示更新
void CFontOnPaintDlg::OnBnClickedOk()
{
showType.red=200;showType.green=250;showType.blue=200;
charCN="颜";
}
但是只有在程序最小化后再打开或者其他程序遮盖界面后才能显示更新,久久找不到原因,不是字体或者charCN初始化的问题
由于调试的时候窗体会隐藏/跳出地显示,故也没有问题,就是运行时候出问题。

万分感谢!
CreateFont 对话框

------解决方案--------------------
程序加上 Invalidate();试试
------解决方案--------------------
 Invalidate(); UpdateWindow等刷新一下