首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

c++builder编写托盘程序时Access violation at address 00401DA0 in module 'Project1'.解决方法

2012-03-17 
c++builder编写托盘程序时Access violation at address 00401DA0 in module Project1.提示Project Proje

c++builder编写托盘程序时Access violation at address 00401DA0 in module 'Project1'.
提示Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00401DA0 in module 'Project1'. Read of address 00000168'. Process stopped. Use Step or Run to continue.



void __fastcall TForm1::WndProc(Messages::TMessage& Message)
{
  if(Message.Msg==iconmessage)
  {
  switch (Message.LParam)
  {
  case WM_LBUTTONUP:
  //单击图标,启动/停止服务
  if (start==false)
  {
  StartServer(hint1);
  }
  else
  {
  StopServer(hint2);
  }
  break;
  case WM_LBUTTONDBLCLK:
  //双击图标,恢复原窗口
  ShowWindow(Application->Handle, SW_SHOW);
  Application->MainForm->Visible = true;
  this->WindowState=wsNormal;
  break;
  case WM_RBUTTONUP:
  //右键弹起,响应菜单
  TPoint p;
  GetCursorPos(&p);
  PopupMenu1->Popup(p.x,p.y);
  //TRect rect;
  //TrackPopupMenu(PopupMenu1->Handle, TPM_CENTERALIGN|TPM_LEFTBUTTON, p.x, p.y, 0, Application->MainForm->Handle, &rect);
  break;
  }
  return;
  }
  if((Message.Msg == WM_SYSCOMMAND)&&(Message.WParam == SC_CLOSE)||(Message.WParam == SC_MINIMIZE))//获取窗口关闭消息
  {
  this->Visible = false;
  ShowWindow(Application->Handle,SW_HIDE);
  Application->ShowMainForm = false;
  return;
  }
  TForm::WndProc(Message); //对于其他的消息,调用基础类的WndProc函数让Windows进行缺省处理
}
//---------------------------------------
void __fastcall TForm1::AddTrayIcon() //添加托盘
{
  NOTIFYICONDATA icondata;
  memset(&icondata,0,sizeof(icondata));

  //将结构icondata的各域初始化为0
  icondata.cbSize=sizeof(icondata);
  icondata.hWnd=Handle;
  strncpy(icondata.szTip,"系统托盘程序",sizeof(icondata.szTip));
  icondata.hIcon=Application->Icon->Handle;
  icondata.hIcon=Image1->Picture->Icon->Handle;
  icondata.uCallbackMessage=iconmessage;
  icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
  Shell_NotifyIcon(NIM_ADD,&icondata);
}
//---------------------------------------
void __fastcall TForm1::RemoveTrayIcon() //移除托盘
{
  NOTIFYICONDATA icondata;
  memset(&icondata,0,sizeof(icondata));
  icondata.cbSize=sizeof(icondata);
  icondata.hWnd=Handle;
  Shell_NotifyIcon(NIM_DELETE,&icondata);
}
//---------------------------------------
void __fastcall TForm1::ModifyTrayIcon(TImage *Image,String tip) //修改托盘(图标和提示)
{
  NOTIFYICONDATA icondata;
  memset (&icondata, 0, sizeof (icondata));
  icondata.cbSize = sizeof (icondata);
  icondata.hWnd = Handle;
  icondata.hIcon=Image->Picture->Icon->Handle; //为什么此处会报错??????????????????????????????  


  strncpy (icondata.szTip, tip.c_str(), sizeof (icondata.szTip));
  icondata.uFlags = NIF_ICON|NIF_TIP;
  Shell_NotifyIcon (NIM_MODIFY,&icondata);
}

icondata.hIcon=Image->Picture->Icon->Handle;这句话为什么会报错

[解决办法]


[解决办法]

[解决办法]

[解决办法]

[解决办法]

热点排行