当前位置:首页
开发技术指南» 文章正文
    引言:

 ·为了夏日的"小雨",    »显示摘要«
    摘要: 虽不在同一城市,但有所牵挂,两情相悦,坚信在一起的日子不远了。 与其不能改变现状,那不如勇敢的接受,振奋精神勇往直前。为了现阶段不能改变的事去烦恼,只会令人疲惫。 谁都认为明天会更好,但也要清楚还须今天点点滴滴的努力持之以恒才会成功。准备着为了生活。 ......
    摘要: 我和我女朋友是经我一个表姐姐认识的,我表姐和我女朋友都是我家附近实验小学当老师,公办的,在介绍之前我表姐说她很文静,不爱说话,第一次见面我对她印象很好,第二天约她,她也很爽快的答应了,之后我每天都给她打一次电话,当时我在一个离我们家几百里地的大城市上班,工作生活不好也不坏,当时我想,钱是随时可挣的,人不是随时有的,于是我决定回家工作,经过半个多月的努力,在家找了一份软件开发的工作,工作待遇......


关于动态生成菜单的问题,请各位大侠指点指点

在本论谈中有许多关于动态生成菜单的贴子,但是都是在原来菜单中添加,我是想整个菜单均由程序自动生成,请各位高手指点,这个事我已经试了好长时间,请各位帮帮忙!!!!!!!!!!!!

NO.1   作者: luotitan

气球的  
   
  http://blog.csdn.net/balloonman2002/archive/2004/06/28/28708.aspx

NO.2   作者: rightyeah

为什么要创建动态菜单?我其实更倾向于创建好菜单,然后根据需要隐藏掉一部分菜单项。也就是采用类似于权限控制的手段来显示需要的部分。  
  动态创建菜单不外乎采用另外一种数据格式来保存菜单数据,然后用自定义的算法构造出菜单而已,这些其实都可以由pb的menu   paint完成的。  
  我觉得唯一适用动态创建的菜单是右键弹出式的菜单,不同对象,甚至是同一个对象有不同状态的时候,可能都需要不同的弹出菜单,很难创建适用于所有对象所有状态的弹出菜单,这时候,才可能需要动态创建菜单数据、再动态创建菜单的功能。

NO.3   作者: xqk

整个动态添加,从文件中?正好我以前做过  
  以下是我以前写的动态从文件中添加菜单的VC   DLL源码   ,完整  
  //---------------------------------------------------------------------------  
  //参数:dest为输出的被截后的字符串,source为源传入的字符串,nFlags为要截的目标  
  // 参数为1:截取菜单名,参数为2:截取菜单图标;参数为3:返回菜单的索引  
  //                         4为1则取菜单名,为2则取菜单图象string  
  //返回:返回该字符串左侧空格的个数  
  //---------------------------------------------------------------------------  
  int   StringTok(CString&   dest,const   CString   &source,CString   &sPosition,int   nFlags=1)  
  {  
  int   index   =   0;  
  for(int   i=0;i<source.GetLength();i++)  
  {  
  if(0x20   ==   source.GetAt(i)){index++;continue;} //如果字符串左侧为空格则继续循环直到字符串左侧非空格  
  if(0   ==   index   &&   sPosition   !=   "00000000") //如果该字符串的空格数为0:  
  {  
  int   l   =   atoi(sPosition.Mid(0,1));  
  sPosition.Format("%d%s",++l,"0000000"); //sPosition的第一位+1:   "11111111"   =   "20000000"   ,右侧全部清空  
  break;  
  }  
  else   if(4   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(1,1));  
  sPosition.Format("%s%d%s",sPosition.Left(1),++l,"000000"); //第二位+1:"22222222"   =   "23000000"  
  break;  
  }  
  else   if(8   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(2,1));  
  sPosition.Format("%s%d%s",sPosition.Left(2),++l,"00000"); //第三位+1:"33333333"   =   "33400000"  
  break;  
  }  
  else   if(12   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(3,1));  
  sPosition.Format("%s%d%s",sPosition.Left(3),++l,"0000"); //第四位+1:"44444444"   =   "44450000"  
  break;  
  }  
  else   if(16   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(4,1));  
  sPosition.Format("%s%d%s",sPosition.Left(4),++l,"000"); //第五位+1:"55555555"   =   "55556000"  
  break;  
  }  
  else   if(20   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(5,1));  
  sPosition.Format("%s%d%s",sPosition.Left(5),++l,"00"); //第六位+1:"66666666"   =   "66666700"  
  break;  
  }  
  else   if(24   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(6,1));  
  sPosition.Format("%s%d%s",sPosition.Left(6),++l,"0"); //第七位+1:"77777777"   =   "77777780"  
  break;  
  }  
  else   if(28   ==   index)  
  {  
  int   l   =   atoi(sPosition.Mid(7,1));  
  sPosition.Format("%s%d",sPosition.Left(7),++l); //第八位+1:"88888888"   =   "88888889"  
  break;  
  }  
  break;  
  }  
  if(1   ==   nFlags) //如果标志为截取菜单名  
  {  
  if(source.Find(,)<=0)dest   =   source.Mid(index);  
  else   dest   =   source.Mid(index,source.Find(,)   -   index); //取出菜单名到第一个参数引用中  
  }  
  return   index;  
  }  
 

NO.4   作者: chbcy

能否全部在PB中实现,最好不要用API函数

NO.5   作者: 8193102

总应该有一个根菜单吧只要有一个根菜单应该都可以创建出来的  
  动态菜单的好处就是把功能从程序中可以进行独立出来  
  再结合动态DATAWINDOW,有的时候加个功能就很方便不必编译程序  
  很爽的  
 


 ·jsp中存在sql注入吗    »显示摘要«
    摘要: 新手疑问,渴望详细回应,谢谢大家! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE