-
【温故Delphi】GAEA用到Win32 API目录
摘要:Delphi是Windows平台下著名的快速应用程序开发工具,它在VCL中封装并使用了大量的Win32 API。 GAEA基于VCL开发的工具类产品,在程序中使用了大量的Win32 API,将经常用到或涉及到的API罗列并梳理一下。系统API 1、事件对像:CreateEvent、setev...
阅读全文
-
【温故Delphi】双击工程文件打开软件
摘要:问题描述 大部分软件都有鼠标双击文件,就能打开所关联的软件并打开所选工程,这是如何做到的呢? 把文件关联到一个程序中,双击文件来启动程序,那么这个文件名称就是这个程序的命令行的一个参数。 所以要想实现双击工程文件打开软件,在程序运行入口必须要处理命令行。代码说明 1 begin 2 A...
阅读全文
-
【温故Delphi】Win32API之CreateMutex
摘要:解决问题 如何让一个软件在一台机器上只能运行一个实例呢?这个问题用专业术语就是进程互斥。这个问题可以通过CreateMutex来解决。 进程互斥的核心思想:进程在启动时首先检查是否存在此进程实例,如果没有则创建进程并设置进程实例已存在的标记。 CreateMutex用于创建一个互斥体; Op...
阅读全文
-
【温故Delphi】之VCL消息机制小结
摘要:TObject消息分派 procedure Dispatch(var Message); virtual; #负责分派消息到特定VCL组件的事件处理函数 procedure DefaultHandler(var Message); virtual; #消息分类:通过子类覆盖此方法,处理窗...
阅读全文
-
【温故Delphi】Win32API之GetTempFileName
摘要:所遇问题 新建的算量工程文件暂时保存到临时文件中,代码中调用了Win32 API——GetTempFileName 但在一台笔记本上,函数返回了一个空字符串! 为了查明原因想到了好用的GetLastError——返回错误信息。 结果错误信息为“拒绝访问”,这让我很快想到了传入文件夹用户权限问...
阅读全文
-
【温故Delphi】之编译与链接(转)
摘要:本文基本转自“Delphi编译/链接过程” @瓢虫Monster,向瓢虫君学习,:) 下图展示了Delphi是怎样编译源文件,并把它们链接起来,最终形成可执行文件的。 当Delphi编译项目(Project)时,将编译项目源文件、窗体单元和其他相关单元,在这个过程中将会发生好几件事情: 首先,Object Pascal编译器把项目单元文件编译为二进制对象文件(dcu); 然后资源编辑器将把诸如程序图标、窗体文件等资源编译成二进制资源文件; 接着链接开始起作用,链接器根据编译器产生的二进制文件,依项目需要增加一些库文件,并把这些文件综合在一起产生最终的可执行文件。编译、创建和链接...
阅读全文
-
【温故Delphi】之TreeView
摘要:TreeView是Delphi中使用频率比较高的一个控件,虽然使用次数很多,但总结不够。借着这次做GDW原型的机会总结一下,写的过程中也会参考网上的博文。TTreeView、TTreeNodes和TTreeNode TTreeView由节点构成,建树通过对TreeView.items属性进行操作。Items是一个TTreeNodes对象,这是一个TTreeNode集。常用的属性Count,结点个数;Item[index],通过index得到结点;TTreeNode.Data,指向一个指针,可以存对象,存指针,也可以存整数;TTreeNode.Text,树结点的文本;TTreeNode.I...
阅读全文
-
【温故Delphi】之窗口ShowModal
摘要:问题描述 昨天同事修改一个bug,请我审查代码时我发现这个bug很有意思,值得深入研究一下。 问题是这样的,弹出一个模态窗口后,在窗口内切换树节点,发现主窗口也可以接受鼠标和键盘消息了——模态窗口不模态了! 跟踪发现,在窗口内切换树节点会间接调用到进度条窗口(我们自己写的一个窗口),ShowProgress时会调用Application.MainForm.Enabled := False,HideProgress是会调用Application.MainForm.Enabled := True,问题就出现在这个地方。ShowModal实现TCustomForm.ShowModalbegin...
阅读全文
|