首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • CButton的奇怪问题 [已结帖,结帖人:johnhall]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • johnhall
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-08 21:39:08 楼主
    我用Mfc向导生成一个对话框的工程,然后用classwizard建立一个从CButton继承的类a,然后我在其中写了一个Cr()函数,其中直接调用CButton的Create函数,然后我在对话框的WM_CREATE时创建两个按钮,一个用a的Cr函数,另一个用CButton的Create函数,结果前者失败,后者成功:
    m_btnb.Cr();
    RECT rect={0,0,100,100};
    m_btna.Create(TEXT("haha"),WS_CHILD|WS_VISIBLE,rect,this,1000);

    // a.cpp : implementation file
    //

    #include "stdafx.h"
    #include "xx.h"
    #include "a.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    /////////////////////////////////////////////////////////////////////////////
    // a

    a::a()
    {
    }

    a::~a()
    {
    }
    BOOL a::Cr()
    {
    CButton* b=this;
    RECT rect={0,0,100,100};
    return b->Create(TEXT("haha"),WS_CHILD|WS_VISIBLE,rect,this,1000);
    }

    这是为什么啊????????????????????????????????
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      8

    发表于:2008-08-09 04:55:581楼 得分:50
    你在cr函数中的this,不是父窗口而是a类自身。可以在Cr函数中通过参数传入一个父窗口的指针试试:
    C/C++ code
    m_btnb.Cr(this); BOOL a::Cr(CWnd* pParentWnd) { CButton* b=this; RECT rect={0,0,100,100}; return b->Create(TEXT("haha"),WS_CHILD ¦WS_VISIBLE,rect,pParentWnd,1000); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hfcarrey
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-09 09:50:252楼 得分:0
    支持楼上的,没有指定父对象
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shanying_0
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-09 09:57:433楼 得分:0
    BOOL a::Cr(CButton* b)
    {
    RECT rect={0,0,100,100};
    return b->Create(TEXT("haha"),WS_CHILD ¦WS_VISIBLE,rect,this,1000);
    }

    a *p;
    m_btnb.Cr(p);

    这样应该可以了!!!


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HuiChen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-09 10:13:304楼 得分:0
    1 楼说得对!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhb1190
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 13:40:395楼 得分:0
    同意一楼的说法,没有指定他的父窗口
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeng5211
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:44:466楼 得分:0
    怎么这么创建啊?感觉怪怪的,即使这样做cr函数应该为static才比较合理。
    当然1楼的肯定没问题。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved