调整大小,重新定位并使初始不可见的编辑控件可见

时间:2018-04-14 15:44:31

标签: winapi mfc

我正在编写一个带有静态控件和编辑控件(最初设置为不可见)的MFC对话框应用程序。静态在运行时具有区域(例如,A01,A02,A03,A04,B01,B02,...),如下所示: enter image description here

当我在静态的某个特定矩形(例如A02)中双击鼠标时,我希望编辑控件调整为矩形的大小并覆盖该矩形(例如A02),如下所示: enter image description here

然而,直到我输入某些内容(例如,字符'a')并删除它们。也就是说,当我双击A02时,会出现编辑控件的插入符号,但我仍然可以看到矩形的“A02”标题: enter image description here

以下是我如何使编辑控件可见并更改其位置(在这种情况下,rtEdit是与A02对应的CRect对象,而m_rtPanelParentCRect对应于整个静态的对象。我在对话框m_rtPanelParent中通过m_stcPanel.GetWindowRect (&m_rtPanelParent);ScreenToClient (&m_rtPanelParent);得到OnInitDialog()

void CStaticPanel::OnLButtonDblClk(UINT nFlags, CPoint point)
{
    .....
    .....
    m_pDlgParent->m_editCaption.SetWindowPos (&wndTop, m_pDlgParent->m_rtPanelParent.left + rtEdit.left, m_pDlgParent->m_rtPanelParent.top + rtEdit.top, rtEdit.Width (), rtEdit.Height (), SWP_SHOWWINDOW);
    m_pDlgParent->m_editCaption.SetFocus ();

    CStatic::OnLButtonDblClk(nFlags, point);
}

我认为编辑控件具有正确的矩形大小和位置(我双击它)。见下文:

enter image description here

对于这种情况,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

编辑控件似乎具有较小的高度。确保编辑控件完全覆盖静态控件。对于调试,您可以创建带边框的编辑控件,以便更清楚地显示它。

void CStaticPanel::OnLButtonDblClk(UINT nFlags, CPoint point)
{
    CStatic::OnLButtonDblClk(nFlags, point);

    CRect rc;
    GetWindowRect(&rc);
    m_pDlgParent->ScreenToClient(&rc);
    m_pDlgParent->m_editCaption.SetWindowPos(&wndTop, 
        rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
    m_pDlgParent->m_editCaption.SetFocus();
}