当前位置: 代码迷 >> VC/MFC >> 为何这段代码在VC6下运行会出现CXX0030: Error: expression cannot be evaluated
  详细解决方案

为何这段代码在VC6下运行会出现CXX0030: Error: expression cannot be evaluated

热度:269   发布时间:2016-05-02 03:45:12.0
为什么这段代码在VC6下运行会出现CXX0030: Error: expression cannot be evaluated

m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0); 
                  int strPartDim[3]= {100, 200, -1}; //分割数量
                  m_StatusBar.SetParts(3, strPartDim);

                  //设置状态栏文本
                  m_StatusBar.SetText(L"分栏一", 0, 0);
                  m_StatusBar.SetText(L"分栏二", 1, 0);
                  m_StatusBar.SetText(L"分栏三", 2, 0);
  m_StatusBar.SetBkColor(RGB(0,0,250));
  m_StatusBar.SetIcon(1, 
                                SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME),FALSE)
                                );//为第二个分栏中加的图标


因为某些原因,我需要把原本在vc2010下运行的代码搬到VC6下,这段代码在VC2010下没问题,VC6下编译通过,运行就出现CXX0030: Error: expression cannot be evaluated,跟踪代码后发现问题出在
m_StatusBar.SetParts(3, strPartDim)这行,进一步跟踪后问题出现在
AFXCMN.INL代码里的这一部分

_AFXCMN_INLINE BOOL CStatusBarCtrl::SetParts(int nParts, int* pWidths)
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths); }

错误显示
名称                  值
m_hWnd          0x00000000
unused      CXX0030: Error: expression cannot be evaluated

请问何解
------解决思路----------------------
建议你看一下变量的定义,及参数传递有没有问题。在release版本下如果程序可以正常执行,其实不用管这个问题
------解决思路----------------------
是不是m_StatusBar创建失败了?
判断下GetLastError看看结果
  相关解决方案