bool choosecolor(lpchoosecolor lpcc);
lpcc:指向一个包括初始化对话框信息的choosecolor结构。当choosecolor函数返回
时,此结构含有有关用户颜色选择的信息;
在delphi中如何用?

解决方案 »

  1.   

    为什么不用
    TColorDialog,在Dialogs页
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, QuickRpt, StdCtrls;type
      TForm1 = class(TForm)
        QuickRep1: TQuickRep;
        OpenDialog1: TOpenDialog;
        Button1: TButton;
        ColorDialog1: TColorDialog;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure MainWndProc(var Message: TMessage);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses CommDlg;
    {$R *.DFM}
    function DialogHook(Wnd: HWnd; Msg: UINT; WParam: WPARAM; LParam: LPARAM): UINT; stdcall;
    begin
      Result := 0;
      if Msg = WM_INITDIALOG then
      begin
        CallWindowProc(MakeObjectInstance(Form1.MainWndProc), Wnd, Msg, WParam, LParam);
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ChooseColorRec: TChooseColor;
      CustomColorsArray: TCustomColors;
    begin
      ChooseColorRec.lStructSize := SizeOf(ChooseColorRec);
      ChooseColorRec.hInstance := HInstance;
      ChooseColorRec.rgbResult := ColorToRGB(clBlack);
      ChooseColorRec.lpTemplateName := '';
      ChooseColorRec.lpCustColors := @CustomColorsArray;
      ChooseColorRec.lpfnHook := DialogHook;
      ChooseColorRec.hWndOwner := Handle;
      ChooseColorRec.Flags := CC_RGBINIT or CC_ENABLEHOOK;
      choosecolor(ChooseColorRec);
      Color := ChooseColorRec.rgbResult;
    end;procedure TForm1.MainWndProc(var Message: TMessage);
    begin
      try
        WndProc(Message);
      except
        Application.HandleException(Self);
      end;
    end;end.
      

  3.   

    报错
    [Error] choosecolor.pas(36): Undeclared identifier: 'TChooseColor'