gpt4 book ai didi

c++ - MFC中如何移动窗口?

转载 作者:行者123 更新时间:2023-11-30 01:20:03 27 4
gpt4 key购买 nike

我有一个组框,我在其中放置了一个具有自定义高度的 CListCtrl

m_FeatureList.GetClientRect(&rect);
nColInterval = rect.Width()/2;

m_FeatureList.InsertColumn(0, _T("ID"), LVCFMT_LEFT, nColInterval);
m_FeatureList.InsertColumn(1, _T("Class"), LVCFMT_RIGHT, nColInterval);
m_FeatureList.ModifyStyle( LVS_OWNERDRAWFIXED, 0, 0 );
m_FeatureList.SetExtendedStyle(m_CoilList.GetExtendedStyle() | LVS_EX_GRIDLINES);
...
int a, b;
m_FeatureList.GetItemSpacing(true, &a, &b);

// data is a vector containing item text
m_FeatureList.MoveWindow(listRect.left, listRect.top, listRect.Width(), b*data.size()+4);

int i = 0;
std::for_each(data.begin(), data.end(), [&](CString& p) { AddDefectListItem(i++,p); });

现在我想在CListCtrl下面放置一个图片控件,但是所有带有CRect的功能让我很困惑。他们都将控件放在某个地方,但不是我想要的地方。

//m_FeatureList.GetClientRect(&listRect);
//m_FeatureList.ClientToScreen(&listRect);
m_FeatureList.ScreenToClient(&listRect);

// Oh my god, which coordinates do I need???
m_image.MoveWindow(listRect.left, listRect.bottom+3,listRect.Width(), 20);

有人可以帮我解决这个疯狂的 mfc 问题吗?

最佳答案

GetClientRect 返回的左侧和顶部成员始终为零。因此调用 m_FeatureList.GetClientRect 不会告诉您控件所在的位置。您必须调用 m_FeatureList.GetWindowRect,然后转换结果以获得其相对于父对话框的位置。

CRect listRect;
m_FeatureList.GetWindowRect(&listRect);
ScreenToClient(&listRect);
listRect.top = listRect.bottom +3;
listRect.bottom = listRect.top + 20;
m_image.MoveWindow(&listRect);

关于c++ - MFC中如何移动窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19931347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com