我正在编写一个带有静态控件和编辑控件(最初设置为不可见)的MFC对话框应用程序。静态在运行时具有区域(例如,A01,A02,A03,A04,B01,B02,...),如下所示:
当我在静态的某个特定矩形(例如A02)中双击鼠标时,我希望编辑控件调整为矩形的大小并覆盖该矩形(例如A02),如下所示:
然而,直到我输入某些内容(例如,字符'a')并删除它们。也就是说,当我双击A02时,会出现编辑控件的插入符号,但我仍然可以看到矩形的“A02”标题:
以下是我如何使编辑控件可见并更改其位置(在这种情况下,rtEdit
是与A02对应的CRect
对象,而m_rtPanelParent
是CRect
对应于整个静态的对象。我在对话框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);
}
我认为编辑控件具有正确的矩形大小和位置(我双击它)。见下文:
对于这种情况,我将不胜感激。
答案 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();
}