如何获取编辑器的主窗或文档视图的坐标?

如果需要在编辑器主程序的相对位置创建一个窗口,通常需要获取主程序当前的位置坐标。

可以通过FRAppGetMainFrameWnd()及FRDocViewGetHwnd()分别获取主程序和文档视图的Hwnd。

例如在窗口右下角,创建一个宽400高200的对话窗,示例代码如下:

FR_Document frDoc = FRAppGetActiveDocOfPDDoc();
FR_DocView frDocView= FRDocGetDocView(frDoc, 0);
FR_WinPort winPort= FRDocViewGetMachinePort(frDocView);
HWND hWnd = FRDocViewGetHwnd(frDocView);
RECT windowRect;
GetWindowRect(hWnd, &windowRect);

//自己定义的窗口类CGlobalDlg 
CGlobalDlg dlg(CWnd::FromHandle(hWnd));
dlg.windowRect = windowRect;
dlg.DoModal();

//移动窗口:

MoveWindow(windowRect.right-400, windowRect.bottom-200,400,200, true);

可以看到弹窗右下角和文档视图右下角已经对齐。效果如下: