MFC中,如何在根据控件句柄获取控件对象

MFC中,如何在根据控件句柄获取控件对象,第1张

首先在你自己的类中定义一个要使用这个控件的变量,比如:DlgFaceRecg

dlgFaceRecg;

//

CFROCXCtrl

消息处理程序

int

CFROCXCtrl::OnCreate(LPCREATESTRUCT

lpCreateStruct)

{

if

(COleControl::OnCreate(lpCreateStruct)

==

-1)

return

-1;

dlgFaceRecgCreate(IDD_DIALOG1,this);//这里可以用你的控件的IDC_XX

return

0;

}

本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。

为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。

void CControlDlg::OnMatch(){// TODO: Add your control notification handler code here

CRect rectL,rectR;

GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置

ScreenToClient(rectL);//转化为对话框上的相对位置

GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置

ScreenToClient(rectR);//转化为对话框上的相对位置

m_row=rectLbottom-rectLtop;

m_colume=rectLright-rectLleft;

UpdateData(FALSE);

CClientDC dc(this);

dcMoveTo(rectLleft,rectLtop);

dcLineTo(rectRright,rectRbottom);

dcMoveTo(rectLright,rectLtop);

dcLineTo(rectRleft,rectRbottom);

dcMoveTo(rectLleft+m_colume/2,rectLtop+m_row/2);//连接两个控件中心点

1 在多文档多视图的MFC架构中,要想获得当前选中的CView可重写CView::OnActivateView函数,如下:

void

OnActivateView(BOOL bActivate,

CView pActivateView,

CView pDeactiveView)

{

if(bActivate)

{

SetEnable(TRUE);

}

else

{

SetEnable(FALSE);

}

CView::OnActivateView(bActivate,

pActivateView,

pDeactiveView);

}

2 获得窗口或者视图句柄

2.1 获得窗口句柄

要找到某个CWnd对象的HWND,用GetSafeHwnd()。

在窗口类中,有句柄的成员变量,可以直接访问: m_hWnd

在窗口类外,可以用AfxGetMainWnd()->m_hWnd获得。

在MainFrame里直接用this;

其它地方用 CMainFrame pMainFrame = (CMainFrame)theAppm_pMainWnd;

想得到一个控件的的句柄

GetDlgItem(ID…)->m_hWnd

2.2 获得视图的句柄

AfxGetMainWnd()->GetActiveView();

SDI: ((CFrameWnd)(AfxGetApp()->m_pMainWnd))->GetActiveView();

MDI: ((CFrameWnd)(AfxGetApp()->m_pMainWnd))->GetActiveFrame()->GetActiveView();

以上就是关于MFC中,如何在根据控件句柄获取控件对象全部的内容,包括:MFC中,如何在根据控件句柄获取控件对象、MFC如何获取控件在对话框上的位置坐标、mfc中创建分割视图怎么获取视图窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9292097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存