我建如下类:
CMySheet : public CPropertySheet
{
DECLARE_DYNAMIC(CStairSheet)
public:
CStairSheet(CWnd* pWndParent = NULL);
CStatic myCStatic;
}在下面函数中:
int CMySheet ::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
CRect rect;
GetClientRect(&rect);

CPoint pt1(138,rect.bottom - 22);
CPoint pt2(238,rect.bottom - 2);
CRect rect2(pt1,pt2);
 
myCStatic.Create("http://www.myweb.com",SS_CENTER|SS_SIMPLE|WS_VISIBLE,rect2,this);   return 0;
}
m_myCStatic.Create此行在WIN2000系统运行正常。在win98系统出错。现在我只能判断一下操作系统,如果是98则不调用此行。
问题分析:如果在一个函数中声明 CStatic 并立刻调用Create()没有问题。如果在头文件中声明而在函数中调用create()则出错。初步判断与地址分配有关。请教:什么原因?有什么办法能让CStatic 在98下正常工作?

解决方案 »

  1.   

    加上CHILD樣式:
    myCStatic.Create("http://www.myweb.com",WS_CHILD|SS_CENTER|SS_SIMPLE|WS_VISIBLE,rect2,this);
      

  2.   

    要不在.h里面申明CStatic *m_pStatic;构造函数
      m_pStatic=NULL
    使用的时候 m_pStatic=new CStatic析构函数
    if(m_pStatic != NULL)
     delete m_pStatic;
      

  3.   

    myStatic.Create(_T("http://www.myweb.com"), WS_CHILD|WS_VISIBLE|SS_CENTER, 
       CRect(10,10,150,50), this);
      

  4.   

    谢谢checkyvc6(checkyvc6)、arvid-gs.还是依旧。提供更多信息。
    此程序是在AutoCAD平台运行的ARX程序。ARX不允许多线程.
    出错时报错详细信息:
    ACAD 在 000b:000014c0 的模块
     USER.EXE 中导致常规保护错误。
    Registers:
    EAX=000015c8 CS=1707 EIP=000014c0 EFLGS=00000202
    EBX=00000000 SS=3ba7 ESP=0000841c EBP=00008496
    ECX=00001500 DS=1647 ESI=0002d59c FS=3c9f
    EDX=00000000 ES=48bf EDI=00000000 GS=0000
    Bytes at CS:EIP:
    8e c0 66 26 ff 36 3c 00 6a 01 9a 9e 09 97 16 eb 
    Stack dump:
    fffbad39 3c9f0177 01770000 00012978 84700167 014f4afb 01671364 00003a98 00002978 00008470 00008458 00000000 00000000 00000000 15002978 00000000