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看看结果