比如
有函数 
void CreateStatic()
{
    CStatic* c_static = new CStatic();
    static->Create(.....);
    
}
然后在添加响应事件BEGIN_MESSAGE_MAP(CCocos2dxEditDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CSTATIC, &MyCStatic::OnBnClicked)
END_MESSAGE_MAP()如果动态创建了4个CStatic,在触发OnBnClicked,怎么区分响应的是哪个CStatic。

解决方案 »

  1.   

    #1楼貌似是说让你重载OnCommand函数~~~~如果只有四个的话,觉得你可以通过每个static上显示的不同内容来判断
      

  2.   

    响应CCocos2dxEditDlg对话框的WM_COMMAND消息
      

  3.   

    把每个Static控件的ID修改下,这样就可以通过ID辨别了
      

  4.   

    3Q,实现了。我重写了OnCommand函数,然后根据CStatic创建的时候,ID,来区分。谢谢了 。。
      

  5.   

    #define MY_CRL_ID 200
    CButton *p_MyBut[4];
    CString s_MyCaption[4] = {"Button1","Button2","Button3","Button4"};
    for(int i=0;i<4;i++)
    {
    p_MyBut[i] = new CButton();
    p_MyBut[i]->Create(s_MyCaption[i], WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_DEFPUSHBUTTON, CRect(10+100*i,20,100+100*i,45), this, MY_CRL_ID+i ); 
    }再添加消息和处理函数
    ON_COMMAND_RANGE(MY_CRL_ID, MY_CRL_ID+3, MyOnClick)void CMyDlg::MyOnClick(UINT nID)
    {
    //你的代码
    }
      

  6.   

    如果我把,CStatic,添加到picture control控件中,就接受到不响应事件了。这要怎么搞呀?
      

  7.   

    "添加到picture control控件中" 就是CStatic 
      

  8.   

    楼上,
    我的意思是。我在对话框中创建了一个pictrol控件。
    然后在pictrol中创建了一个CStatic,然后我怎么响应CStatic的事件。
      

  9.   

    ide应该直接可以响应每个静态控件的点击事件吧  你只要把静态控件的id设置成不同就行了
      

  10.   

    响应不了。
    如果把CStatic添加到对话框中,就可以收到事件。如果把CStatic添加对话框中的控件里面就收消息了
      

  11.   

    pictrol中创建了一个CStatic.
    那 pictrol 就是 父窗口。
    那要 从 CStatic 派生 CYourStatic,然后
    要 用 REFLECT 机理,让 CYourStatic 自己响应消息
      

  12.   

    static->Create(.....)的时候
    有父窗体选择的。别选PictureControl就没这问题了。否则,static父窗体就是PictureControl了,那就要通过PictureControl转发了。
    可以去PretranslateMesssage去截获转发消息