调用SetIcon该怎么写消息函数呢?又怎么调呢?

解决方案 »

  1.   

    你在消息响应函数中调用seticon撒。
      

  2.   

    SendMessage((HWND)pParam, WM_SetIcon, (WPARAM)IDI_RED,0);
    标红的参数是这样的吗?另外,我有很多个按钮,是不是给每一个按钮seticon都写一个消息函数呢?
      

  3.   

    #define WM_SET_BUTTON_ICON (WM_USER+100)PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
      

  4.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
      

  5.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
    传ID,然后GetDlgItem之后再转成CButton*
      

  6.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
    传ID,然后GetDlgItem之后再转成CButton*
    谢谢你,我这个SetIcon是封装的一个button库里的,需要这样声明后才能使用的,CButtonST m_btnE10。(CButtonST*)GetDlgItem(wParam);我这样也取不到SetIcon()怎么办?
      

  7.   

    都说的这么复杂啊!
    简单一点嘛,直接在app中写个函数,在线程中调用不就好了么或者直接弄个定时器,达到要求就刷新一下就好了弄个自定义事件也可以,就是麻烦一些CButtonST  确实蛮好用
      

  8.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
    传ID,然后GetDlgItem之后再转成CButton*
    谢谢你,我这个SetIcon是封装的一个button库里的,需要这样声明后才能使用的,CButtonST m_btnE10。(CButtonST*)GetDlgItem(wParam);我这样也取不到SetIcon()怎么办?
    换种方式:
    switch(k)
    {
    case 1:  m_btnE1.SetIcon(); break;
    case 2: m...
    };
      

  9.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
    传ID,然后GetDlgItem之后再转成CButton*
    谢谢你,我这个SetIcon是封装的一个button库里的,需要这样声明后才能使用的,CButtonST m_btnE10。(CButtonST*)GetDlgItem(wParam);我这样也取不到SetIcon()怎么办?
    换种方式:
    switch(k)
    {
    case 1:  m_btnE1.SetIcon(); break;
    case 2: m...
    };
    还是通过发消息的方式吗?postmessage
      

  10.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
    传ID,然后GetDlgItem之后再转成CButton*
    谢谢你,我这个SetIcon是封装的一个button库里的,需要这样声明后才能使用的,CButtonST m_btnE10。(CButtonST*)GetDlgItem(wParam);我这样也取不到SetIcon()怎么办?
    换种方式:
    switch(k)
    {
    case 1:  m_btnE1.SetIcon(); break;
    case 2: m...
    };
    还是通过发消息的方式吗?postmessage
    多谢了,我用你的方式实现了,还是用postmessage,switch的方式,我再问一个问题啊,串口当数据上来太快的时候频繁postmessage给按钮seticon变成红色就会闪,在这之前加了sleep()好很多,还有啥办法不让按钮闪呢?
      

  11.   

    PostMessage(hwnd, WM_SET_BUTTON_ICON, BUTTON_ID, ICON_ID);
    因为plg->m_btnE10.SetIcon(IDI_RED,0);里的控件必须声明的是变量才能调用SetIcon函数,所以不能传buttonID怎么办?
    传ID,然后GetDlgItem之后再转成CButton*
    谢谢你,我这个SetIcon是封装的一个button库里的,需要这样声明后才能使用的,CButtonST m_btnE10。(CButtonST*)GetDlgItem(wParam);我这样也取不到SetIcon()怎么办?
    换种方式:
    switch(k)
    {
    case 1:  m_btnE1.SetIcon(); break;
    case 2: m...
    };
    还是通过发消息的方式吗?postmessage
    多谢了,我用你的方式实现了,还是用postmessage,switch的方式,我再问一个问题啊,串口当数据上来太快的时候频繁postmessage给按钮seticon变成红色就会闪,在这之前加了sleep()好很多,还有啥办法不让按钮闪呢?
    在SetIcon的时候检测,2个ICON的ID是不是一样,一样就忽略