Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Übersetzung api_syscb.h

  Alt 23. Jun 2013, 23:15
Ich habe es jetzt soweit das dass Interface SyscbService ordnungsgemäß erstellt wird.
Mußte aber gleichzeitig ein neues erstellen da ich erstmal das Interface ApiApplication erstellen mußte.
Das geht auch bis an einer gewissen stelle wo ich wiedermal nicht weiss wie genau ich die Parameter zurückgeben muss.

Delphi-Quellcode:
  PGetDirectMouseWheelParams = ^TGetDirectMouseWheelParams;
  TGetDirectMouseWheelParams = record
    Handle : ^DWORD;
    uMsg : ^Integer;
    Wp : ^WPARAM;
    Lp : ^LPARAM;
    Controls : Array of Integer; // << problem Nr.1
    ControlsLen: ^Integer;
  end;
Delphi-Quellcode:
    API_APPLICATION_DIRECTMOUSEWHEEL_PROCESSDIALOGMESSAGE:
    begin
      if Assigned(AParams) and (AParamCount = CreateDirectMouseWheelParamCount) then
      begin
        with GetDirectMouseWheelParams^ do
          if Assigned(uMsg) and
            Assigned(Wp) and
            Assigned(Lp) and
            Assigned(Controls) and // ???
            Assigned(ControlsLen) then
          begin
            //
            Result := Ord(True);
          end;
      end;
    end;
Der Aufruf!

Code:
   
if (FALSE != WASABI_API_APP->DirectMouseWheel_ProcessDialogMessage(hwnd, msg, wParam, lParam, controls, ARRAYSIZE(controls)))
{
  return TRUE;
}
Rückgabe!
Code:
inline BOOL api_application::DirectMouseWheel_ProcessDialogMessage(HWND hwnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam, const int controls[], int controlslen)
{
   return _call(API_APPLICATION_DIRECTMOUSEWHEEL_PROCESSDIALOGMESSAGE, (BOOL)FALSE, hwnd, uMsg, wParam, lParam, controls, controlslen);
}
Dispatch!
Code:
template<class RETURN_TYPE, class PARAM1, class PARAM2, class PARAM3, class PARAM4, class PARAM5, class PARAM6>
RETURN_TYPE _call(int msg, RETURN_TYPE defval, PARAM1 param1, PARAM2 param2, PARAM3 param3, PARAM4 param4, PARAM5 param5, PARAM6 param6) {
    void *params[6] = { &param1, &param2, &param3, &param4, &param5, &param6 };
    RETURN_TYPE retval;
    if (_dispatch(msg, &retval, params, 6)) return retval;
    return defval;
}
Wie man sehen kann stimmt da einiges nicht was auch logisch ist da ich noch nicht weiss was ich übergeben muss.

Es geht nicht mehr um die Übersetzung sondern um meinen Record siehe "Controls : Array of Integer;"
Die Rückgabe scheint ja BOOL zu sein.

BOOL(AReturn^) := ????

gruss

Geändert von EWeiss (11. Jul 2019 um 15:42 Uhr)
  Mit Zitat antworten Zitat