??xml version="1.0" encoding="utf-8" standalone="yes"?>男人久久天堂,成人高清网站,激情综合网天天干http://www.aygfsteel.com/wangxunhua/category/39652.html君子如玉,上善若水zh-cnWed, 24 Aug 2011 10:51:32 GMTWed, 24 Aug 2011 10:51:32 GMT60RCP入门E序的要?http://www.aygfsteel.com/wangxunhua/archive/2011/08/24/357196.html叽哩咕噜叽哩咕噜Wed, 24 Aug 2011 08:09:00 GMThttp://www.aygfsteel.com/wangxunhua/archive/2011/08/24/357196.htmlhttp://www.aygfsteel.com/wangxunhua/comments/357196.htmlhttp://www.aygfsteel.com/wangxunhua/archive/2011/08/24/357196.html#Feedback0http://www.aygfsteel.com/wangxunhua/comments/commentRss/357196.htmlhttp://www.aygfsteel.com/wangxunhua/services/trackbacks/357196.html1.    Action
    1> ApplicationActionBarAdvisorcȝmakeActionsҎ(gu)用来初始化Action,可以是内部定义的Action,也可以是自己从Actioncȝ承的自定义Action.
    2>从Actioncȝ承的Action重写runҎ(gu),q是Action执行时候运行的代码.
    3>内置Action 都实CIWorkbenchAction,用ActionFactory.QUIT.create获得Action.
    3>相比Delphi,JFace的ActioncL?把他攑֜menubarManager?他就变成了一个菜?把他攑֜ ToolbarManager上就变成了工具图?delphi里面一个菜单是一个menuItem + Actionl成?工具栏是Button + Actionl成?

2.    菜单:
    1>menubarManager 相当于有主菜?如文?~辑{菜单项.menubarManger.add(menubarManager).q样产生二菜单.
    2>menubarManager.add(Action).q样添加了一个子菜单.
    3>fillMenuBar(IMenuManager menuBar) Ҏ(gu)传进来的menuBar是最端的菜单面?相当于delphi里面d了一个XPMenu控g,会在form上增加一条菜单面?menuBar.add(menubarManager),q样d了一U菜?

3.    工具?/strong>
    1>重写fillCoolBar(ICoolBarManager coolBar) 可以d工具?
    2>创徏一个ToolbarManager实例.是一个工h.可以创徏多个.
    3>ToolbarManager.add(Action).q样是d了一个工具图?
    4>coolBar.add(ToolbarManager),是在界面上d一块工h,可以增加多块工具?
4.ViewC֛
    1>可以从扩展点配置一个Action: 从plugin.xml的Extension标签,点add,扑ևviews
    2>也可以从ViewPartl承一个类.createPartControlҎ(gu)讄一些初始化工作.
    3>View可以理解为Delphi的childwindow,子窗?可以攑֐U控?可以关闭,最大化,最化.
    4>View的显C是依赖一个透视囄.透视囑֏以理解ؓ不同的View或Editor的组?叫透视?
    5>重写Perspective默认透视图createInitialLayoutҎ(gu),q用layout.addViewdq显CZ个视?当加载默认视图时会加载该ViewH口.

5.Editor~辑?/strong>
    1>EditorcdCISaveablePart接口.q绑定了内置的Save Action,SaveAsAction
    2>当点击菜单中的保?Action时会自动调用doSaveҎ(gu).只要重写doSaveҎ(gu)保存当前的文件即可实C?
    3>Editor依赖了一个EditorInputc?EditorInputcL理解为像Struts中的ActionFormcM?用来传递参数给Editor.
    4>如果不是需求这U集成编辑器的功?一般用View可以满,但是如像QQ聊天q样的编辑框的时?用Editor开发应该是一个不错的选择.delphi里面像发送消息程?采用了一个HtmlEdit控g才解决了q个问题.
    5>EditorH口可以用window.getActivePage.openEditor(input, TxtEditor.ID)打开.

叽哩咕噜 2011-08-24 16:09 发表评论
]]>
关于"截断字符串或二进制数?错误http://www.aygfsteel.com/wangxunhua/archive/2011/08/16/356627.html叽哩咕噜叽哩咕噜Tue, 16 Aug 2011 06:42:00 GMThttp://www.aygfsteel.com/wangxunhua/archive/2011/08/16/356627.htmlhttp://www.aygfsteel.com/wangxunhua/comments/356627.htmlhttp://www.aygfsteel.com/wangxunhua/archive/2011/08/16/356627.html#Feedback0http://www.aygfsteel.com/wangxunhua/comments/commentRss/356627.htmlhttp://www.aygfsteel.com/wangxunhua/services/trackbacks/356627.html公司一个很古老的pȝ,忽然出现了一个如下的错误:

