如何用SetWindowLong去除ComboBox的边框

PackChen 2019-02-21 11:46:12
如题,请教各位了,ComboBox的边框的死活去不掉啊
...全文
452 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
PackChen 2019-02-28
  • 打赏
  • 举报
回复
引用 7 楼 schlafenhamster 的回复:
vc6 可以
// CSuperComboBox message handlers
HBRUSH CSuperComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
if (nCtlColor == CTLCOLOR_LISTBOX)
{//ListBox control,It is a COMBOLBOX,not a normal listbox.Besides,
//It is not a child window of combobox.
if (m_listbox.GetSafeHwnd() == NULL)
{
m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
//too later to change the sytle!
// no vscroll !!!
m_listbox.ModifyStyle(0,WS_HSCROLL|LBS_MULTICOLUMN);
//you have to create a new list box ?
//see "Dynamically re-creating a list box" code project.
RecreateComboLBox(&m_listbox);// no messages ?
}
}
if (nCtlColor == CTLCOLOR_EDIT)
{
m_hEdit=pWnd->GetSafeHwnd();
}
//
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}

VS 有函数 可以 直接 取

哦,我试试,谢谢老板
schlafenhamster 2019-02-26
  • 打赏
  • 举报
回复
vc6 可以
// CSuperComboBox message handlers
HBRUSH CSuperComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
if (nCtlColor == CTLCOLOR_LISTBOX)
{//ListBox control,It is a COMBOLBOX,not a normal listbox.Besides,
//It is not a child window of combobox.
if (m_listbox.GetSafeHwnd() == NULL)
{
m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
//too later to change the sytle!
// no vscroll !!!
m_listbox.ModifyStyle(0,WS_HSCROLL|LBS_MULTICOLUMN);
//you have to create a new list box ?
//see "Dynamically re-creating a list box" code project.
RecreateComboLBox(&m_listbox);// no messages ?
}
}
if (nCtlColor == CTLCOLOR_EDIT)
{
m_hEdit=pWnd->GetSafeHwnd();
}
//
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}

VS 有函数 可以 直接 取
PackChen 2019-02-26
  • 打赏
  • 举报
回复
引用 5 楼 schlafenhamster 的回复:
ComboBox 有 2 个 子控件 “ list“ 和 edit 。

去除边框,是否只要获得edit的控件则可,如何获得edit的控件句柄?
PackChen 2019-02-25
  • 打赏
  • 举报
回复
引用 3 楼 Eleven 的回复:
有些控件的某些属性是不支持动态修改的。

我用SetWindowLong发现可以变成粗边框,但是竟然去不掉原来的边框,是不是要取得里面的Edit控件再处理
schlafenhamster 2019-02-25
  • 打赏
  • 举报
回复
ComboBox 有 2 个 子控件 “ list“ 和 edit 。
Eleven 2019-02-22
  • 打赏
  • 举报
回复
有些控件的某些属性是不支持动态修改的。
PackChen 2019-02-21
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
试试从ComboBox派生新类 自己处理 WM_NCPAINT WM_PAINT 消息

不能直接通过SetWindowLong来处理吗?
zgl7903 2019-02-21
  • 打赏
  • 举报
回复
试试从ComboBox派生新类 自己处理 WM_NCPAINT WM_PAINT 消息

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