今天遇到一个非常奇怪的问题,求高手解答

疯狂-的-蜗牛 2011-04-15 11:41:54
MFC对对话框应用程序中添加了一个成员变量:COLORRFF m_cor;用来改变对话框上字体的颜色:pDC->SetTextColor(m_cor);如果没有初始化,运行后显示的是系统默认的黑色字体,其他的一切正常;
如果我在类的构造函数中初始化:m_cor=RGB(0,255,0);运行后,关闭应用程序后,就会发出“砰”的一声,但是没有什么内存泄露那样的对话框出来。
退出菜单的代码是这样的:DeleteNotifyIcon();PostQuitMessage(0);
为什么我给m_cor初始化后,关闭程序,就会发出声音呢?求解……

补充一点:只要m_cor改变了,就会发出那个声音。(我是用CColorDialog改变它的值)
...全文
178 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂-的-蜗牛 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 xianglitian 的回复:]
引用 21 楼 mfcing 的回复:

引用 19 楼 xianglitian 的回复:
pDC->SetTextColor(m_cor);在哪儿调用的

我自己添加的一个函数Draw(CDC* pDC)
{
………………
}
在OnPaint()中添加的CPaintDC dc(this);
Draw(&dc);

那设置颜色之后有没有做恢复
[/Quote]
没有
疯狂-的-蜗牛 2011-04-18
  • 打赏
  • 举报
回复
谢谢各位了,结贴给分
向立天 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 mfcing 的回复:]

引用 19 楼 xianglitian 的回复:
pDC->SetTextColor(m_cor);在哪儿调用的

我自己添加的一个函数Draw(CDC* pDC)
{
………………
}
在OnPaint()中添加的CPaintDC dc(this);
Draw(&dc);
[/Quote]
那设置颜色之后有没有做恢复
竹简999 2011-04-18
  • 打赏
  • 举报
回复
我以前也遇到过类似的问题,好像是对话框已经销毁了,不用函数返回颜色,用一个变量试试,直接m_cor=dlg.m_Color
Eleven 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mfcing 的回复:]
调试结果:Run-Time Check Failure #2 - Stack around the variable 'dlg' was corrupted.不懂是什么意思???
[/Quote]
越界或者溢出吧
lyyscf 2011-04-16
  • 打赏
  • 举报
回复
那就把你改变顔色的代码也贴上来
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xianglitian 的回复:]
引用 8 楼 mfcing 的回复:

引用 6 楼 zyrr159487 的回复:
如果设置为其他COLOR呢

只要这个m_cor的值被改变了,不论在哪里改的,改为何值,关闭程序后都会“砰”的一声响,也没出现什么错误消息。
不通过颜色对话框
通过其他方式改呢?
[/Quote]
其他方式?比如我在OinitDialog()中添加m_cor=RGB(255,0,0);最后也是一样的、
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huangcheng90 的回复:]
贴代码...
[/Quote]
其实代码很简单的,就是我上面那几句就是得了。
void CTimeDlg::OnAbcColor()
{
// TODO: 在此添加命令处理程序代码
CColorDialog dlg;
if(IDOK==dlg.DoModal())
{
m_cor=dlg.GetColor();
}
}
向立天 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mfcing 的回复:]

引用 6 楼 zyrr159487 的回复:
如果设置为其他COLOR呢

只要这个m_cor的值被改变了,不论在哪里改的,改为何值,关闭程序后都会“砰”的一声响,也没出现什么错误消息。
[/Quote]不通过颜色对话框
通过其他方式改呢?
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xianglitian 的回复:]
pDC->SetTextColor(m_cor);在哪儿调用的
[/Quote]
我自己添加的一个函数Draw(CDC* pDC)
{
………………
}
在OnPaint()中添加的CPaintDC dc(this);
Draw(&dc);
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 king_hhuang 的回复:]
dlg已经销毁
[/Quote]
这有什么意义吗?怎么做才能没有那个声音、
King_hhuang 2011-04-16
  • 打赏
  • 举报
回复
dlg已经销毁
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
调试结果:Run-Time Check Failure #2 - Stack around the variable 'dlg' was corrupted.不懂是什么意思???
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zyrr159487 的回复:]
如果设置为其他COLOR呢
[/Quote]
只要这个m_cor的值被改变了,不论在哪里改的,改为何值,关闭程序后都会“砰”的一声响,也没出现什么错误消息。
疯狂-的-蜗牛 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xianglitian 的回复:]
引用 3 楼 mfcing 的回复:

引用 1 楼 huangcheng90 的回复:
贴代码...

其实代码很简单的,就是我上面那几句就是得了。
void CTimeDlg::OnAbcColor()
{
// TODO: 在此添加命令处理程序代码
CColorDialog dlg;
if(IDOK==dlg.DoModal())
{
m_cor=dlg.GetCol……
[/Quote]
不是,是一个托盘菜单消息响应函数,也就就是设置对话框字体颜色
zyrr159487 2011-04-16
  • 打赏
  • 举报
回复
如果设置为其他COLOR呢
hahaking119 2011-04-16
  • 打赏
  • 举报
回复
还是DEBUG调试看看调用栈吧
向立天 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mfcing 的回复:]

引用 1 楼 huangcheng90 的回复:
贴代码...

其实代码很简单的,就是我上面那几句就是得了。
void CTimeDlg::OnAbcColor()
{
// TODO: 在此添加命令处理程序代码
CColorDialog dlg;
if(IDOK==dlg.DoModal())
{
m_cor=dlg.GetColor();
}
}
[/Quote]这是按钮消息?
alweeq86 2011-04-16
  • 打赏
  • 举报
回复
void CTimeDlg::OnAbcColor()
{
// TODO: 在此添加命令处理程序代码
CColorDialog dlg;
//是不是少了这个》??
CreateDialog(,,,,);

if(IDOK==dlg.DoModal())
{
m_cor=dlg.GetCol……
向立天 2011-04-16
  • 打赏
  • 举报
回复
pDC->SetTextColor(m_cor);在哪儿调用的
加载更多回复(5)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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