请问在CMainFrame怎么设置videoDlg子窗体的响应事件?

yeyuanzhi2010 2009-07-29 12:39:16
在CMainFrame中排列了多个videoDlg(显示视频)子窗体,现在我想双击每一个视频窗体,视频数据就自动转移到主视频mainvideodlg窗体的picture控件中。videoDlg放有一个Picture控件IDC_VLocal。请问在CMainFrame怎么设置videoDlg窗体的响应功能?谢谢!!
下面这段代码怎么修改才能实现这一功能?
void CMainFrame::OnLButtonDblClk(UINT nFlags, CPoint point)
{

CWnd* wnd=ChildWindowFromPoint(point);
//CStatic* vo=(CStatic *)GetDlgItem(IDC_VLocal);
if (wnd == NULL)
return;
if(*wnd==*videoDlg[1].GetDlgItem(IDC_VLocal))
SetVideoWnd(0);
else if(*wnd==*videoDlg[2].GetDlgItem(IDC_VLocal))
SetVideoWnd(1);
else if(*wnd==*videoDlg[3].GetDlgItem(IDC_VLocal))
SetVideoWnd(2);
CFrameWnd::OnLButtonDblClk(nFlags, point);
}
...全文
131 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeyuanzhi2010 2009-08-01
  • 打赏
  • 举报
回复
谁能救我哦???
alphagm 2009-08-01
  • 打赏
  • 举报
回复
#8楼 得分:0回复于:2009-07-30 16:23:52引用 7 楼 fffff_1982 的回复:
我现在困惑的是在CMainFrame有多个基于CVideoDialog的视频浮动窗体。怎么区别发送消息?
------------------------------------------------------------------------
看我上面的回贴,不同的IDC_VLocal,不同的响应函数,比如:IDC_VLocal1,IDC_VLocal2……
OnButtonVLocal1(),OnButtonVLocal2……!
其实那个IDC_VLocal命名已不合适了!因为在0x80000~0xf0000间的ID已经不再仅仅在对话框中响应!已经可以被主框架响应了!
alphagm 2009-08-01
  • 打赏
  • 举报
回复
1、必须使videoDlg中的Picture控件IDC_VLocal的ID在0x80000~0xf0000之间
2、在CMainFrame的头文件中加山代码:afx_msg void OnButtonVLocal(void);
3、在CMainFrame的实现文件中的消息映射中加ON_BN_CLICKED(IDC_VLocal, OnButtonVLocal)
4、在CMainFrame的实现文件中加上消息响应函数void CMainFrame::OnButtonVLocal)

给分!我急着要分!
fffff_1982 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 heksn 的回复:]
你可以在CVideoDialog中的PreTranslateMessage获取双击消息 然后给主窗口发消息
[/Quote]
同意看我这个帖子的回复。
http://topic.csdn.net/u/20090730/11/257b54c8-59f9-4659-95a6-da241dffca9e.html
yeyuanzhi2010 2009-07-30
  • 打赏
  • 举报
回复
向主窗口发消息都好办。我现在困惑的是在CMainFrame有多个基于CVideoDialog的视频浮动窗体。怎么区别?
yeyuanzhi2010 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fffff_1982 的回复:]
引用 5 楼 heksn 的回复:
你可以在CVideoDialog中的PreTranslateMessage获取双击消息 然后给主窗口发消息

同意看我这个帖子的回复。
http://topic.csdn.net/u/20090730/11/257b54c8-59f9-4659-95a6-da241dffca9e.html
[/Quote]
我现在困惑的是在CMainFrame有多个基于CVideoDialog的视频浮动窗体。怎么区别发送消息?
  • 打赏
  • 举报
回复
你可以在CVideoDialog中的PreTranslateMessage获取双击消息 然后给主窗口发消息
oyljerry 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yeyuanzhi2010 的回复:]
videoDlg是基于CVideoDialog类的浮动窗体,双击它就能浮动.能不能在下面代码做文章?
UINT CVideoDialog::OnNcHitTest(CPoint point)
{
UINT hitTest = CDialog::OnNcHitTest(point);

return ( hitTest == HTCLIENT || hitTest == HTCAPTION ) ? HTTRANSPARENT : hitTest;
}
[/Quote]
直接这里面给MainFrame发送消息,饭后MainFrame里面响应消息,数据通过消息参数传递过去
::PostMessage(AfxGetMainWnd(), WM_MSG, wp, lp);
yeyuanzhi2010 2009-07-29
  • 打赏
  • 举报
回复
videoDlg是基于CVideoDialog类的浮动窗体,双击它就能浮动.能不能在下面代码做文章?
UINT CVideoDialog::OnNcHitTest(CPoint point)
{
UINT hitTest = CDialog::OnNcHitTest(point);

return ( hitTest == HTCLIENT || hitTest == HTCAPTION ) ? HTTRANSPARENT : hitTest;
}
yeyuanzhi2010 2009-07-29
  • 打赏
  • 举报
回复
谢谢!!具体怎么做呢?
huofen2005 2009-07-29
  • 打赏
  • 举报
回复
拖了控件,要在控件里面加消息处理的吧?
控件捕获消息之后,再发自定义消息给框架处理!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