要求是这样:动态创建的按钮,在获得焦点的时候,设置一个背景图,失去焦点的时候,设置另外一个背景图。现在按钮是动态创建的,连按钮 ID也是变量。由于 ID也是变量 ,所以无法使用消息映射函数的方法。于是我考虑使用 OnNodify 消息,在 OnNodify中判断焦点正常,但在设置背景图的时候,会产生几千个 WM_NODIFY 消息,无法设置图片。请教高手,如何解决。

解决方案 »

  1.   

    ON_CONTROL_REFLECT(...);
    你的按钮ID应该也是有个范围的吧
      

  2.   

    动态创建按钮时如果遇到不确定的按钮数可以动态ID,楼主的ID的范围是多少?有了按钮ID的范围就就能集中消息响应了。楼主的ID不是变量吗,在OnCommand里进行处理
      

  3.   

    ID是有范围的,OnCommand不能响应 WM_SETFOCUS 啊。
      

  4.   

    if( XXXXXX.GetSafeHwnd() == ::GetFocus() )