CStatic 在Win98与win2K的应用有何不同?请教解决方案。

autice 2003-12-22 04:51:50
我建如下类:
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下正常工作?
...全文
77 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
autice 2003-12-24
谢谢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
  • 打赏
  • 举报
回复
arvid_gs 2003-12-23
myStatic.Create(_T("http://www.myweb.com"), WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(10,10,150,50), this);
  • 打赏
  • 举报
回复
checkyvc6 2003-12-22
要不在.h里面申明CStatic *m_pStatic;

构造函数
m_pStatic=NULL
使用的时候 m_pStatic=new CStatic

析构函数
if(m_pStatic != NULL)
delete m_pStatic;
  • 打赏
  • 举报
回复
autice 2003-12-22
错误依旧谢谢!
  • 打赏
  • 举报
回复
red-fly 2003-12-22
加上CHILD樣式:
myCStatic.Create("http://www.myweb.com",WS_CHILD|SS_CENTER|SS_SIMPLE|WS_VISIBLE,rect2,this);
  • 打赏
  • 举报
回复
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
社区管理员
  • 界面
申请成为管理员
帖子事件
创建了帖子
2003-12-22 04:51
社区公告
暂无公告