MFC 重载Button类后出现的问题

o_758303596 2011-04-20 09:59:24
重载一个button类后,调用出现问题

调用的代码

CWnd* pParentWnd;
pParentWnd=GetForegroundWindow() ; //获得当前窗口的指针
BUTTONTS btn;
btn.Create(_T("按钮"),_T("图书管理功能"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect (20,20,100,40),pParentWnd,123);
btn.ShowWindow(SW_SHOWMAXIMIZED);

重载的类中create函数的代码

BUTTONTS::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
dwStyle |= BS_OWNERDRAW;
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
...全文
95 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
问题解决了,出现在这儿
pParentWnd=GetForegroundWindow() ;
它得到了一个空的指针,当传入的窗口句柄为空,也就是生成了窗口对象但是没有使用 Create创建窗口。
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
对,想好好的看一下控件究竟怎样搞的。

还是错误的,仍然弹出一个警告对话框
For information on how your program can cause an assertion fail ,see the Visual C++ on asserts
Eleven 2011-04-21
  • 打赏
  • 举报
回复
dwStyle |= BS_OWNERDRAW;

你自绘button?
jadyzdr 2011-04-21
  • 打赏
  • 举报
回复
把这个样式SW_SHOWMAXIMIZED改为SW_NORMAL试试看
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
问题出现在winocc.cpp文件中,
BOOL CWnd::ShowWindow(int nCmdShow)
{
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

if (m_pCtrlSite == NULL) //执行到这儿就执行不下去了了
return ::ShowWindow(m_hWnd, nCmdShow);
else
return m_pCtrlSite->ShowWindow(nCmdShow);
}
jadyzdr 2011-04-21
  • 打赏
  • 举报
回复
单步跟进吧,看在什么地方报错,或者打开报错的文件,看看哪一行有问题
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
4楼得方法修改后还是同样的错误
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
是不是CCreateContext* pContext
这儿的缘故啊,可是这是为什么呢?怎么解决啊?
jadyzdr 2011-04-21
  • 打赏
  • 举报
回复

CWnd* pParentWnd;
pParentWnd=GetForegroundWindow() ; //获得当前窗口的指针
BUTTONTS btn;
if(pParentWnd)
{
btn.Create(_T("按钮"),_T("图书管理功能"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect (20,20,100,40),pParentWnd,123);
btn.ShowWindow(SW_SHOWMAXIMIZED)
}
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
错误
Debug Assertion Failed
o_758303596 2011-04-21
  • 打赏
  • 举报
回复
还是出现一样的错误啊
HowToP2p 2011-04-20
  • 打赏
  • 举报
回复
Create参数1 窗口类名传递 _T("按钮")? 应该是_T("Button")

16,472

社区成员

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

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

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