我有一个窗口,我想最小化(到任务栏),所以我打电话ShowWindow:
ShowWindow(Handle, SW_MINIMIZE);
Run Code Online (Sandbox Code Playgroud)
除了不是最小化自身(到任务栏),窗口被图标化:

窗口是无人值守的:

如何最小化任务栏的窗口?
更新:
根据2002年的一些建议,我尝试设置WS_EX_APPWINDOW窗口样式和/或确保窗口没有所有者:

不幸的是,这改变了我的(Delphi)应用程序的行为,因为我的应用程序现在有两个任务栏图标,而不是一个:

当然,这是Delphi(5)的神器; 因为我试图解决另一个问题.
但这不应该影响这个问题.我正在调用ShowWindow(..., SW_MINIMIZE)API,而不是最小化窗口Windows正在图标化应用程序.
如何最小化任务栏的窗口?
这可能是一个非常简单的问题,但我从未接触过delphi.我有一个编辑框,可以接受角色.但在某些特殊情况下,我必须验证编辑框字符只是数字.
我们怎么做?
注意:用户可以输入任何char,但在验证时我必须验证上面的一个.
我在Delphi5的应用程序中使用FastMM 4.97.
一切都运行良好,如果我从IDE运行我的应用程序,故意泄漏用于测试目的.我得到适当的通知和错误日志.
但是,如果我在IDE之外运行我的应用程序(从Windows资源管理器运行.exe文件),则不会发生任何事情.
我错过了什么吗?这种行为是有意的吗?可以改变吗?
在Delphi 5中,我目前编写的代码调用块中的Free多个变量finally,例如
...
finally
a.Free;
b.Free;
c.Free;
end;
Run Code Online (Sandbox Code Playgroud)
这段代码假设Free永远不会引发,因为,例如,如果a.Free提出,内存b和c将被泄露.这个假设是否合理?
有没有人在Delphi中成功使用过WebKit?
WebKit是一个开源的Web浏览器引擎.WebKit也是Safari,Dashboard,Mail和许多其他OS X应用程序使用的引擎的Mac OS X系统框架版本的名称.
我想创建一个与电子设备相同的iPhone/iPad移动模拟器.(我试过免费版 - 似乎它也使用Adobe AIR).
使用Safari浏览器,我们可以为iPhone移动网站提供最准确的预览结果.所以我想在我的应用程序中嵌入WebKit(Safari使用),这样我的客户就可以对他们的移动网站进行可靠的预览.
我在网上搜索过,但找不到合适的代码.(我能找到的最好的是这个,但它不起作用).
Delphi Chromium Embedded在答案中提出的3个主要问题是:
我从政府网站上获取一些XML :
http://www.bankofcanada.ca/stats/assets/rates_rss/noon/en_all.xml
Run Code Online (Sandbox Code Playgroud)
我正在使用以下相当简单的代码:
var
szUrl: string;
http: IXMLHTTPRequest;
begin
szUrl := 'http://www.bankofcanada.ca/stats/assets/rates_rss/noon/en_all.xml';
http := CoXMLHTTP60.Create;
http.open('GET', szUrl, False, '', '');
http.send(EmptyParam);
Assert(http.Status = 200);
Memo1.Lines.Add('HTTP/1.1 '+IntToStr(http.status)+' '+http.statusText);
Memo1.Lines.Add(http.getAllResponseHeaders);
Memo1.Lines.Add(http.responseText);
Run Code Online (Sandbox Code Playgroud)
我不会显示返回的所有正文,但它确实返回有效的xml responseText:
HTTP/1.1 200 OK
Cache-Control: max-age=5
Connection: keep-alive
Connection: Transfer-Encoding
Date: Fri, 30 Mar 2012 14:50:50 GMT
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Expires: Fri, 30 Mar 2012 14:50:55 GMT
Server: Apache/2.2.16 (Unix) PHP/5.3.3 mod_ssl/2.2.16 OpenSSL/1.0.0d mod_perl/2.0.4 Perl/v5.12.0
X-Powered-By: PHP/5.3.3
<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:cb="http://www.cbwiki.net/wiki/index.php/Specification_1.1" …Run Code Online (Sandbox Code Playgroud) 我在Delphi中有一个TTreeView,其节点分为三个级别.
我使用节点数据来存储除节点文本之外的另一个标签.
Type
TNodeData = class
ExtraNodeLabel: WideString;
//... other members
end;
Run Code Online (Sandbox Code Playgroud)
我有一个OnAdvancedCustomDrawItem事件,我想ExtraNodeLabel在节点文本之前显示它.
我希望实现这一目标:

