捕获Bricscad DRX主窗口事件
喂!我尝试使用下面的代码开始拦截到Bricscad主窗口的消息:
WNDPROCg_wprocBcad=NULL;//原始Bricscad窗口过程
HWNDg_hwndBcad=sds_getmainhwnd();//存储Bricscad文档窗口
LRESULT CALLBACK BcadWndProcHook(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK BcadWndProcHook(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
//在此处处理消息
if(hwnd==g_hwndBcad)
{
开关(iMsg)
{
caseWM_RBUTTONDBLCLK:
{
sds_printf(_T("\n r按钮d>sds_printf(_T("\n m按钮db点击"));
中断;
}
}
}
}
返回::CallWindowProc(g_wprocBcad, hwnd, iMsg, wParam, lParam);
}
在InitApp消息中,我调用:
wProcBcad=(WNDPROC)SetWindowLong(g_hwndBcad,GWL_WNDPROC,(LONG)BcadWndProcHook);
奇怪,代码在BRX上运行,但在DRX上没有。
有什么想法吗?
迈克
**** Hidden Message ***** 很难说,你能发布一个DRX解决方案示例吗?我早上会看一看 这是如上所述修改的原始 BRX 示例。我们的想法是有一个等效的代码解决方案,但在DRX中。
反应器对我没有帮助,因为我试图用其他东西改变双击动作,以避免默认的各种执行此消息
谢谢!
话筒 我有点想看看你对DRX做了什么...你是像在这篇文章的顶部一样实现自己的DLLMain吗? 我也附上了一个DRX的例子。
迈克 对于处理单个文档,上面的代码非常有效,但是如果在同一个Bricscad会话中打开了多个文档,则会出错。要按预期工作,必须在附加代码中进行一些修改:
1.在kLoadDwgMsg部分
2.在文档反应器中,始终必须将HWND设置为当前:g_hwndBcad=sds_getviewhwnd();
Mike 听起来合乎逻辑,每个图形编辑器都有自己的框架。我不确定您需要什么事件,但OdEditorReactor具有beginDoubleClick和beginRightClick..
PS,您可以将HWND存储在新的DocData类中
Dan
对
页:
[1]