線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:906
推到 Plurk!
推到 Facebook!

调用"更改图标"对话框,编译过不了

答題得分者是:ha0009
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-02 09:45:12 IP:211.162.xxx.xxx 未訂閱
大大们,我这个傻瓜又在提问了,请您见谅哦 我想在程式中调用"更改图标"对话框,代码如下: < class="code"> unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,shellapi; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function PickIconDlg(hwndOwner:HWND; lpstrFile:PChar;nMaxFile:DWORD; lpdwIconIndex: LPDWORD):BOOL;stdcall;external 'SHELL32.DLL' index 62; procedure TForm1.Button1Click(Sender: TObject); var PName: PChar; MaxFl,IcoIndex: Cardinal; NumIcon:Integer; hLIcon,hSIcon: THandle; begin if OpenDialog1.Execute then begin GetMem(PName,1024); StrCopy(PName,PChar(OpenDialog1.FileName)); MaxFl := 1023; IcoIndex := 0; if not PickIconDlg(Handle,PName,MaxFl,@IcoIndex) then Exit; NumIcon := ExtractIconEx(PName,IcoIndex,hLIcon,hSIcon,1); FreeMem(PName); DrawIcon(Canvas.Handle,250,43,hLIcon); end; end; end. 可是编译却过不了: [Warning] Unit1.pas(27): Symbol 'INDEX' is specific to a platform [Error] Unit1.pas(45): Types of actual and formal var parameters must be identical [Fatal Error] Porject1.dpr(5): Could not compile used "Unit1.pas" 编译器把错误停在了 NumIcon := ExtractIconEx(PName,IconIndex,hLIcon,hSIcon,1); 请大大们指出错误在那里及改正的办法,不省感激!!! 人生在勤,不索何获?
------
人生在勤,不索何获?
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-02 10:03:10 IP:61.30.xxx.xxx 未訂閱
你好: 請你改紅色的部分 < class="code"> function PickIconDlg(hwndOwner:HWND; lpstrFile: PChar; nMaxFile: DWORD; lpdwIconIndex: LPDWORD): BOOL; stdcall; external 'SHELL32.DLL' index 62; procedure TForm1.Button3Click(Sender: TObject); var PName: PChar; MaxFl,IcoIndex: Cardinal; NumIcon:Integer; hLIcon,hSIcon: HICON; begin if OpenDialog1.Execute then begin GetMem(PName,1024); StrCopy(PName,PChar(OpenDialog1.FileName)); MaxFl := 1023; IcoIndex := 0; if not PickIconDlg(Handle,PName,MaxFl,@IcoIndex) then Exit; NumIcon := ExtractIconEx(PName,IcoIndex,hLIcon,hSIcon,1); FreeMem(PName); DrawIcon(Canvas.Handle,250,43,hLIcon); end; end;
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-02 10:03:51 IP:218.16.xxx.xxx 未訂閱
hLIcon,hSIcon: THandle; 改 hLIcon,hSIcon: hIcon; 就可編譯了,因為是 var 所以 Type 一定要與 ExtractIconEx 宣告的完全相同,即 hIcon
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-02 10:37:29 IP:211.162.xxx.xxx 未訂閱
谢谢ha0009和Justmade大大,小弟很感谢您们的回答 人生在勤,不索何获?
------
人生在勤,不索何获?
系統時間:2024-04-28 2:19:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!