程序在这里中断ASSERT(::IsWindow(m_hWnd));ASSERT(pWnd != NULL);

uukko 2011-10-13 02:59:46
如题,程序在这里中断了,查了下因为是未创建窗口,谁能帮我看看代码,到底是怎么回事儿呢?
不知道在什么地方找到这个语句~~

在调试的时候提示我说
mfc90d.dll!CToolTipCtrl::AddTool(CWnd * pWnd=0x00000000, const char * lpszText=0xffffffff, const tagRECT * lpRectTool=0x00000000, unsigned int nIDTool=0) 行139 + 0x19 字节 C++

是不是CToolTipCtrl ::AddTool这里没有创建窗口呢?
查了下 程序中是这样定义的
CRichToolTipCtrl m_tip;
m_tip.Create(this);

// these controls get their tip text from the callback
m_tip.AddTool(GetDlgItem(IDOK));
m_tip.AddTool(&m_richedit_showmsg);
m_tip.AddTool(&m_richedit_msg);
这样是不是已经创建了一个窗口了呢?!
...全文
800 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
uukko 2011-10-13
  • 打赏
  • 举报
回复
执行失败是的啊~~ 应该包含了头文件
这个cpp文件包含了#include "ChatDlg.h"头文件
ChatDlg.h头文件包含了 类CRichToolTipCtrl的头文件
而m_tip是在头文件 ChatDlg中定义的啊~~
hsphsphsp 2011-10-13
  • 打赏
  • 举报
回复
也许CRichToolTipCtrl类本身有问题了吧。
gameslq 2011-10-13
  • 打赏
  • 举报
回复
在头文件里定义了之后,要包含头文件
重点看下这个类CRichToolTipCtrl的Create
上面的错误明显是Create执行失败。
小石头0115 2011-10-13
  • 打赏
  • 举报
回复
你的IDOK不存在?
uukko 2011-10-13
  • 打赏
  • 举报
回复
感谢这么快的就回复~~
添加了之后,提示依旧~~
也没有msgbox的提示~~~
fandh 2011-10-13
  • 打赏
  • 举报
回复
BOOL flag = m_tip.Create(this);
if (!flag)
{
AfxMessageBox(_T("err"));
return;
}
uukko 2011-10-13
  • 打赏
  • 举报
回复
》》sky101010ws 下面的算是全了吧?窗口初始化的地方我是这样
写的
m_tip.Create(this);
m_tip.AddTool(GetDlgItem(IDOK));
m_tip.AddTool(&m_richedit_showmsg);
m_tip.AddTool(&m_richedit_msg);
m_tip.AddTool(GetDlgItem(IDC_INSERT_1), _T("{\\rtf1\\ansi\\fs17 Toggles the {\\b bold} state of the selection}"));
m_tip.AddTool(GetDlgItem(IDC_COMMENT_1), _T("{\\rtf1\\ansi\\fs17 Toggles the {\\i italic} state of the selection}"));
m_tip.AddTool(GetDlgItem(IDC_DELETE_1), _T("{\\rtf1\\ansi\\fs17 Toggles the {\\strike strikeout} state of the selection}"));
m_richedit_msg.SetOLECallback(&m_xRichEditOleCallback);
另外再贴一下
void CChatDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChatDlg)
DDX_Text(pDX, IDC_MSG, m_strMsg);
DDX_Text(pDX, IDC_EDIT_SHOWMSG, m_strShowMsg);

DDX_Control(pDX, IDC_MSG, m_richedit_msg);
DDX_Control(pDX, IDC_EDIT_SHOWMSG, m_richedit_showmsg);
// 这里面 m_strMsg 和m_strShowMsg都是在聊天中输入的信息变量 类型是CString的
// m_richedit_msg 和 m_richedit_showmsg是创建的richedit的,类型是自定义的
// CRichToolTipDemoRichEditCtrl 下面想处理文本编辑 所以定义了这个 这样都赋给一个对话框是不是不// 可以呢?
//
//}}AFX_DATA_MAP
}

>>fandh
查了下,m_tip.Create(this) 提示我说 m_tip.Create CXX0017: 错误: 没有找到符号“m_tip”
我在头文件中已经定义了 CRichToolTipCtrl m_tip; 为什么提示我说找不到呢?
看来就是这里出了错误,没找到值,所以无法创建句柄

fandh 2011-10-13
  • 打赏
  • 举报
回复
m_tip.Create(this)可能失败了,你看看返回值是多少?
龙行天下之Sky 2011-10-13
  • 打赏
  • 举报
回复
多贴些代码
你create了,应该是有句柄了
uukko 2011-10-13
  • 打赏
  • 举报
回复
感谢回复 是什么地方的句柄无效了呢?怎么修改呢?
jhayumu 2011-10-13
  • 打赏
  • 举报
回复
无效的窗口句柄

16,472

社区成员

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

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

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