1.#define GETCHILDWININFO(szRegPathStub) \
  if (g_fSaveWinPos) \
{ \
if (pApp->GetSetting(szRegPathStub##POS, &r)) \
pr = &r; \
\
dwStyle = WS_CHILD; \
nMinMax = pApp->GetSetting(szRegPathStub##MINMAX, SW_SHOW); \
} \
  else \
{ \
pr = NULL; \
nMinMax = SW_SHOW; \
}2.
int CRDViewApp::GetSetting(LPCTSTR strName, int nDefVal)
{
return GetProfileInt("Settings", strName, nDefVal);
}LPCTSTR CRDViewApp::GetSetting(LPCTSTR strName, LPCTSTR strDefVal)
{
static CString strRet; strRet = GetProfileString("Settings", strName, strDefVal); return strRet;
}
3.#define SPIM_REG_MESSAGESPOS "Message Window Position"4. GETCHILDWININFO(SPIM_REG_MESSAGES);  //出错的位置
m_wndMessages.Create(this, "消息窗口", pr, ES_AUTOHSCROLL | ES_AUTOVSCROLL);
m_wndMessages.ShowWindow(nMinMax);报错:
F:\studio\RDView_tmp\RDViewView.cpp(190) : error C2065: 'SPIM_REG_MESSAGESPOS' : undeclared identifier在4中的位置是在view创建时创建一个窗口时出错,其中涉及的函数均已给出,请问是什么问题,SPIM_REG_MESSAGES这里起什么作用,在3 中define的定义还跟这个不一样,但出错的信息是这样
本义是在view中调用不同的窗口将不同的信息显示出来,一些消息,代码段,数据段以及一些寄存器信息

解决方案 »

  1.   

    如果“在3 中define的定义还跟这个不一样”,当然要出错了。SPIM_REG_MESSAGES作为宏的参数传递给GETCHILDWININFO宏,由于这个宏定义中有字符串组合的szRegPathStub##POS和szRegPathStub##MINMAX,那么实际需要声明SPIM_REG_MESSAGESPOS和SPIM_REG_MESSAGESMINMAX两个宏,例如:
    #define SPIM_REG_MESSAGESPOS "Message Window Position"
    #define SPIM_REG_MESSAGESMINMAX "Message Window MinMax"
    否则是通不过编译的。
      

  2.   

    ##用来连接两个不带 引号 的串,比如#define myset( abc ) m_check##abc.SetCheck( 1 )如果调用myset( 1 ); 则会变成 m_check1.SetCheck( 1 );
      

  3.   

    那么GETCHILDWININFO(SPIM_REG_MESSAGES)中的这个参数在创建对话框时起什么作用,我还没看出来