AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Übersetzung api_syscb.h

Ein Thema von EWeiss · begonnen am 22. Jun 2013 · letzter Beitrag vom 24. Jun 2013
Antwort Antwort
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

AW: Übersetzung api_syscb.h

  Alt 23. Jun 2013, 17:34
Wenn ich das beurteilen kann, benötigst du die Werte von:
  • SysCallback::BROWSER = MK3CC('u','r','l')
  • BrowserCallback::ONOPENURL = ???
  • API_SYSCB_SYSCB_ISSUECALLBACK = 30
und musst irgendwo noch die Definition/Implementierung von _call mit 6 Parametern nachschlagen.

Die findest du in bfc/dispatch.h und sie macht nicht anderes, als die Zeiger auf die Parameter in ein Array zu stecken, _dispatch aufzurufen und dessen Rückgabewert zurückzugeben.
Du müsstest jetzt irgendwo eine passende Definition/Implementierung für _dispatch finden, in Dispatchable ist diese nur virtuell und abstrakt.

MK3CC ist ein einfaches Makro.

Das _dispatch aufzutreiben beziehungsweise zu linken sollte der schwierigste Teil sein, eventuell musst du da mal einen C++ Compiler bemühen.
Ich hoffe, das hilft dir weiter
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG (23. Jun 2013 um 17:40 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Übersetzung api_syscb.h

  Alt 23. Jun 2013, 18:01
Zitat:
Das _dispatch aufzutreiben beziehungsweise zu linken sollte der schwierigste Teil sein
Ich habe den Dispatch! Vor langer zeit war Nico mal so nett und hat mir dabei geholfen..

EDIT:
Überflüssigen Kram gelöscht.

gruss

Geändert von EWeiss (24. Jun 2013 um 02:26 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

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
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Übersetzung api_syscb.h

  Alt 24. Jun 2013, 00:32
Ok!

ApiApplication Interface funktioniert jetzt.
Somit habe ich nun alle diese Interface nach Delphi portiert..
  • 1. ApplicationApiService
  • 2. ApiService
  • 3. SyscbApiService
  • 4. Dispatch
  • 5. LanguageApiService

Das reicht nun erstmal

Jetzt muss ich nur noch die Rückgabe von
Code:
intptr_t myOpenURL(HWND hwnd, wchar_t *loc)
 {
    if (loc)
    {
       bool override=false;
       WASABI_API_SYSCB->syscb_issueCallback(SysCallback::BROWSER, BrowserCallback::ONOPENURL, reinterpret_cast<intptr_t>(loc), reinterpret_cast<intptr_t>(&override)); // Den hier
       if (!override)
          return (intptr_t)ShellExecuteW(hwnd, L"open", loc, NULL, NULL, SW_SHOWNORMAL);
       else
          return 33;
    }
    return 33;
 }
bekommen dann sollte es laufen ohne fehler.
Vielleicht hat noch jemand eine Idee

Alleinunterhalter ? Hehehehhee

EDIT:
Danke noch an BUG der hat mich auf den richtigen weg gebracht.

gruss

Geändert von EWeiss (24. Jun 2013 um 00:50 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz