首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC icon如何没有变

2013-12-10 
MFCicon怎么没有变m_ctrlcons1是IDC_STATIC_LED1的CStatic变量HICON m_hIConOffHICON m_hIConOn在OnInit

MFC icon怎么没有变
MFC  icon如何没有变
m_ctrlcons1是IDC_STATIC_LED1的CStatic变量

HICON m_hIConOff;
HICON m_hIConOn;

在OnInitDialog()定义:
m_hIConOn =AfxGetApp()->LoadIcon(IDI_ICON_ON);//自己画了个Icon位图红色的
m_hIConOff =AfxGetApp()->LoadIcon(IDI_ICON_OFF);//灰色的


void CTextDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
static int flag=1;//静态变量
UpdateData(TRUE);
        if(flag==1)
{
      flag=0;
      m_ctrlcons1.SetIcon(m_hIConOn);
}
else
{
             flag=1;
     m_ctrlcons1.SetIcon(m_hIConOff);
}
UpdateData(FALSE);
默认是m_hIConOff(灰色的),点击按钮时就变成空白的了,接下来不管点多少下多是空白的,没有变换icon
求指教,哪里出错了,找了好久还是不知道。 Icon MFC VC++
[解决办法]


HICON m_hIcon;
HICON m_hVs;
CStatic m_icon; //关联变量


m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_hVs   = AfxGetApp()->LoadIcon(IDI_ICON1);


m_icon.ModifyStyle(0, SS_ICON);
m_icon.SetIcon(m_hIcon);


static bool flag = true;
if(flag)
m_icon.SetIcon(m_hVs);
else
m_icon.SetIcon(m_hIcon);
flag = !flag;

仅此代码,测试完全OK
[解决办法]
引用:
Quote: 引用:

同问1楼的问题。
m_ctrlcons1.SetIcon是个啥东东?里面有可能产生刷新动作比如Invalidate或者RedrawWindow之类的吗?
是不是把UpdateData当成刷新界面的了?这个函数好像多和ddx_data有关,比如把输入框中字符串和一个自定义的int之间关联起来那种。

m_ctrlcons1是IDC_STATIC_LED1的CStatic变量 是把UpdateData当成刷新界面,要不怎么刷新呀


UpdateData处理的是那种控件用DDX和自定义的变量关联时的情况哩。话说以前俺Up完了总要Redraw一下,这下还知道UpdateData里面没有自动重绘的机制了。
要重新描绘,有这么几个供你选择一下,各有各的好处,剩下的自己自力更生查去吧~~~
Invalidate
InvalidateRect
RedrawWindow
::PostMessage(WM_PAINT,...)

热点排行