CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

改变对话框控件背景运行报错是什么问题?

楼主yyzz1102(初学VC好郁闷)2005-08-01 20:48:11 在 VC/MFC / 界面 提问

加入成员变量:CBrush   m_Blackbrush  
  在对话框构造函数中:m_Blackbrush.CreateSolidBrush(RGB(0,0,0));  
  在HBRUSH   CMainDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  中  
  {  
  HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
  //   TODO:   Change   any   attributes   of   the   DC   here  
  if(pWnd->GetDlgCtrlID()==IDC_BLACK)  
  {  
  pDC->SetBkColor(RGB(0,0,0));  
  pDC->SetBkMode(TRANSPARENT);  
  return   m_Blackbrush;  
  }  
    //   TODO:   Return   a   different   brush   if   the   default   is   not   desired  
  return   hbr;  
  }  
   
  感觉没什么问题的,为什么在编译时不出错,运行的时候跳错呢?  
   
  请哪位指教一下,谢谢  
   
   
  问题点数:20、回复次数:5Top

1 楼handsomerun(毛毛)回复于 2005-08-01 21:05:29 得分 10

你这个IDC_BLACK是一个static框吗??  
   
  这些代码没问题啊,偶试了试,  
   
  你怎么调用这个对话框的啊??Top

2 楼njvisual(抵制日貨,保衛中國領土釣魚島)回复于 2005-08-01 21:11:08 得分 10

HBRUSH   CMainDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
  //更改背景颜色  
  if   (nCtlColor   !=   CTLCOLOR_EDIT   &&   nCtlColor   !=   CTLCOLOR_LISTBOX)    
  {  
                  pDC->SetBkMode(TRANSPARENT);  
                      HBRUSH   B   =   CreateSolidBrush(RGB(0,0,0));  
                      return   (HBRUSH)   B;  
      }  
   
  HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
   
  //   TODO:   Change   any   attributes   of   the   DC   here  
   
  //   TODO:   Return   a   different   brush   if   the   default   is   not   desired  
  return   hbr;  
  }  
  Top

3 楼yyzz1102(初学VC好郁闷)回复于 2005-08-01 22:20:10 得分 0

IDC_BLACK是static框,我做的是个基于对话框的结构,这个框就是起始对话框上的控件,但跳debug   assertion   failed这样的错误  
  Top

4 楼yyzz1102(初学VC好郁闷)回复于 2005-08-01 22:29:27 得分 0

我也试过了,新建一个程序能实现这个功能,我自己那个程序不加这段代码,也能运行啊,加上就报错了,郁闷Top

5 楼yyzz1102(初学VC好郁闷)回复于 2005-08-01 23:04:02 得分 0

HWND   CDataExchange::PrepareCtrl(int   nIDC)  
  {  
  ASSERT(nIDC   !=   0);  
  ASSERT(nIDC   !=   -1);   //   not   allowed  
  HWND   hWndCtrl;  
  m_pDlgWnd->GetDlgItem(nIDC,   &hWndCtrl);  
  if   (hWndCtrl   ==   NULL)  
  {  
  TRACE1("Error:   no   data   exchange   control   with   ID   0x%04X.\n",   nIDC);  
  ASSERT(FALSE);*****这是出问题的地方  
  AfxThrowNotSupportedException();  
  }  
  m_hWndLastControl   =   hWndCtrl;  
  m_bEditLastControl   =   FALSE;   //   not   an   edit   item   by   default  
  ASSERT(hWndCtrl   !=   NULL);       //   never   return   NULL   handle  
  return   hWndCtrl;  
  }  
   
  这是调试的时候出来的一段,这是出问题的一段代码Top

相关问题

  • 求救:如何在运行时加入对话框控件?
  • *********对话框控件**********
  • 如何在程序运行中动态定义对话框的控件
  • 在控件运行时,怎么把控件的属性对话框显示出来呀。
  • 为什么我在一个对话框上加入一个RICH EDIT控件,编译运行后弹出一个“建立空文档失败”的对话框?
  • 请问一下如何在对话框中在运行期改变一个控件的位置。
  • 在对话框里加入一个编辑控件,在程序运行的时候,怎样使它不可用?
  • 怎么干掉未注册版本的控件运行时常冒出来的提示注册对话框?
  • 如何在运行时刻,显示ADOConnection控件ConnectionString属性的设置对话框
  • 在不同分辨率下运行,对话框及其控件如何改变大小?

关键词

  • idc
  • nidc
  • 对话框
  • nctlcolor
  • hbrush
  • hbr
  • onctlcolor
  • 运行
  • pdc
  • blackbrush

得分解答快速导航

  • 帖主:yyzz1102
  • handsomerun
  • njvisual

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo