这是我第三遍问这个问题了,这里好像没高手呵!!!!!!!!这回我给60分,希望重奖之下必有勇夫!!!!!!!!

fireseed 2002-02-27 03:12:14
为什么我用CWnd实例化出的窗体在ShowWindow的时候就出错?
我一开始用CFrameWnd就没有问题,可一换成CWnd就出错了(当然其中重载的函数调用也要修改了,如Create()的参数),不知为何

我调试过,确定是在ShowWindow的时候出错的,请高手们帮我号号脉吧,谢谢了!
下面是原代码

class CFashionFrame:public CWnd
{
public:
CFashionFrame();

};

CFashionFrame::CFashionFrame()
{
LPCTSTR RegWnd=AfxRegisterWndClass(CS_DBLCLKS,
0,
HBRUSH(COLOR_WINDOWFRAME),
::AfxGetApp()->LoadStandardIcon(IDI_APPLICATION));

Create(RegWnd,
_T("Creamdog"),
WS_SYSMENU,
CRect(0, 0, 510, 440),
this,
1);

ShowWindow(SW_SHOWNORMAL);
};

class CFashionApp :public CWinApp
{
public:
virtual BOOL InitInstance();
};

BOOL CFashionApp::InitInstance()
{
m_pMainWnd=new CFashionFrame;

return TRUE;
}

CFashionApp myApp;
...全文
72 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
strip 2002-02-27
  • 打赏
  • 举报
回复
1. CWnd::Create不能用来创建desktop or pop-up windows (use CreateEx instead)
2. CWnd没有一个Class与之对应,而CFrameWnd对应已注册的"AfxFrameOrView42d"

所以,把构造函数改为如下就可以了:
CFashionFrame::CFashionFrame()
{

CString strMyClass = AfxRegisterWndClass(
CS_VREDRAW | CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH) ::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));

BOOL b = CreateEx( 0, strMyClass,
_T("Creamdog"),
WS_SYSMENU,
CRect(0, 0, 510, 440),
NULL,//这里用NULL一样错,而且在这里就错了,用this是在Show的时候错
0);
};

前面两个帖子在哪里? 我帮你结了它! LOL
fireseed 2002-02-27
  • 打赏
  • 举报
回复
我改成NULL,还是有错啊
m_pMainWnd=(new CFashionFrame)->m_hWnd;
根本就不对么,类型都不一致,一个是handel 一个是pointer
WingfireWu 2002-02-27
  • 打赏
  • 举报
回复
Create(RegWnd,
_T("Creamdog"),
WS_SYSMENU,
CRect(0, 0, 510, 440),
NULL, //------------------------
1);

m_pMainWnd=(new CFashionFrame)->m_hWnd;
WingfireWu 2002-02-27
  • 打赏
  • 举报
回复
Create(RegWnd,
_T("Creamdog"),
WS_SYSMENU,
CRect(0, 0, 510, 440),
NULL, //------------------------
1);

m_pMainWnd=(new CFashionFrame)->m_hWnd;
WingfireWu 2002-02-27
  • 打赏
  • 举报
回复
Create(RegWnd,
_T("Creamdog"),
WS_SYSMENU,
CRect(0, 0, 510, 440),
NULL,//--------------------
1);

m_pMainWnd=(new CFashionFrame)->m_hWnd;
bookOz 2002-02-27
  • 打赏
  • 举报
回复
CWnd->Create ? 我真丢脸
cntiger 2002-02-27
  • 打赏
  • 举报
回复
把this 改成 NULL或CWnd::FromHandle(WINDOW_TOP(记不清了))
bookOz 2002-02-27
  • 打赏
  • 举报
回复
吐血,CWnd->Create的用法是这样的吗?
看来非高手看不懂了。
fireseed 2002-02-27
  • 打赏
  • 举报
回复
我把ShowWindow拿出来也出一样的错啊!!怎么回事,急死我了!!!!!
pinel 2002-02-27
  • 打赏
  • 举报
回复
这段代码...

1。Frame觉得应该是从CFrameWnd派生
2。在构造函数里Create和Show?不对吧
fireseed 2002-02-27
  • 打赏
  • 举报
回复
那么因该用谁的指针做参数啊???他本身就是主窗口啊!!!
pinel 2002-02-27
  • 打赏
  • 举报
回复
原因是CFashionFrame构造函数中Create语句第四个参数应该是CWnd* ParentWnd 是父类也就是所属窗口类的指针,this什么意思?在本身上创建本身?Create语句当然不会执行成功,更不要说show了
tar 2002-02-27
  • 打赏
  • 举报
回复
没见过这么代码的
ydogg 2002-02-27
  • 打赏
  • 举报
回复
你在构造函数里头showwindow干嘛?你既然从CWnd中派生
注册窗口类这种东西都不用你自己来做

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