比如
有函数
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。
有函数
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。
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)
{
//你的代码
}
我的意思是。我在对话框中创建了一个pictrol控件。
然后在pictrol中创建了一个CStatic,然后我怎么响应CStatic的事件。
如果把CStatic添加到对话框中,就可以收到事件。如果把CStatic添加对话框中的控件里面就收消息了
那 pictrol 就是 父窗口。
那要 从 CStatic 派生 CYourStatic,然后
要 用 REFLECT 机理,让 CYourStatic 自己响应消息
有父窗体选择的。别选PictureControl就没这问题了。否则,static父窗体就是PictureControl了,那就要通过PictureControl转发了。
可以去PretranslateMesssage去截获转发消息