void CMySocketDlg::OnSelchangeCombo3() 
{

int nIndex=m_Pattern.GetCurSel();
if(nIndex!=CB_ERR)
{
m_DrawPattern=m_Pattern.GetItemData(nIndex);
Invalidate();
}
m_DrawPattern定义的是CString类型,但是运行时系统在这行提示出错:"warning C4244: 'argument' : conversion from 'unsigned long' to 'char', possible loss of data.应该怎么改?

解决方案 »

  1.   

    m_DrawPattern.Format("%d", m_Pattern.GetItemData(nIndex));
      

  2.   

    是取Item的Text还是Data呢?
    取Text:Pattern.GetText(nIndex, m_DrawPattern);
    取Data:m_DrawPattern.Format("%d", m_Pattern.GetItemData(nIndex));
    m_DrawPattern最好改成m_strDrawPattern,用匈牙利命名法。
      

  3.   

    m_DrawPattern.Format("%d", m_Pattern.GetItemData(nIndex));
      

  4.   

    GetItemData()返回的是DWORD
    可以这么做:
    DWORD param = m_Pattern.GetItemData(nIndex);
    CString *str = (CString*)param;
    不过我用的时候的前提是:在GetItemData()之前
    要用SetItemData()一下:
    CString *str;//一定要指针,
    DWORD param = str;//或者这里用取地址符号&,如果str是CString的话
    SetItemData(param);