為什麼我的派生按鈕的自畫ownerdraw功能總是出錯?

我從CButton派生出一個個自已的類CMyButton  
  然後在窗體中聲明一個  
  CMyButton   m_btnTest;  
  然後在窗體的OnInitialDialog中寫  
  m_btnTest.Create(...,   WS_CHILD|WS_VISIBLE,...);  
  再CMyButton::PreSubclassWindow()    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
   
  CButton::PreSubclassWindow();  
  ModifyStyle(0,BS_OWNERDRAW);  
  }  
   
  一運行就出錯,我在Create   時加入BS_OWNERDRAW的話,也是一樣,一運行就出錯!!!!

 

 

1 楼feiniaoliang(♂飞鸟良♀)回复于 2004-01-07 19:56:33 得分 5

发给我看下  
  Eugen_Li@hotmail.comTop

2 楼bcpl(林平之)回复于 2004-01-07 20:55:38 得分 22

是不是没改写CButton的虚函数  
  virtual   void   DrawItem   (LPDRAWITEMSTRUCT   lpDrawItemStruct)Top

3 楼greensofter(MC.CN)回复于 2004-01-07 20:57:13 得分 22

必须重载虚函数virtual   void   DrawItem(   LPDRAWITEMSTRUCT   lpDrawItemStruct   );  
   
  Top

4 楼ddszhan(高等数学)回复于 2004-01-07 22:56:38 得分 22

指定了BS_OWNERDRAW自绘风格,就必须重载virtual   void   DrawItem(   LPDRAWITEMSTRUCT   lpDrawItemStruct   );  
  因为原来的:  
  void   DrawItem(   LPDRAWITEMSTRUCT   lpDrawItemStruct   )  
  {  
  ASSERT(FALSE);  
  }Top

5 楼liu_swallow(swallow)回复于 2004-01-07 23:01:43 得分 15

指定了BS_OWNERDRAW自绘风格,就必须重载virtual   void   DrawItem(   LPDRAWITEMSTRUCT   lpDrawItemStruct   );  
  因为原来的:  
  void   DrawItem(   LPDRAWITEMSTRUCT   lpDrawItemStruct   )  
  {  
  ASSERT(FALSE);  
  }  
  Top

6 楼jszj(老板说mis部不是赚钱的部门...)回复于 2004-01-07 23:21:51 得分 0

void   CSelfDrawButton::OnDrawItem(int   nIDCtl,   LPDRAWITEMSTRUCT   lpDrawItemStruct)    
  {  
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
  LPDRAWITEMSTRUCT   lpdis   =   lpDrawItemStruct;  
   
  //RECT   rc;//   =   lpdis->rcItem;  
   
  //CButton::OnDrawItem(nIDCtl,   lpDrawItemStruct);  
  }  
  //注意:   CSelfDrawButton就是最上邊我寫的CMyButton,這裡是從代碼裡copy來的  
  我在這個函數裡下個斷點,調試就沒有運行到這裡Top

7 楼jszj(老板说mis部不是赚钱的部门...)回复于 2004-01-07 23:25:54 得分 0

搞定了!  
   
    謝謝樓上的各位啦!  
   
  我自已沒有看清楚,是那個   virtual   函數,而不是那個   afx_msg   函數  
   
  自己太大意了!

转载于:https://www.cnblogs.com/aion111/archive/2009/01/07/1371045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值