![]() |
Übersetzung api_syscb.h
Wäre schön wenn sich jemand bereit erklärt mir bei der Übersetzung der Header Datei zu helfen.
Ich bekomme das alleine nicht gebacken.. ;)
Code:
Ich muss diesen Aufruf zurückgeben können
// ----------------------------------------------------------------------------
// Generated by InterfaceFactory [Wed May 07 00:58:14 2003] // // File : api_syscb.h // Class : api_syscb // class layer : Dispatchable Interface // ---------------------------------------------------------------------------- #ifndef __API_SYSCB_H #define __API_SYSCB_H #include <bfc/dispatch.h> #include <bfc/platform/types.h> class SysCallback; // ---------------------------------------------------------------------------- class NOVTABLE api_syscb: public Dispatchable { protected: api_syscb() {} ~api_syscb() {} public: int syscb_registerCallback(SysCallback *cb, void *param = 0); int syscb_deregisterCallback(SysCallback *cb); int syscb_issueCallback(int eventtype, int msg, intptr_t param1 = 0, intptr_t param2 = 0); /** pass eventtype == 0 to enumerate all syscallbacks ** call Release() on the returned SysCallback when you are done ** although very few wasabi objects support this at this time (2 June 2008) **/ SysCallback *syscb_enum(int eventtype, size_t n); protected: enum { API_SYSCB_SYSCB_REGISTERCALLBACK = 20, API_SYSCB_SYSCB_DEREGISTERCALLBACK = 10, API_SYSCB_SYSCB_ISSUECALLBACK = 30, API_SYSCB_SYSCB_ENUM = 40, }; }; // ---------------------------------------------------------------------------- inline int api_syscb::syscb_registerCallback(SysCallback *cb, void *param) { int __retval = _call(API_SYSCB_SYSCB_REGISTERCALLBACK, (int)0, cb, param); return __retval; } inline int api_syscb::syscb_deregisterCallback(SysCallback *cb) { int __retval = _call(API_SYSCB_SYSCB_DEREGISTERCALLBACK, (int)0, cb); return __retval; } inline int api_syscb::syscb_issueCallback(int eventtype, int msg, intptr_t param1 , intptr_t param2) { int __retval = _call(API_SYSCB_SYSCB_ISSUECALLBACK, (int)0, eventtype, msg, param1, param2); return __retval; } inline SysCallback *api_syscb::syscb_enum(int eventtype, size_t n) { return _call(API_SYSCB_SYSCB_ENUM, (SysCallback *)0, eventtype, n); } // ---------------------------------------------------------------------------- // -- generated code - edit in api_syscbi.h // {57B7A1B6-700E-44ff-9CB0-70B92BAF3959} static const GUID syscbApiServiceGuid = { 0x57b7a1b6, 0x700e, 0x44ff, { 0x9c, 0xb0, 0x70, 0xb9, 0x2b, 0xaf, 0x39, 0x59 } }; extern api_syscb *sysCallbackApi; #endif // __API_SYSCB_H
Code:
gruss
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; } |
AW: Übersetzung api_syscb.h
Wirklich niemand hier der bereit wäre mir unter die Arme zu greifen?
Langsam vermisse ich die Spezialisten hier .. Leute wie (Nico Bendlin) ;) gruss |
AW: Übersetzung api_syscb.h
Wenn ich das beurteilen kann, benötigst du die Werte von:
Die findest du in ![]() Du müsstest jetzt irgendwo eine passende Definition/Implementierung für _dispatch finden, in Dispatchable ist diese nur virtuell und abstrakt. MK3CC ist ein ![]() 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 :stupid: |
AW: Übersetzung api_syscb.h
Zitat:
EDIT: Überflüssigen Kram gelöscht. gruss |
AW: Übersetzung api_syscb.h
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:
Der Aufruf!
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;
Code:
Rückgabe!if (FALSE != WASABI_API_APP->DirectMouseWheel_ProcessDialogMessage(hwnd, msg, wParam, lParam, controls, ARRAYSIZE(controls))) { return TRUE; }
Code:
Dispatch!
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); }
Code:
Wie man sehen kann stimmt da einiges nicht was auch logisch ist da ich noch nicht weiss was ich übergeben muss.
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] = { ¶m1, ¶m2, ¶m3, ¶m4, ¶m5, ¶m6 }; RETURN_TYPE retval; if (_dispatch(msg, &retval, params, 6)) return retval; return defval; } Es geht nicht mehr um die Übersetzung sondern um meinen Record siehe "Controls : Array of Integer;" Die Rückgabe scheint ja BOOL zu sein.
Delphi-Quellcode:
BOOL(AReturn^) := ????
gruss |
AW: Übersetzung api_syscb.h
Ok!
ApiApplication Interface funktioniert jetzt. Somit habe ich nun alle diese Interface nach Delphi portiert..
Das reicht nun erstmal ;) Jetzt muss ich nur noch die Rückgabe von
Code:
bekommen dann sollte es laufen ohne fehler.
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; } Vielleicht hat noch jemand eine Idee Alleinunterhalter ? Hehehehhee EDIT: Danke noch an BUG der hat mich auf den richtigen weg gebracht. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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