查看了代?执行了一个存储过E主要执行了Insert语句. 把几个Insert语句的相兛_D늚长度一Ҏ(gu)发现有长度不相符,更改相关的长?问题搞定.

叽哩咕噜 2011-08-16 14:42 发表评论
]]>
Delphi CreateThread 创徏多线E的写法http://www.aygfsteel.com/wangxunhua/archive/2010/09/01/330606.html叽哩咕噜叽哩咕噜Wed, 01 Sep 2010 10:46:00 GMThttp://www.aygfsteel.com/wangxunhua/archive/2010/09/01/330606.htmlhttp://www.aygfsteel.com/wangxunhua/comments/330606.htmlhttp://www.aygfsteel.com/wangxunhua/archive/2010/09/01/330606.html#Feedback0http://www.aygfsteel.com/wangxunhua/comments/commentRss/330606.htmlhttp://www.aygfsteel.com/wangxunhua/services/trackbacks/330606.htmlfunction CreateThread(lpThreadAttributes: Pointer;
                      dwStackSize: DWORD;
                      lpStartAddress: TFNThreadStartRoutine;
                      lpParameter: Pointer;
                      dwCreationFlags: DWORD;
                      var lpThreadId: DWORD): THandle; stdcall;

其中lpStartAddressQlpParameterQlpThreadId三个参数是必ȝ?br /> lpStartAddress参数指向的是U程执行体ThreadProc的开始地址Q?br /> lpParameter指针cdQ线E的传入参数Q我们如果想l线E执行体ThreadProc传递我们自q数据Q?br />            p通过它了Q?br /> lpThreadIdq回创徏U程ID,q是我们控制U程必须的?/strong>



主要说lpStartAddress和lpParameterq两个参?.
lpStartAddressd始的地址.说明q是个指?一般传一个方法的地址q去.. 也就是我们要执行的一D代?
lpParameter是参数.我们自己要执行的Ҏ(gu)肯定会有参数? 一般都是传一个Recordcd的指?

下面复制一个我的Demo例子:

unit CreateThreadFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  MyParam = record    //U程的时候传?br />     str:string;
  end;
  PMyParam=^MyParam; //Recordcd指针
   procedure CallAgent(msg: PMyParam);stdcall;  //q个Ҏ(gu)声明Z么要攑֜q里可?攑֜cTForm1里面׃?
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{
发送消息给消息弹出代理E序   POPAgent.exe
DDZ
2010q??8?4:44:36
}

procedure TForm1.Button1Click(Sender: TObject);
var
  PMyPara:PMyParam;
  MyPara:MyParam;
  Cthread: THandle;   //U程句柄
  Tid: DWord;
begin
  new(PMyPara) ;   //另外q里q有一个问?q里只New开辟类?q没有FreeMem会不会漏?br />   PMyPara.str := 'h太低发出?;
  Cthread:=CreateThread(nil,0,@CallAgent,PMyPara,0,Tid); //创徏一个线E,同时调用U程函数
end;

procedure CallAgent(msg: PMyParam);stdcall;
var
  HlAgent:HWND;
  ds:TCopyDatastruct;
  AgentMsg:string;
