vs2008 MFC COMBOBOX 按钮不显示问题?

绿林好汉 2011-10-13 09:50:25
我要在list上显示combobox,先在对话框上放了一个combobox控件,再在对话框里添加了一个list点击事件,代码如下:
但点list时combobox的按钮不显示,只显示一个combobox的编辑框,必须zaicombobox的按钮的地方点击一下按钮才会显示出来,怎么样让按钮在点击list示就显示出来呢
void CGenIncCmpCfgFile::OnNMClickListIncField(NMHDR *pNMHDR, LRESULT *pResult)
{

// 1.获取当前显示的变量的名称

int iSelItemIndex = 0; // 记录选中的第一条记录的索引
POSITION pPosition = m_lstIncSheetCols.GetFirstSelectedItemPosition();
iSelItemIndex= m_lstIncSheetCols.GetNextSelectedItem( pPosition );

// 2.获取选中项的配置信息
// string strCmdName("");
// strCmdName = (LPCTSTR)m_lstIncSheetCols.GetItemText( iSelItemIndex, 0 );

// // 判断是否点击了空的记录
// if ( strCmdName.empty() )
// {
//GetDlgItem( IDC_BUTTON_VIEW_ALL_CMD_REF_VAL )->EnableWindow( FALSE );
// return ;
// }

//GetDlgItem( IDC_BUTTON_VIEW_ALL_CMD_REF_VAL )->EnableWindow( TRUE );

HWND hWnd1 = ::GetDlgItem (m_hWnd,IDC_LIST_INC_FIELD);

LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;

m_iRowNum = temp->iItem; // get the row number
m_iColNum = temp->iSubItem; // get the column number


if(m_iColNum == -1 || m_iRowNum == -1)
{
return ;
}
m_iRowNumOld = m_iRowNum;
m_iColNumOld = m_iColNum;

//Retrieve the text of the selected subItem
//from the list
CString str = GetItemText(hWnd1,m_iRowNum , 2);

RECT rect;
RECT rect1;
RECT rect2;

// this macro is used to retrieve the Rectanle of the selected SubItem
ListView_GetSubItemRect(hWnd1,temp->iItem, 2,LVIR_BOUNDS,&rect);
::GetWindowRect(temp->hdr.hwndFrom,&rect1); // Get the Rectange of the listControl
::GetWindowRect(m_hWnd,&rect2); // Get the Rectange of the Dialog

int x=rect1.left-rect2.left;
int y=rect1.top-rect2.top;

if( -1 != m_iRowNum )
{
::SetWindowPos(::GetDlgItem(m_hWnd,IDC_CB_GENINCCMP), 0,rect.left+x,rect.top+82, rect.right-rect.left, rect.bottom-rect.top -1,NULL);
}

::ShowWindow(::GetDlgItem(m_hWnd,IDC_CB_GENINCCMP),SW_SHOW);
//把list内容赋给combobox
::SetWindowText(::GetDlgItem(m_hWnd,IDC_CB_GENINCCMP),str);
::SetFocus(::GetDlgItem(m_hWnd,IDC_CB_GENINCCMP));//set focus to combobox

*pResult = 0;
return ;



}
...全文
278 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-11-04
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
绿林好汉 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yuucyf 的回复:]
是不是List的Item中的矩形不够大,比Combobox矩形的大小小.

不过你不要这样做,在以后的代码修改中,特别是消息的处理中会比较麻烦的,所以你最好是把Combobox变成CList的一个成员.(当然要新建一个类CMyList派生于CList).
[/Quote]

矩形够大了,我怀疑是combobox的编辑框和按钮分属不同parent的原因,烦啊,一天了都没搞定
yuucyf 2011-10-13
  • 打赏
  • 举报
回复
是不是List的Item中的矩形不够大,比Combobox矩形的大小小.

不过你不要这样做,在以后的代码修改中,特别是消息的处理中会比较麻烦的,所以你最好是把Combobox变成CList的一个成员.(当然要新建一个类CMyList派生于CList).

15,979

社区成员

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

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