Конференция "WinAPI" » Перехват сообщения DoubleClick [D7, WinXP]
 
  • Student © (29.08.09 22:50) [0]
    Столкнулся с задачей: "Навигация по каталогам и файлам". Выбрал компонент ShellListView. Сделал составной класс, вот код:

    unit Unit2;

    interface
    uses
    // system units
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Dialogs,
    ExtCtrls, StdCtrls, IniFiles, Buttons,
    // additional units
    ShellCtrls;

    type
    TArchiveReports = class(TObject)
    private
      pnlMain : TPanel;
      lvListView : TShellListView;
      procedure MesDblClick (var MyMessage : TWMMouse); message wm_LButtonDblClk;
    public
      constructor Create;
    end;

    var
    ArchiveReports : TArchiveReports;
    implementation

    uses
    unit1;

    constructor TArchiveReports.Create;
    begin
    inherited Create;
    pnlMain := TPanel.Create(Form1);
    with pnlMain do
    begin
      Align := alTop;
      Height := 250;
      BevelWidth := 1;
      Font.Name := 'Courier New';
      Font.Size := 12;
      Font.Style := [fsBold];
      Parent := Form1;
      Show;
    end;
    lvListView := TShellListView.Create(pnlMain);
    with lvListView do
    begin
      Width := pnlMain.Width div 2;
      Height := pnlMain.Height;
      Sorted := True;
      ReadOnly := False;
      HideSelection := False;
      TabOrder := 1;
      Parent := pnlMain;
      Color := clGray;
    end;
    end;

    procedure TArchiveReports.MesDblClick (var MyMessage : TWMMouse);
    begin
    ShowMessage ('Хэллоу ворлд');
    end;
    end.

    Я, конечно, писал
      lvListView.OnDblClick := MesDblClick;, но меня не устраивает данный обработчик, т.к. он после DblClick вызывает какае то другое сообщение, которое открывает файл. Т.е. мне как бы "перекрыть" надо это сообщение(которое DblClick). Спасибо

  • Германн © (30.08.09 01:13) [1]
    Спам :(
  • Сергей М. © (31.08.09 08:41) [2]

    > Student


    С какой радости система будет поылать твоему классу сообщение wm_LButtonDblClk ? Окна-то у него нет ..
  • AntiZOG (05.09.09 09:35) [3]
    Как вариант локальный хук.

    Пишется намного проще глобального, так как не нужно межпроцессной коммуникации
    Вот пример для установки глобального. Для локального можно большую часть кода выкинуть.
    http://www.delphimaster.ru/articles/hooks/index.html
 
Конференция "WinAPI" » Перехват сообщения DoubleClick [D7, WinXP]
Есть новые Нет новых   [134434   +27][b:0][p:0]