wxWidgets und PureBasic

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

wxWidgets und PureBasic

Beitrag von FloHimself »

Hi,

auch hier der Hinweis, wie mit der DLL wx-c.dll aus dem Paketen http://sourceforge.net/project/showfile ... _id=290546
wxWidgets mit Purebasic genutzt werden können. Mehr Infos im Original-Post im englischen Forum http://purebasic.myforums.net/viewtopic.php?t=13414.

Code: Alles auswählen

#wxBOTH                  = $0004 | $0008 
#wxDEFAULT_FRAME_STYLE   = 541068864 

#wxWIDGETS_LIB = 0 

Global wx_app 
Global wx_frame 
Global wx_panel 
Global wx_button 

Procedure ButtonClick(*event.l, iListener.l) 
  wx_msgbox_size = CallCFunction(#wxWIDGETS_LIB, "wxSize_ctor", 150, 50) 
  CallCFunction(#wxWIDGETS_LIB, "wxMsgBox", wx_frame, "I'm going bye-bye!", "Bye!", 0, wx_msgbox_size); 
  CallCFunction(#wxWIDGETS_LIB, "wxWindow_Close", wx_frame, #True) 
  ProcedureReturn 0 
EndProcedure 

Procedure wxApp_OnInit(*self.l) 
  wx_frame = CallCFunction(#wxWIDGETS_LIB, "wxFrame_ctor") 
  If wx_frame 
    wx_frame_pos  = CallCFunction(#wxWIDGETS_LIB, "wxSize_ctor", 200, 200) 
    wx_frame_size = CallCFunction(#wxWIDGETS_LIB, "wxSize_ctor", 500, 300) 
    If CallCFunction(#wxWIDGETS_LIB, "wxFrame_Create", wx_frame, 0, -1, "Welcome To WX-C", wx_frame_pos, wx_frame_size, #wxDEFAULT_FRAME_STYLE, "frame") 
      
      wx_panel = CallCFunction(#wxWIDGETS_LIB, "wxPanel_ctor") 
      CallCFunction(#wxWIDGETS_LIB, "wxPanel_Create", wx_panel, wx_frame, 1, 0, 0, 0, 0) 
      
      wx_button       = CallCFunction(#wxWIDGETS_LIB, "wxButton_ctor") 
      wx_button_pos   = CallCFunction(#wxWIDGETS_LIB, "wxSize_ctor", 150, 100) 
      wx_button_size  = CallCFunction(#wxWIDGETS_LIB, "wxSize_ctor", 100, 30) 
  
      CallCFunction(#wxWIDGETS_LIB, "wxButton_Create", wx_button, wx_panel, 2, "Exit!", wx_button_pos, wx_button_size , 0, 0, 0); 

      CallCFunction(#wxWIDGETS_LIB, "wxEvtHandler_proxy", wx_frame, @ButtonClick()) 
      wxEvent_EVT_COMMAND_BUTTON_CLICKED = CallCFunction(#wxWIDGETS_LIB, "wxEvent_EVT_COMMAND_BUTTON_CLICKED") 

      CallCFunction(#wxWIDGETS_LIB, "wxEvtHandler_Connect", wx_frame, wxEvent_EVT_COMMAND_BUTTON_CLICKED, 2, -1, 0) 
      CallCFunction(#wxWIDGETS_LIB, "wxWindow_CenterOnScreen", wx_frame, #wxBOTH) 
      CallCFunction(#wxWIDGETS_LIB, "wxWindow_Show", wx_frame, #True) 
    EndIf 
  EndIf 
  ProcedureReturn CallCFunction(#wxWIDGETS_LIB, "wxApp_OnInit", wx_app) 
EndProcedure 

Procedure wxApp_OnExit(*self.l) 
  ProcedureReturn CallCFunction(#wxWIDGETS_LIB, "wxApp_OnExit", wx_app) 
EndProcedure 

If OpenLibrary(#wxWIDGETS_LIB,"wx-c.dll") 
  wx_app = CallCFunction(#wxWIDGETS_LIB, "wxApp_ctor") 
  If CallCFunction(#wxWIDGETS_LIB, "wxApp_RegisterVirtual", wx_app, @wxApp_OnInit(),  @wxApp_OnExit()) 
    CallCFunction(#wxWIDGETS_LIB, "wxApp_Run", 1, "") 
  EndIf 
EndIf