begin
 
  //showmessage(msg^.str);
  AgentMsg := msg.str;
  //Application.ProcessMessages;
  ds.cbData := Length(AgentMsg)+1;
  GetMem(ds.lpData,ds.cbData); //分配内存
  StrCopy(ds.lpData,PChar(AgentMsg)); //复制值到指针

  HlAgent :=FindWindow('TmsgpopMainCaller','调用?);
  if  HlAgent <> 0 then
  begin
    SendMessage(HlAgent,WM_COPYDATA,0,Cardinal(@ds));
  end;
  FreeMem(ds.lpData); //释放内存  q里要释? 上面的Record记录要不要释??我这样写会报错的
end;

end.



看这个例子可以参?nbsp;  CreateThread 函数?U程间的通信Ҏ(gu).q两个技术点.










叽哩咕噜 2010-09-01 18:46 发表评论
]]>
delphi q程间通信的两U方?/title><link>http://www.aygfsteel.com/wangxunhua/archive/2010/08/31/330446.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Tue, 31 Aug 2010 10:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxunhua/archive/2010/08/31/330446.html</guid><wfw:comment>http://www.aygfsteel.com/wangxunhua/comments/330446.html</wfw:comment><comments>http://www.aygfsteel.com/wangxunhua/archive/2010/08/31/330446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxunhua/comments/commentRss/330446.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxunhua/services/trackbacks/330446.html</trackback:ping><description><![CDATA[<br /> <br /> WIN下面q程间通信的最常用办法是消息?<br /> <br /> 下面记录两种消息通信的方?<br />  --------------------------------------------------------------------------------------------<br /> 一.W一U办?利用注册W(xu)indows全局的消?q覆盖wndProcq程来监听消息处?<br /> 1. <br />     发送消息方:<br />     private <br />             strWM:Cardinal;  //定义一个局部变?br />     ...    <br />     proccedure Form1.Create(sender:TObject);<br />     begin<br />         strWM:= RegisterWindowMessage('newspopMessage'); //注册一个windows全局消息,通过q个消息与其它进E通信<br />     end;<br /> <br />     ...<br />     procedure Form1.Button1Click1(Sender:TObject);<br />     var<br />         h:Cardinal;<br />     begin<br />         //通信的步骤得先找到要通信的信息窗口Handle<br />         h:=findWindow('目标q程H口cd','H口Caption'); <br />         //发送消息消息类型ؓ自定义的strWM<br />         SendMessage(h,strWM,0,0);  //q里同样可以带参?wParam,lParam.但我传一个PChar,d的时候L?不知道ؓ?br />         <br />     end;<br />                      <br /> 2. <br />     接收消息?<br />         private <br />             strWM:Cardinal;  //定义一个局部变?br />             procedure wndProc(var msg:Tmessage);override; //覆盖q个Ҏ(gu),可以监听所有的Windows消息<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="line-height: 24px; font-family: arial; font-size: 14px; font-weight: bold" class="Apple-style-span">回调函数</span></span>   <br />          ...    <br />         proccedure Form1.Create(sender:TObject);<br />         begin<br />             strWM:= RegisterWindowMessage('newspopMessage'); //注册一个windows全局消息,q个相当于暗?br />         end;<br />         procecure form1.wndProc(var msg:TMessage);<br />         begin<br />             //在这里处理这个消息就行了<br />             showmessage(strpas(PChar(mes.lparam))); //q样写会报错?但可以处理其它无参数的事?br />         end;<br /> <br /> <br /> ----------------------------------------------------------------------------------------------<br /> ?W二U办?发送一个WM_COPYDATA的消?q且可以带一个TCopyDataStruct的结构类型参?<br /> <br />  1. <br />     发送消息方:<br />      <p> </p> <p>  procedure TMainForm.CallAgent(msg: string);<br />   var<br />     HlAgent:HWND;<br />     ds:TCopyDatastruct;    //定义一个TCopyDatastructl构体变?br />   begin<br />     AgentMsg := msg;<br />     ds.cbData := Length(msg)+1; //l构体的W一个元? 长度cbData <br />     GetMem(ds.lpData,ds.cbData); //分配内存,l构体的W二个参?  数据的指针lpDATA<br />     StrCopy(ds.lpData,PChar(msg)); //复制值到l构指针</p> <p>    HlAgent :=FindWindow('TmsgpopMainCaller','调用?);  //查找目标H体的Handle<br />     if  HlAgent <> 0 then<br />     begin<br />       //ShowMessage('? + IntToStr(Cardinal(@ds)));<br />       SendMessage(HlAgent,WM_COPYDATA,0,Cardinal(@ds));   //发送WM_COPYDATA消息,q带上参?@ds<br />     end;<br />     FreeMem(ds.lpData); //释放数据内存<br />   end;</p> <p>2.<br />     接收方程?<br />     public <br />             procedure MyMessage(var m:TWmCopyData);message WM_CopyData;   //定义一个消息响应过E?q传入一个TWmCopyData的参?br />     ...<br />     procedure TmsgpopMainCaller.MyMessage(var m: TWmCopyData); //实现响应<br />     var<br />       msg:string;<br />     begin<br />       msg :=StrPas(m.CopyDataStruct^.lpData);    //获取参数数据<br />       ShowMessageForm := TShowMessageForm.Create(self,msg);  //处理<br />     end;<br />  </p> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /><img src ="http://www.aygfsteel.com/wangxunhua/aggbug/330446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxunhua/" target="_blank">叽哩咕噜</a> 2010-08-31 18:31 <a href="http://www.aygfsteel.com/wangxunhua/archive/2010/08/31/330446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">Ρɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݸ</a>| <a href="http://" target="_blank">²</a>| <a href="http://" target="_blank">ǹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˴</a>| <a href="http://" target="_blank">ǫ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ӱ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٰ</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank">ϳ</a>| <a href="http://" target="_blank">Ƹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ѿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>