• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 怎么偶提的问题基本上没有解决的。郁闷~!再问一下如下代码为什么多执行几次出现非法指针?一次两次没有问题

怎么偶提的问题基本上没有解决的。郁闷~!再问一下如下代码为什么多执行几次出现非法指针?一次两次没有问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 怎么偶提的问题基本上没有解决的。郁闷~!再问一下如下代码为什么多执行几次出现非法指针?一次两次没有问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 怎么偶提的问题基本上没有解决的。郁闷~! 再问一下如下代码为什么多执行几次出现非法指针?一次两次没有问题
描述:

void CBandToolBarCtrl::checkUpdate()
{
  CWaitCursor wait;
  if(!checkFiles())
    return;
  if(Toolbar::ToolbarItem* item = m_toolbar->Find2("search"))
    item->m_caption = gAppendCommandDisplay;
  setValue(_T("updateVer"),m_toolbar->m_settings.m_updateVer);
// build toolbar data
  int nItems = m_toolbar->m_toolbarItems.size();
  TBBUTTON* pTBBtn = (TBBUTTON*)_alloca(nItems * sizeof(TBBUTTON));
  if(font.m_hFont)
    font.DeleteObject();
  int charset =
#ifdef _2FIND
    HEBREW_CHARSET;
#else
    DEFAULT_CHARSET;
#endif
   std::set<zstring> fonts;
   // select font
   HDC hDC = ::GetDC( NULL );
   LOGFONT lf = { 0, 0, 0, 0, 0, 0, 0, 0, charset, 0, 0, 0,0, '\0' };
   EnumFontFamiliesEx( hDC, &lf,(FONTENUMPROC)EnumFontFamiliesExProc, reinterpret_cast<LPARAM>(&fonts),0 );
   ::ReleaseDC( NULL, hDC );
  for(unsigned int f = 0; f<m_toolbar->m_settings.m_fonts.size(); f++)
  {
    //if(fonts.find(m_toolbar->m_settings.m_fonts[f]->m_name)!=fonts.end())
    {
      font.CreateFont(m_toolbar->m_settings.m_fonts[f]->m_size,0, 0, 0, FW_NORMAL, 0, 0, 0,charset,
                       OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                       DEFAULT_PITCH | FF_SWISS, m_toolbar->m_settings.m_fonts[f]->m_name.c_str());
  break;
    }
  }
  SetFont(font);
  SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
  // prepare each item
  for(int i = 0; i < nItems; i++)
  {
    m_toolbar->m_toolbarItems[i]->m_id = i;
    m_toolbar->m_toolbarItems[i]->m_command_id = m_toolbar->selectCommand(m_toolbar->m_toolbarItems[i]->m_command);
    pTBBtn[i].idCommand = WM_USER + i;
    pTBBtn[i].dwData = 0;
    pTBBtn[i].fsState = TBSTATE_ENABLED;
    pTBBtn[i].iString = i;
    pTBBtn[i].fsStyle = TBSTYLE_BUTTON | BTNS_SHOWTEXT | TBSTYLE_AUTOSIZE;
  }
  SetButtonStructSize(sizeof(TBBUTTON));
  // apply images and hot images lists to toolbar
  if(!m_toolbar->m_bmpFileName.empty())
  {
    zstring filebmp = m_toolbar->m_bmpFileName;
#ifdef _ODBC_DIRECT
  #include "getBimapFilename.inl"
#endif
    CSize bSize;
    CBitmap(LoadImage(filebmp)).GetSize(bSize);
    bSize.cx = bSize.cy;
    SetBitmapSize(bSize);
#ifdef _THELOCALSEARCH
    bSize.cx = 40;
    bSize.cy = 24;
#endif
#ifndef _ODBC_DIRECT
    checkFile(filebmp);
    zstring filebmp2 = m_toolbar->m_bmpHotFileName;
    if(!filebmp2.empty())
      checkFile(filebmp2);
    list.Destroy(); list2.Destroy();
    list.CreateFromImage(filebmp.c_str(),bSize.cx,0,clr_format,IMAGE_BITMAP,LR_CREATEDIBSECTION|loadFlag);
    list2.CreateFromImage(filebmp2.empty() ? filebmp.c_str():filebmp2.c_str(),bSize.cx,0,clr_format,IMAGE_BITMAP,LR_CREATEDIBSECTION|loadFlag);
#else
  #include "applyBimapFilename.inl"
#endif
    SetHotImageList(list2);
    m_hImageList = list.m_hImageList;
    SetImageList(list);
  }
  // init default settings
  m_toolbar->m_settings.init();
  
  // delete all current buttons
  for(int c = GetButtonCount()-1; c >= 0;c--)
     DeleteButton(c);
  // ok add new buttons
  AddButtons(nItems, pTBBtn);
  // to calculate init width to change combo widths
  m_start_width = 0;
  for(int j = 0; j < nItems; j++)
  {
    RECT rc;
    m_toolbar->m_toolbarItems[j]->change(this);
    GetItemRect(j, &rc);
    m_start_width += rc.right - rc.left;
  }
  // to apply some user's settings
  onOptionChange();
  // calculate current width of toolbar for correct chevrons behaiviour
  calculateWidth();
  //CSize s; GetPadding(&s); SetPadding(s.cx,0);
  //EnableHighlight(FALSE);
  // make sure the control is where it should be. 
   AutoSize();
  ::SendMessage(m_hWnd, WM_SIZE, 0, 0);
  //delete pTBBtn;
#ifdef _DEBUG // check that we don't forget about any commands
  for(int wID=WM_MENU_USER;wID<WM_MENU_USER+MAX_ADD_COMMANDS;wID++)
  {
    Toolbar::IMenuItem *item = m_toolbar->getMenuItem(wID);
    if(item && !item->m_command.empty() && m_toolbar->selectCommand(item->m_command)==0)
      ::MessageBox(0,(_T("Can't find command ")+item->m_command).c_str(),alertTitle,0);
  }
#endif
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 棘手问题,憋了一天。在dll中使用CStringArray型数据的奇怪问题。
  • 2017-06-05 COM组件客户端调用的时候,用智能指针的时候还需要CoCreateInstance么?
  • 2017-06-04 100分求教:如何在ATL中响应Word打开事件??
  • 2017-06-05 ATL简单对象的向导中,"Addfiletype"这个步骤是做什么的?
  • 2017-06-05 怎样跟踪调试静态库?
  • 2017-06-05 开发一个多语言版本的软件
  • 2017-06-05 CreatThread和AfxBeginThread有什么区别啊?还有可不可以对一个类中的函数创建相应的线程啊?
  • 2017-06-04 一个COM的问题
  • 2017-06-04 关于接口地址的问题
  • 2017-06-04 atl怎样改变下拉框的值

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 垃圾问题求解!数组与模板的问题
    • 几个新手弱智问题,大家给个标准答案,高分送上!up,gz有分
    • 关于Debug和Release编译出错问题
    • GetProcAddress为什么总返回NULL值?
    • 急,将已有的ocx做到另一个ocx控件里去后,在新控件中如何才能获取原有控件的事件?
    • 在ATL中动态添加元素appendchild
    • 如何在不同窗体中调用主窗体的MSComm控件
    • 关于ATL中怎么调用JAVACRIPT
    • 令人郁闷的内存泄漏
    • CImage::Destroy出错

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有