jjzjj

vcl - C++ 生成器 XE2,TXMLDocument 'DTD is prohibited'

当我尝试读取带有DTD的XML文档(eagle文件)时出现错误:ProjectxxraisedexceptionclassEDOMParserErrorwithmessage'DTDisprohibited'XMLheader如下所示:如果我删除第二行......一切正常。经过一些谷歌搜索后,似乎MSXML解析器有一个名为“prohibitDTD”的选项默认设置为true(在早期版本中它是false)。但是似乎无法从TXMLDocument类将此选项设置为false。一种解决方案似乎是重新编译.pas库或使用CoCreateInstance()自行创建接口(interface)。我看到

c++ - 如何在 VCL 应用程序中处理已发布、已注册的 Windows 消息?

我有一些低级库代码,我希望能够广播一些自定义窗口消息。在库代码中,定义了以下内容:staticUINTWM_MOTOR_WARNING_MESSAGE=0;extern"C"int_libmain(unsignedlongreason){WM_MOTOR_WARNING_MESSAGE=RegisterWindowMessage("MOTOR_WARNING_MESSAGE");....图书馆正在发送这样的消息://Sendwindowsmessageintret=PostMessage(HWND_BROADCAST,WM_MOTOR_WARNING_MESSAGE,0,0);if(!

c++ - 如何在 C++ Builder 中将注册表导出到 *.reg 文件?

我正在使用reg->SaveKey("Software","D:\1.reg")。但是得到空文件,没有数据。void__fastcallTForm1::Button2Click(TObject*Sender){TRegistry*reg=newTRegistry(KEY_READ);reg->RootKey=HKEY_LOCAL_MACHINE;reg->OpenKey("Software",0);;reg->SaveKey("Software","D:\\1.reg");deletereg;} 最佳答案 SaveKey是对RegS

windows - 如何正确定位 DBGrid 中的图标?

列宽为:48图标宽度为:32。这就是我想画的:12345678901234567890123456789012345678901234567=>48,Columnwitdh--------1234567890123456789012345678901--------=>32,Iconwidth12345678-------------------------------12345678=>blankspaces8(beforeandafter)这是一个SSCCE:.PAS:unituMain;interfaceusesWindows,Messages,SysUtils,Variants

windows - 在 Delphi 2K9 中运行时禁用和启用组件。奇怪的问题

代码如下:procedureDisableContrlOL(constcArray:arrayofstring;ReEnable:boolean=False);//canbecalledfromVKP/RAW/GenerationclicksvarAComponent:TComponent;CompListDis,CompListEna:TStringList;beginCompListDis:=TStringList.Create;CompListEna:=TStringList.Create;fori:=Low(cArray)toHigh(cArray)dobeginACompon

delphi - DeferWindowPos 是否与 VCL 配合良好?

我正在考虑增加对DeferWindowPos的使用。到目前为止,我在一些简单的情况下使用它,并没有发现任何问题。你知道任何陷阱吗?FLeft/FTop/...字段没有正确更新或类似的事情? 最佳答案 DeferWindowPos应该不是问题,因为WM_WINDOWPOSCHANGED、WM_MOVE和WM_SIZE消息在移动/调整大小完成后仍会发送。DeferWindowPos的工作方式就好像用户移动窗口或调整窗口大小一样,VCL会跟踪所有更改并正确更新FLeft、FTop、FWidth和FHeight。

windows - 在 delphi XE7 中找不到 vcl 组件的交互式手势事件,如 igiZoom、igiPan 或 igiRotate

我想为我的Windows应用程序(鼠标和触摸)使用交互式手势事件。尽管OnGesture(Sender:TObject;constEventInfo:TGestureEventInfo;varHandled:Boolean);事件被触发,同时用两根手指触摸缩放,我总是得到EventInfo.gestureId是0。但我得到的是标准手势。注意:我使用DelphiXE7进行开发,使用Windows8.1触摸设备进行测试。procedureTForm1.GISGesture(Sender:TObject;constEventInfo:TGestureEventInfo;varHandled:

delphi - 如何使悬停在最小化、最大化和关闭按钮上的行为正常?

在Delphi应用程序中,当您将鼠标悬停在边框图标上时,例如:最小化最大化恢复它的行为不正确:与行为正确的应用程序进行比较:复制步骤单击文件、新建、VCLFormsApplication-Delphi点击运行(F9)将鼠标悬停在最小化、最大化或关闭按钮上。如何修复?Windows10,64位(在台式电脑上本地运行)德尔福XE6编辑-Delphi7也失败了:在Delphi5中:在Delphi4中:我假设(即害怕)它是由ThemeServices引擎引起的;他们可能认为不尊重用户的偏好很酷。但看起来它是更基本的东西。兼容模式无:失败Windows8:失败Windows7:失败Windows

c++ - 关闭应用程序时如何抑制 "There are still active COM objects in this application"错误?

我已经编写了一些用于在我的C++Builder应用程序中进行拖放的ATLCOM对象。由于我无法控制的原因,当用户试图关闭我的应用程序时,它仍然具有事件的COM对象。这是因为使用我的对象的其他COM客户端似乎缓存了我的COM对象并且不释放它们-结果,当用户单击“X”关闭我的程序时,我的COM对象的引用计数仍然大于零.这会导致用户收到如下不友好的消息:我希望我的应用程序安静地终止,而不是向用户询问这个烦人的问题。如何禁止这条消息? 最佳答案 弹出消息由atlmod.h中的TATLModule::AutomationTerminatePr

windows - TThread 等待用户输入

我有一个TThread实例,我想等待用户输入。线程加载一些东西,等待用户点击一个按钮,然后继续它的任务。我正在考虑将全局bool设置为true,但我认为这对实例不太适用,并且线程必须在循环中检查var状态,这似乎有点不专业。tthread类是否有安全的方法来等待用户输入? 最佳答案 您可以使用SyncObjs单元中的TEvent。TMyThread=class(TThread)publicSignalEvent:TEvent;procedureExecute;override;end;TMyForm=class(TForm)proc