我在Dlg1上添加了另外一个Dlg2.将Dlg2设置成Dlg1的子窗口(Dlg2覆盖Dlg1)。
在Dlg1上有一些Button。我又将这些Button在创建的时候设置成Dlg2的子窗口(Button覆盖Dlg2)。
问题:在Dlg1的消息映射ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart),但是在Dlg1中的OnButtonStart()函数在点击的时候没有响应。
我在Dlg1中的:PreTranslateMessage(MSG* pMsg)函数中可以知道Button的区域被点击从而显示调用OnButtonStart()。有没有方法直接通过ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)可以使Button的点击能被响应呢?谢谢!
在Dlg1上有一些Button。我又将这些Button在创建的时候设置成Dlg2的子窗口(Button覆盖Dlg2)。
问题:在Dlg1的消息映射ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart),但是在Dlg1中的OnButtonStart()函数在点击的时候没有响应。
我在Dlg1中的:PreTranslateMessage(MSG* pMsg)函数中可以知道Button的区域被点击从而显示调用OnButtonStart()。有没有方法直接通过ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)可以使Button的点击能被响应呢?谢谢!
WM_COMMAND消息的notification code是BN_CLICKED,把这个消息发送给Dlg1。
哪里能捕捉到BN_CLICKED消息?因为我不想用PreTranslateMessage在Dlg1中抓消息 在判断位置判断是哪个Button被点击了。我想直接捕捉Button被点击后的消息。谢谢!
哪里能捕捉到BN_CLICKED消息?因为我不想用PreTranslateMessage在Dlg1中抓消息 在判断位置判断是哪个Button被点击了。我想直接捕捉Button被点击后的消息。谢谢!
CMapCanvas* pMapCanvas=CMapCanvas::GetCanvas();
pMapCanvas->SetParent(this);
pMapCanvas->ShowWindow(SW_SHOW);
然后接着在Dlg1的OnInitDialog()中创建Button。
SetRect(rect, 8, 388, 74, 62);
m_ButtonDisplay.Create(IDS_DISP, rect, this, IDC_BUTTON_START,
CResourceManager::RMB_NAVI_74X62_N,
CResourceManager::RMB_NAVI_74X62_P,
CResourceManager::RMB_NAVI_74X62_N,
CResourceManager::RMR_ROUND_RECT_74X62,
CSkinButton::CENTER,
CResourceManager::RMB_NONE,
CResourceManager::RMF_MEDIUM);
m_ButtonDisplay.SetParent(pMapCanvas); //Button设置成Dlg2的子窗口
就是这样。
在Creat的时候设置Button的父窗口和Creat之后再Set的效果是一样的。
现在只能在Dlg1里面捕捉到Button的位置有ButtonDown的消息。却没有ButtonClick的消息。为什么?谢谢
在CreatButton之后在设置Dlg2的窗口位置和设置成Dlg1的子窗口就可以了。
谢谢大家