Как изменить положение всплывающего окна справки в Delphi? - PullRequest
4 голосов
/ 10 февраля 2012

У меня есть код ниже, который теперь показывает стандартное всплывающее окно справки Windows, где это возможно. Кто-нибудь знает, есть ли способ позиционирования, где появляется это окно? Например, чтобы он отображался там, где щелкнул пользователь?

function HelpPopupWindow(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;
var
  dwIDs: array[0..3] of DWord;
begin
  dwIDs[0] := Handle;
  dwIDs[1] := Data;
  dwIDs[2] := 0;
  dwIDs[3] := 0;

  HtmlHelp(Handle, PChar('HELP FILE LOCATION HERE::/cshelp.txt'), HH_TP_HELP_CONTEXTMENU, DWORD(@dwIDs[0]));

  CallHelp := False;
end;

Приветствия

Пол

1 Ответ

2 голосов
/ 10 февраля 2012

Вы должны использовать HH_DISPLAY_TEXT_POPUP для отображения всплывающей справки. Это дает вам больше гибкости благодаря структуре HH_POPUP, которую вы передаете. Используйте поле pt для указания позиции:

Указывает (в пикселях), где должен располагаться верхний центр всплывающего окна.

На сайте Helpware приведен пример кода Delphi:

{Show HH Popup using a string (StringID) from text file in a CHM
StringID: eg. 99; CHMTextFile: eg. _runDir + 'help.chm::/cshelp.txt'}
function HH_ShowPopupHelp3(aParent: TForm; StringID: Integer; 
  CHMTextFile: String; XYPos: TPoint): HWND;
var hhpopup: HH.THHPopup;
begin
  with hhpopup do
  begin
    cbStruct := sizeof(hhpopup); //sizeof this structure
    hinst := 0; //no used 
    idString := StringID; //topic number in a text file.
    pszText := nil; //no used
    pt := XYPos; //top center of popup
    clrForeground := COLORREF(-1); //use -1 for default - RGB value
    clrBackground := COLORREF(-1); //use -1 for default - RGB value
    rcMargins := Rect(-1,-1,-1,-1);//amount of space between edges
    pszFont := ''; 
  end;
  Result := HtmlHelp(aParent.Handle, PChar(CHMTextFile), 
  HH_DISPLAY_TEXT_POPUP, DWORD(@hhpopup));
end;

На самом деле, я думаю, что вы уже нашли эту страницу, судя по вашему коду, но просто нужно прочитать немного дальше вниз по странице.

...