我利用Timer定时修改static text的颜色,代码如下,开始还对,运行一段时间后static text的颜色全部变成灰色了,在也没变换,问题出在那里???
case WM_TIMER:
for (i=0;i<10;i++)
{
InvalidateRect(GetDlgItem(hDlg,ColorID[i]),lpRect[i],FALSE);
}
return true;
break;
case WM_CTLCOLORSTATIC:
for (i=0;i<10;i++)
{
hBrush[i]=0;
if( lParam == (LPARAM)::GetDlgItem( hDlg,ColorID[i]) )
{
RBG_r = (Palette[i] & 0x7C00) >> 10; //hig 5bit
RBG_g = (Palette[i] & 0x03E0) >> 5; //mid 5bit
RBG_b = (Palette[i] & 0x001F); //low 5bit HDC hdc = (HDC )wParam ;
::SetTextColor( hdc,RGB(RBG_r<<3,RBG_g<<3,RBG_b<<3));
::SetBkMode( hdc, RGB(RBG_r<<3,RBG_g<<3,RBG_b<<3) );
if (hBrush[i]==0)
hBrush[i]=CreateSolidBrush( RGB(RBG_r<<3,RBG_g<<3,RBG_b<<3) );
return ( INT_PTR )hBrush[i];
}
}
break;
case WM_TIMER:
for (i=0;i<10;i++)
{
InvalidateRect(GetDlgItem(hDlg,ColorID[i]),lpRect[i],FALSE);
}
return true;
break;
case WM_CTLCOLORSTATIC:
for (i=0;i<10;i++)
{
hBrush[i]=0;
if( lParam == (LPARAM)::GetDlgItem( hDlg,ColorID[i]) )
{
RBG_r = (Palette[i] & 0x7C00) >> 10; //hig 5bit
RBG_g = (Palette[i] & 0x03E0) >> 5; //mid 5bit
RBG_b = (Palette[i] & 0x001F); //low 5bit HDC hdc = (HDC )wParam ;
::SetTextColor( hdc,RGB(RBG_r<<3,RBG_g<<3,RBG_b<<3));
::SetBkMode( hdc, RGB(RBG_r<<3,RBG_g<<3,RBG_b<<3) );
if (hBrush[i]==0)
hBrush[i]=CreateSolidBrush( RGB(RBG_r<<3,RBG_g<<3,RBG_b<<3) );
return ( INT_PTR )hBrush[i];
}
}
break;
解决方案 »
- 请问webbrowser如何得到“刷新验证码”后得到的那个验证码?
- 我在做一个播放器,哪位高手知道怎么设置本程序的音量,而不改变系统的音量
- 为什么在对话框上面不能用textout函数来显示字符串
- 继承CScrollView的类怎么加滚动条啊(水平和竖直)
- 求CTreeView与CListView的三态选择解决代码
- 同一工作区的一个project能把控件句柄传给另一个project吗?
- 我重载了CRichEditView的OnPaint函数却画不出RichEditCtrl,救救我!!!!!!!!
- 如何把硬盘的一个文件完整的写到char *型的缓冲区!?
- 多编辑框问题:
- 有没有用过vfw32.lib的高手? 请问如何向AVI文件写入音频?
- 如何向父窗口发送WM_CTLCOLORSTATIC消息,不用MFC,只用API
- 用C#编写C/S结构的软件是不是一定要客户端有.NET啊可能到我老了的那一天也不可能.NET全部机器上有
case WM_CTLCOLORSTATIC:
for (i=0;i<64;i++)
{
DeleteObject(hBrush[i]);
hBrush[i]=0;