到目前为止,我得到的是:

问题:
DrawText/ drawTextW我不能用不同的样式绘制文本(因为unicode数据我需要drawtextW)需要解决的问题:
DrawText/ 绘制不同风格的文本DrawtextW码:
procedure TMainForm.TntTreeView1AdvancedCustomDrawItem(
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
var
txtrect, fullrect : TRect;
DC: HDC;
fs: integer;
fc: TColor;
ExtralabelRect: TRect;
nData: TNodeData;
begin
nData := nil;
if assigned(Node.Data) then begin
nData := TNodeData(Node.Data);
end;
DC := TntTreeView1.canvas.Handle;
txtRect := …Run Code Online (Sandbox Code Playgroud) 我想OnKeyPress在用户按下Tab键时接收事件.
procedure TForm1.Edit1(Sender: TObject; var Key: Char);
begin
case Key of
#09:
begin
//Snip - Stuff i want to do
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我尝试子类化Edit框,并处理WM_GETDLGCODE消息:
procedure TfrmEnableVIPMode.AccountNumberWindowProc(var Message: TMessage);
begin
case Message.Msg of
WM_GETDLGCODE: Message.Result := DLGC_WANTTAB;
else
FOldAccountNumberWindowProc(Message);
end;
end;
Run Code Online (Sandbox Code Playgroud)
我现在收到Tab KeyPress事件(正如我所希望的那样),但现在按下Left或Right光标键会使焦点转移到Tab键顺序中的上一个或下一个控件.
收到Tab键按键事件的正确方法是什么?
我试着做MSDN文档所说的内容:
wParam
用户按下的虚拟键,提示Windows发出此通知.处理程序必须有选择地处理这些键.例如,处理程序可能接受并处理VK_RETURN,但将VK_TAB委托给所有者窗口.有关值列表,请参阅虚拟键代码.lParam指向MSG结构的指针(如果系统正在执行查询,则为NULL).
但wParam和wParam均为零.
if Message.Msg …Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi 5.
我想知道使用'TFilterGraph'完成avi文件播放的时间.我想自动一个接一个地运行多个avi文件.所以我下载了DSPack并使用了'TFilterGraph'和'TVideoWindow'组件.avi文件视频正常显示.我如何知道avi视频或任何视频已完成播放,以便我可以选择下一个avi或任何其他视频文件播放?
procedure TForm1.Button2Click(Sender: TObject);
begin
videowindow1.FilterGraph:=filtergraph1; //query interfaces to video window
filtergraph1.Active:=true;
filtergraph1.RenderFile('I:\Project Part 1\Clips\More Clips\D.avi');
filtergraph1.Play;
end;
Run Code Online (Sandbox Code Playgroud) 我在Delphi Detours库中有这个代码,我正在尝试移植:
type
TInstruction = record
Archi: Byte; { CPUX32 or CPUX64 ! }
AddrMode: Byte; { Address Mode }
Addr: PByte;
VirtualAddr: PByte;
NextInst: PByte; { Pointer to the Next Instruction }
OpCode: Byte; { OpCode Value }
OpType: Byte;
OpKind: Byte;
OpTable: Byte; { tbOneByte,tbTwoByte,... }
OperandFlags: Byte;
Prefixes: Word; { Sets of Prf_xxx }
...
end;
var
Inst: TInstruction;
begin
...
Inst := default (TInstruction); // <-
Inst.Archi := CPUX;
Pvt := PPointer(AIntf)^; // vTable !
PCode …Run Code Online (Sandbox Code Playgroud) delphi ×10
delphi-5 ×10
custom-draw ×1
delphi-7 ×1
directshow ×1
dspack ×1
fastmm ×1
iphone ×1
memory-leaks ×1
safari ×1
subclassing ×1
treeview ×1
webkit ×1
windows ×1
windows-7 ×1
windows-95 ×1
xml ×1