Windows Interface for Blitz progs
Blitz3D Forums/Blitz3D Programming/Windows Interface for Blitz progs
| ||
Okay, here ya go: (You DO get event feedback, in case you are wondering.) If you don't need 3D, or only need simple 3D you can do with OpenGL, I would definitely choose BlitzPlus over this method. PureBasic DLL source: hook.l oldProc.l mainHWnd.l Global *MainHWnd Global svar.s Structure message hWnd.l messagename.l wParam.l lParam.l EndStructure Structure msgque *next.msgque *previous.msgque hWnd.l message.l wParam.l lParam.l EndStructure DefType.msgque *que Declare WinProc(hWnd,Mesg,wParam,lParam) Declare AddMessage(messname,hWnd,wParam,lParam) ;General ;============================================================= ;Procedure KeyboardHookProc(code,wParam,*lParam.MSG) ;If *lParam\message=#WM_KEYDOWN ; TranslateMessage_(*lParam.MSG) ; DispatchMessage_(*lParam.MSG) ; EndIf ;EndProcedure Procedure SubclassProc(hWnd,Mesg,wParam,lParam) Shared oldProc,MainHWnd Select Mesg Case #wm_command mess=1 Case #wm_close SetWindowLong_(MainHWnd,#GWL_WNDPROC,oldProc) Case #WM_SIZE rect.rect GetWindowRect_(hWND,rect) w=rect\right-rect\left h=rect\bottom-rect\top If w<MINWINDOWWIDTH resize=1 w=MINWINDOWWIDTH EndIf If h<MINWINDOWHEIGHT resize=1 h=MINWINDOWHEIGHT EndIf If resize=1 MoveWindow_(hWND,rect\left,rect\top,w,h,1) EndIf ; UpdateStatusBar(0) EndSelect AddMessage(mess,hWnd,wParam,lParam) ProcedureReturn CallWindowProc_(oldProc,hWnd,Mesg,wParam,lParam) EndProcedure ProcedureDLL InitWindow(*hWND) Shared MainHWnd,oldProc oldProc=SetWindowLong_(*hWnd,#GWL_WNDPROC,@SubclassProc()) NewList filo.msgque() MainHWnd=*hWnd EndProcedure Procedure WinProc(hWnd,Mesg,wParam,lParam) Shared hook Select Mesg Case #wm_command mess=1 Case #wm_close UnhookWindowsHookEx_(hook) ;DestroyWindow_(hWnd); don't do this in the DLL. mess=2 EndSelect AddMessage(mess,hWnd,wParam,lParam) ProcedureReturn DefWindowProc_(hWnd,Mesg,wParam,lParam) EndProcedure ProcedureDLL.l pbCheckStatus(*a.message) Shared *que *que=LastElement(filo()) If *que<>0 *a\hWnd=*que\hWnd *a\messagename=*que\message *a\wParam=*que\wParam *a\lParam=*que\lParam DeleteElement(filo()) Else *a\hWnd=0 *a\messagename=0 *a\wParam=0 *a\lParam=0 EndIf ProcedureReturn *a\messagename EndProcedure Procedure AddMessage(messname,hWnd,wParam,lParam) Shared *que If messname>0 ResetList(filo()) *que=AddElement(filo()) If *que<>0 *que\hWnd=hWnd *que\message=messname *que\wParam=wParam *que\lParam=lParam EndIf EndIf EndProcedure ;============================================================= ;Window ProcedureDLL.l pbOpenWindow(num,x,y,InnerWidth,InnerHeight,Flags,Title$,ParentWindowID) ProcedureReturn pbOpenWindow(num,x,y,InnerWidth,InnerHeight,Flags,Title$,ParentWindowID) EndProcedure Procedure pbUseWindow(windowid) UseWindow(windowid) EndProcedure ;============================================================= ;Toolbar ProcedureDLL.l pbCreateToolBar(num,*hWND) ProcedureReturn CreateToolBar(num,*hWND) EndProcedure ProcedureDLL.l pbToolBarSeparator() ProcedureReturn ToolBarSeparator() EndProcedure ProcedureDLL.l pbToolBarStandardButton(num,icon) ProcedureReturn ToolBarStandardButton(num,icon) EndProcedure ProcedureDLL.l pbToolBarImageButton(num,icon) ProcedureReturn ToolBarImageButton(num,icon) EndProcedure ProcedureDLL pbAddTBTextButton(num,text$,flags) pbAddTBtextButton(num,text$,flags) EndProcedure ProcedureDLL pbToolBarToolTip(buttonid,text$) ToolBarToolTip(buttonid,text$) EndProcedure ;============================================================= ;Statusbar ProcedureDLL.l pbCreateStatusBar(num,*hWND) ProcedureReturn CreateStatusBar(num,*hWND) EndProcedure ProcedureDLL.l pbAddStatusBarField(width) ProcedureReturn AddStatusBarField(width) EndProcedure ProcedureDLL pbStatusBarText(text$,field) ProcedureReturn StatusBarText(0,field,text$) EndProcedure ;============================================================= ;Menu ProcedureDLL.l pbCreateMenu(num,*hWnd) ProcedureReturn CreateMenu(num,*hWnd) EndProcedure ProcedureDLL pbMenuTitle(text$) ProcedureReturn MenuTitle(text$) EndProcedure ProcedureDLL.l pbMenuBar() ProcedureReturn MenuBar() EndProcedure ProcedureDLL.l pbMenuItem(num,text$) ProcedureReturn MenuItem(num,text$) EndProcedure ProcedureDLL pbOpenSubMenu(text$) ProcedureReturn OpenSubMenu(text$) EndProcedure ProcedureDLL pbCloseSubMenu() ProcedureReturn CloseSubMenu() EndProcedure ProcedureDLL pbDisplayPopupMenu(num,hWnd) DisplayPopupMenu(num,hWnd) EndProcedure ProcedureDLL pbSetMenuItemState(menu,item,state) ProcedureReturn SetMenuItemState(menu,item,state) EndProcedure ProcedureDLL.l pbGetMenuItemState(menu,item) ProcedureReturn GetMenuItemState(menu,item) EndProcedure ProcedureDLL.l pbMenuHeight() ProcedureReturn MenuHeight() EndProcedure ;============================================================= ;Toolbar Pro ;ProcedureDLL.l pbCreateTB(num,*hWnd,w,h,Flags) ;ProcedureReturn CreateTB(num,*hWnd,w,h) ;EndProcedure ;ProcedureDLL.l pbAddTBbutton(num,image,flags) ;ProcedureReturn AddTBbutton(num,image,$2) ;EndProcedure ;ProcedureDLL pbUpdateTB(tbid) ;UpdateTB(tbid) ;EndProcedure ;============================================================= ;Requesters ProcedureDLL.l pbMessageRequester(Title$,Text$,Flags) ProcedureReturn MessageRequester(Title$,Text$,Flags) EndProcedure ProcedureDLL.l pbSaveFileRequester(Title$,DefaultFile$,Pattern$,PatternPosition) svar.s=SaveFileRequester(Title$,DefaultFile$,Pattern$,PatternPosition) ProcedureReturn @svar.s EndProcedure ProcedureDLL.l pbOpenFileRequester(Title$,DefaultFile$,Pattern$,PatternPosition) svar.s=OpenFileRequester(Title$,DefaultFile$,Pattern$,PatternPosition) ProcedureReturn @svar.s EndProcedure ProcedureDLL.l pbSelectedFilePattern() ProcedureReturn SelectedFilePattern() EndProcedure ;============================================================= ;Image ProcedureDLL.l pbLoadImage(num,file$) ProcedureReturn LoadImage(num,file$) EndProcedure ProcedureDLL.l pbUseImage(num) ProcedureReturn UseImage(num) EndProcedure ProcedureDLL.l pbFreeImage(num) ProcedureReturn FreeImage(num) EndProcedure ;============================================================= ;Gadget ProcedureDLL.l pbCreateGadgetList(*hWnd) ProcedureReturn CreateGadgetList(*hWnd) EndProcedure ProcedureDLL pbUseGadgetList(*hWND) UseGadgetList(*hWND) EndProcedure ProcedureDLL.l pbCloseGadgetList() ProcedureReturn CloseGadgetList() EndProcedure ProcedureDLL pbResizeGadget(num,x,y,Width,Height) ResizeGadget(num,x,y,Width,Height) EndProcedure ProcedureDLL.l pbListIconGadget(num,x,y,Width,Height,Title$,TitleWidth,Flags) ProcedureReturn ListIconGadget(num,x,y,Width,Height,Title$,TitleWidth,Flags) EndProcedure ProcedureDLL pbAddGadgetItem(gadgetid,position,text$,imageid) If imageid=-1 ProcedureReturn AddGadgetItem(gadgetid,position,text$) Else ProcedureReturn AddGadgetItem(gadgetid,position,text$,imageid) EndIf EndProcedure ProcedureDLL.l pbGetGadgetState(gadgetid) ProcedureReturn GetGadgetState(gadgetid) EndProcedure ProcedureDLL.l pbComboBoxGadget(num,x,y,Width,Height,Flags) ProcedureReturn ComboBoxGadget(num,x,y,Width,Height,Flags) EndProcedure ProcedureDLL pbSetGadgetState(gadgetid,state) SetGadgetState(gadgetid,state) EndProcedure ProcedureDLL pbRemoveGadgetItem(gadgetid,item) RemoveGadgetItem(gadgetid,item) EndProcedure ProcedureDLL.l pbGetGadgetItemState(gadgetid,item) ProcedureReturn GetGadgetItemState(gadgetid,item) EndProcedure ProcedureDLL pbSetGadgetItemState(gadgetid,item,state) SetGadgetItemState(gadgetid,item,state) EndProcedure ProcedureDLL pbClearGadgetItemList(gadgetid) ClearGadgetItemList(gadgetid) EndProcedure ;============================================================= ;Tree Gadget ProcedureDLL.l pbTreeGadget(num,x,y,width,height,flags) ProcedureReturn TreeGadget(num,x,y,width,height,flags) EndProcedure ProcedureDLL.l pbOpenTreeGadgetNode(gadgetid,position) If position=-1 OpenTreeGadgetNode(gadgetid) Else OpenTreeGadgetNode(gadgetid,position) EndIf EndProcedure ProcedureDLL.l pbCloseTreeGadgetNode(gadgetid,position) If position=-1 CloseTreeGadgetNode(gadgetid) Else CloseTreeGadgetNode(gadgetid,position) EndIf EndProcedure ProcedureDLL pbGadgetID(num) EndProcedure ProcedureDLL pbPanelGadget(num,x,y,w,h) ProcedureReturn PanelGadget(num,x,y,w,h) EndProcedure ProcedureDLL.l pbContainerGadget(gadgetid,x,y,width,height,flags) ProcedureReturn ContainerGadget(gadgetid,x,y,width,height,flags) EndProcedure ProcedureDLL.l pbFreeGadget(gadgetid) ProcedureReturn FreeGadget(gadgetid) EndProcedure ProcedureDLL.l pbButtonImageGadget(num,x,y,w,h,image) ProcedureReturn ButtonImageGadget(num,x,y,w,h,image) EndProcedure ProcedureDLL.l pbButtonGadget(num,x,y,w,h,title$,style) ProcedureReturn ButtonGadget(num,x,y,w,h,title$,style) EndProcedure ProcedureDLL.l pbTextGadget(num,x,y,Width,Height,Text$,Flags) ProcedureReturn TextGadget(num,x,y,Width,Height,Text$,Flags) EndProcedure ProcedureDLL.l pbStringGadget(num,x,y,w,h,content$,style) ProcedureReturn StringGadget(num,x,y,w,h,content$,style) EndProcedure ProcedureDLL.l pbGetGadgetText(num,bank) svar.s=GetGadgetText(num) ProcedureReturn @svar EndProcedure |
| ||
purebasic.decls file:.lib "dlls\purebasic.dll" ;=================================================== ;Event pbCheckStatus%(buffer*) ;=================================================== ;Window InitWindow(hWND%) ;=================================================== ;Requesters pbMessageRequester%(Title$,Text$,Flags%) pbOpenFileRequester$(Title$,DefaultFile$,Pattern$,PatternPosition) pbSaveFileRequester$(Title$,DefaultFile$,Pattern$,PatternPosition) pbSelectedPattern%() ;=================================================== ;Toolbar pbCreateToolBar%(num,hWND%) pbToolBarSeparator%() pbToolBarStandardButton%(num%,icon%) pbToolBarImageButton%(num%,icon%) pbToolBarToolTip(buttonid,text$) ;=================================================== ;ToolbarPro pbCreateTB%(num,hWnd,w,h,flags) pbAddTBbutton%(num,image,flags) pbUpdateTB(tbid) pbAddTBTextButton(num,text$,flags) ;=================================================== ;StatusBar pbCreateStatusBar%(num%,hWND%) pbAddStatusBarField%(width%) pbStatusBarText%(text$,field%) ;=================================================== ;Menu pbCreateMenu%(num%,hWnd%) pbMenuTitle%(text$) pbMenuBar%() pbMenuItem%(num%,text$) pbOpenSubMenu%(text$) pbCloseSubMenu%() pbDisplayPopupMenu%(num%,hWnd) pbMenuHeight%() pbSetMenuItemState(menu,item,state) pbGetMenuItemState%(menu,item) ;=================================================== ;Image pbLoadImage%(num%,file$) pbUseImage(num%) pbFreeImage(num%) ;=================================================== ;Gadget pbCreateGadgetList%(hWND%) pbUseGadgetList(hWND%) pbCloseGadgetList() pbFreeGadget(num%) pbResizeGadget(num%,x%,y%,width%,height%) pbAddGadgetItem(gadgetid%,position%,text$,imageid%) pbGetGadgetState%(gadgetid%) pbSetGadgetState(gadgetid%,state%) pbGetGadgetItemState%(gadgetid,item) pbSetGadgetItemState(gadgetid,item,state) pbRemoveGadgetItem(gadgetid,item) pbClearGadgetItemList(gadgetid) ;Tree Gadget pbTreeGadget%(num%,x%,y%,width%,height%,flags%) pbOpenTreeGadgetNode(gadgetid%,position%) pbCloseTreeGadgetNode(gadgetid%,position%) pbComboBoxGadget%(num,x,y,Width,Height,Flags) pbTextGadget(num,x,y,Width,Height,Text$,Flags) pbListIconGadget(num%,x%,y%,width%,height%,title$,titleWidth%,flags%) pbPanelGadget%(num%,x%,y%,width%,height%) pbContainerGadget%(gadgetid%,x%,y%,width%,height%,flags%) pbButtonImageGadget%(num,x%,y%,width%,height%,image%) pbButtonGadget%(num%,x%,y%,width%,height%,text$,style%) pbStringGadget%(num%,x%,y%,width%,height%,text$,style%) pbGetGadgetText%(num%,bank%) |
| ||
purebasic_const.bb constants file:Const PB_3DArchive_FileSystem=0 Const PB_3DArchive_Zip=1 Const PB_Any=-1 Const PB_Button_Default=1 Const PB_Button_Left=256 Const PB_Button_MultiLine=8192 Const PB_Button_Right=512 Const PB_Button_Toggle=4099 Const PB_Camera_Orthographic=1 Const PB_Camera_Perspective=0 Const PB_Camera_Plot=2 Const PB_Camera_Textured=0 Const PB_Camera_Wireframe=1 Const PB_CheckBox_Center=768 Const PB_CheckBox_Right=512 Const PB_Clipboard_Image=2 Const PB_ClipboardImage=2 Const PB_ComboBox_Editable=2 Const PB_ComboBox_LowerCase=16384 Const PB_ComboBox_UpperCase=8192 Const PB_Container_BorderLess=0 Const PB_Container_Double=8 Const PB_Container_Flat=1 Const PB_Container_Raised=2 Const PB_Container_Single=4 Const PB_Date_Day=3 Const PB_Date_Hour=4 Const PB_Date_Minute=5 Const PB_Date_Month=1 Const PB_Date_Second=6 Const PB_Date_Week=2 Const PB_Date_Year=0 Const PB_Default=-1 Const PB_Engine3D_Average=3 Const PB_Engine3D_Current=0 Const PB_Engine3D_Maximum=1 Const PB_Engine3D_Minimum=2 Const PB_Engine3D_Reset=4 Const PB_Event_ActivateWindow=6 Const PB_Event_CloseWindow=16 Const PB_Event_Gadget=13100 Const PB_Event_Menu=13101 Const PB_Event_MoveWindow=3 Const PB_Event_Repaint=15 Const PB_Event_SizeWindow=5 Const PB_Event_SysTray=13102 Const PB_EventActivateWindow=6 Const PB_EventCloseWindow=16 Const PB_EventGadget=13100 Const PB_EventMenu=13101 Const PB_EventMoveWindow=3 Const PB_EventRepaint=15 Const PB_EventSizeWindow=5 Const PB_EventSysTray=13102 Const PB_EventType_Change=768 Const PB_EventType_CloseItem=65535 Const PB_EventType_Focus=256 Const PB_EventType_LeftClick=0 Const PB_EventType_LeftDoubleClick=2 Const PB_EventType_LostFocus=512 Const PB_EventType_ReturnKey=1281 Const PB_EventType_RightClick=1 Const PB_EventType_RightDoubleClick=3 Const PB_EventType_SizeItem=65534 Const PB_Explorer_Accessed=1163870800 Const PB_Explorer_Column_Accessed=2017812290 Const PB_Explorer_AlwaysShowSelection=16777216 Const PB_Explorer_Attributes=1163870800 Const PB_Explorer_Column_Attributes=2017812290 Const PB_Explorer_AutoSort=64 Const PB_Explorer_BorderLess=1048576 Const PB_Explorer_Created=1163870800 Const PB_Explorer_Column_Created=2017812290 Const PB_Explorer_Directory=2 Const PB_Explorer_DrivesOnly=128 Const PB_Explorer_Editable=256 Const PB_Explorer_File=1 Const PB_Explorer_FullRowSelect=33554432 Const PB_Explorer_GridLines=4194304 Const PB_Explorer_HeaderDragDrop=8388608 Const PB_Explorer_Modified=1163870800 Const PB_Explorer_Column_Modified=2017812290 Const PB_Explorer_MultiSelect=2097152 Const PB_Explorer_Name=1163870800 Const PB_Explorer_Column_Name=2017812290 Const PB_Explorer_NoButtons=134217728 Const PB_Explorer_NoDirectoryChange=8 Const PB_Explorer_NoDriveRequester=16 Const PB_Explorer_NoFiles=1 Const PB_Explorer_NoFolders=4 Const PB_Explorer_NoLines=67108864 Const PB_Explorer_NoMyDocuments=512 Const PB_Explorer_NoParentFolder=2 Const PB_Explorer_NoSort=32 Const PB_Explorer_Selected=4 Const PB_Explorer_Size=1163870800 Const PB_Explorer_Column_Size=2017812290 Const PB_Explorer_Type=1163870800 Const PB_Explorer_Column_Type=1766219586 Const PB_FileSystem_Archive=32 Const PB_FileSystem_Compressed=2048 Const PB_FileSystem_Force=2 Const PB_FileSystem_Hidden=2 Const PB_FileSystem_Normal=128 Const PB_FileSystem_ReadOnly=1 Const PB_FileSystem_Recursive=1 Const PB_FileSystem_System=4 Const PB_Font_Bold=256 Const PB_Font_Default=-1 Const PB_Font_HighQuality=16 Const PB_Font_Italic=512 Const PB_Font_StrikeOut=8 Const PB_Font_Underline=4 Const PB_FontRequester_Effects=256 Const PB_Frame3D_Double=1 Const PB_Frame3D_Flat=3 Const PB_Frame3D_Single=2 Const PB_Image_Border=512 Const PB_ImagePlugin_BMP=0 Const PB_ImagePlugin_JPEG=1195724874 Const PB_ImagePlugin_PNG=4673104 Const PB_Key_0=11 Const PB_Key_1=2 Const PB_Key_2=3 Const PB_Key_3=4 Const PB_Key_4=5 Const PB_Key_5=6 Const PB_Key_6=7 Const PB_Key_7=8 Const PB_Key_8=9 Const PB_Key_9=10 Const PB_Key_A=30 Const PB_Key_Add=78 Const PB_Key_All=-1 Const PB_Key_Apostrophe=40 Const PB_Key_B=48 Const PB_Key_Back=14 Const PB_Key_BackSlash=43 Const PB_Key_C=46 Const PB_Key_Capital=58 Const PB_Key_Comma=51 Const PB_Key_D=32 Const PB_Key_Decimal=83 Const PB_Key_Delete=211 Const PB_Key_Divide=181 Const PB_Key_Down=208 Const PB_Key_E=18 Const PB_Key_End=207 Const PB_Key_Equals=13 Const PB_Key_Escape=1 Const PB_Key_F=33 Const PB_Key_F1=59 Const PB_Key_F10=68 Const PB_Key_F11=87 Const PB_Key_F12=88 Const PB_Key_F2=60 Const PB_Key_F3=61 Const PB_Key_F4=62 Const PB_Key_F5=63 Const PB_Key_F6=64 Const PB_Key_F7=65 Const PB_Key_F8=66 Const PB_Key_F9=67 Const PB_Key_G=34 Const PB_Key_Grave=41 Const PB_Key_H=35 Const PB_Key_Home=199 Const PB_Key_I=23 Const PB_Key_Insert=210 Const PB_Key_J=36 Const PB_Key_K=37 Const PB_Key_L=38 Const PB_Key_Left=203 Const PB_Key_LeftAlt=56 Const PB_Key_LeftBracket=26 Const PB_Key_LeftControl=29 Const PB_Key_LeftShift=42 Const PB_Key_M=50 Const PB_Key_Minus=12 Const PB_Key_Multiply=55 Const PB_Key_N=49 Const PB_Key_NumLock=69 Const PB_Key_O=24 Const PB_Key_P=25 Const PB_Key_Pad0=82 Const PB_Key_Pad1=79 Const PB_Key_Pad2=80 Const PB_Key_Pad3=81 Const PB_Key_Pad4=75 Const PB_Key_Pad5=76 Const PB_Key_Pad6=77 Const PB_Key_Pad7=71 Const PB_Key_Pad8=72 Const PB_Key_Pad9=73 Const PB_Key_PadComma=179 Const PB_Key_PadEnter=156 Const PB_Key_PageDown=209 Const PB_Key_PageUp=201 Const PB_Key_Pause=197 Const PB_Key_Period=52 Const PB_Key_Q=16 Const PB_Key_R=19 Const PB_Key_Return=28 Const PB_Key_Right=205 Const PB_Key_RightAlt=184 Const PB_Key_RightBracket=27 Const PB_Key_RightControl=157 Const PB_Key_RightShift=54 Const PB_Key_S=31 Const PB_Key_Scroll=70 Const PB_Key_SemiColon=39 Const PB_Key_Slash=53 Const PB_Key_Space=57 Const PB_Key_Subtract=74 Const PB_Key_T=20 Const PB_Key_Tab=15 Const PB_Key_U=22 Const PB_Key_Up=200 Const PB_Key_V=47 Const PB_Key_W=17 Const PB_Key_X=45 Const PB_Key_Y=21 Const PB_Key_Z=44 Const PB_ListIcon_AlwaysShowSelection=8 Const PB_ListIcon_CheckBoxes=1 Const PB_ListIcon_Checked=2 Const PB_ListIcon_FullRowSelect=1073741824 Const PB_ListIcon_GridLines=65536 Const PB_ListIcon_HeaderDragDrop=268435456 Const PB_ListIcon_MultiSelect=4 Const PB_ListIcon_Selected=1 Const PB_Material_Add=1 Const PB_Material_AlphaBlend=3 Const PB_Material_Animated=1 Const PB_Material_Bilinear=1 Const PB_Material_Color=4 Const PB_Material_Fixed=0 Const PB_Material_Flat=0 Const PB_Material_Gouraud=1 Const PB_Material_Modulate=2 Const PB_Material_None=0 Const PB_Material_Phong=2 Const PB_Material_Replace=0 Const PB_Material_Trilinear=2 Const PB_MDI_Arrange=-6 Const PB_MDI_AutoSize=2 Const PB_MDI_BorderLess=1 Const PB_MDI_Cascade=-1 Const PB_MDI_Hide=8 Const PB_MDI_ItemHeight=2 Const PB_MDI_ItemWidth=1 Const PB_MDI_Maximize=2 Const PB_MDI_Minimize=4 Const PB_MDI_Next=-4 Const PB_MDI_Normal=1 Const PB_MDI_NoScrollBars=4 Const PB_MDI_Previous=-5 Const PB_MDI_Show=16 Const PB_MDI_SizedItem=1 Const PB_MDI_TileHorizontally=-3 Const PB_MDI_TileVertically=-2 Const PB_Mesh_Colors=4 Const PB_Mesh_Normals=3 Const PB_Mesh_Triangles=1 Const PB_Mesh_UVCoordinates=2 Const PB_Mesh_Vertices=0 Const PB_MessageRequester_Ok=0 Const PB_MessageRequester_YesNo=4 Const PB_MessageRequester_YesNoCancel=3 Const PB_Movie_Rendered=-1 Const PB_OnError_EAX=0 Const PB_OnError_EBP=16 Const PB_OnError_EBX=4 Const PB_OnError_ECX=8 Const PB_OnError_EDI=24 Const PB_OnError_EDX=12 Const PB_OnError_ESC=20 Const PB_OnError_ESP=36 Const PB_OnError_FFLags=32 Const PB_OnError_SegCS=28 Const PB_OnError_SegSS=40 Const PB_OS_AmigaOS=3 Const PB_OS_Linux=2 Const PB_OS_Windows=1 Const PB_OS_Windows_2000=50 Const PB_OS_Windows_95=10 Const PB_OS_Windows_98=30 Const PB_OS_Windows_Future=100 Const PB_OS_Windows_ME=40 Const PB_OS_Windows_NT3_51=5 Const PB_OS_Windows_NT_4=20 Const PB_OS_Windows_XP=60 Const PB_Particle_Box=1 Const PB_Particle_Point=0 Const PB_PixelFormat_15Bits=2 Const PB_PixelFormat_16Bits=3 Const PB_PixelFormat_24Bits_BGR=5 Const PB_PixelFormat_24Bits_RGB=4 Const PB_PixelFormat_32Bits_BGR=7 Const PB_PixelFormat_32Bits_RGB=6 Const PB_PixelFormat_8Bits=1 Const PB_ProcessPureBasicEvents=-522133279 Const PB_ProgressBar_Smooth=1 Const PB_ProgressBar_Vertical=4 Const PB_Requester_MultiSelection=1 Const PB_ScrollArea_BorderLess=8 Const PB_ScrollArea_Flat=1 Const PB_ScrollArea_InnerHeight=2 Const PB_ScrollArea_InnerWidth=1 Const PB_ScrollArea_Raised=2 Const PB_ScrollArea_Single=4 Const PB_ScrollBar_Vertical=1 Const PB_Shortcut_0=48 Const PB_Shortcut_1=49 Const PB_Shortcut_2=50 Const PB_Shortcut_3=51 Const PB_Shortcut_4=52 Const PB_Shortcut_5=53 Const PB_Shortcut_6=54 Const PB_Shortcut_7=55 Const PB_Shortcut_8=56 Const PB_Shortcut_9=57 Const PB_Shortcut_A=65 Const PB_Shortcut_Add=107 Const PB_Shortcut_All=-1 Const PB_Shortcut_Alt=262144 Const PB_Shortcut_Apps=93 Const PB_Shortcut_B=66 Const PB_Shortcut_Back=8 Const PB_Shortcut_C=67 Const PB_Shortcut_Capital=20 Const PB_Shortcut_Clear=12 Const PB_Shortcut_Control=131072 Const PB_Shortcut_D=68 Const PB_Shortcut_Decimal=110 Const PB_Shortcut_Delete=46 Const PB_Shortcut_Divide=111 Const PB_Shortcut_Down=40 Const PB_Shortcut_E=69 Const PB_Shortcut_End=35 Const PB_Shortcut_Escape=27 Const PB_Shortcut_Execute=43 Const PB_Shortcut_F=70 Const PB_Shortcut_F1=112 Const PB_Shortcut_F10=121 Const PB_Shortcut_F11=122 Const PB_Shortcut_F12=123 Const PB_Shortcut_F13=124 Const PB_Shortcut_F14=125 Const PB_Shortcut_F15=126 Const PB_Shortcut_F16=127 Const PB_Shortcut_F17=128 Const PB_Shortcut_F18=129 Const PB_Shortcut_F19=130 Const PB_Shortcut_F2=113 Const PB_Shortcut_F20=131 Const PB_Shortcut_F21=132 Const PB_Shortcut_F22=133 Const PB_Shortcut_F23=134 Const PB_Shortcut_F24=135 Const PB_Shortcut_F3=114 Const PB_Shortcut_F4=115 Const PB_Shortcut_F5=116 Const PB_Shortcut_F6=117 Const PB_Shortcut_F7=118 Const PB_Shortcut_F8=119 Const PB_Shortcut_F9=120 Const PB_Shortcut_G=71 Const PB_Shortcut_H=72 Const PB_Shortcut_Help=47 Const PB_Shortcut_Home=36 Const PB_Shortcut_I=73 Const PB_Shortcut_Insert=45 Const PB_Shortcut_J=74 Const PB_Shortcut_K=75 Const PB_Shortcut_L=76 Const PB_Shortcut_Left=37 Const PB_Shortcut_LeftWindows=91 Const PB_Shortcut_M=77 Const PB_Shortcut_Menu=18 Const PB_Shortcut_Multiply=106 Const PB_Shortcut_N=78 Const PB_Shortcut_Next=34 Const PB_Shortcut_Numlock=144 Const PB_Shortcut_O=79 Const PB_Shortcut_P=80 Const PB_Shortcut_Pad0=96 Const PB_Shortcut_Pad1=97 Const PB_Shortcut_Pad2=98 Const PB_Shortcut_Pad3=99 Const PB_Shortcut_Pad4=100 Const PB_Shortcut_Pad5=101 Const PB_Shortcut_Pad6=102 Const PB_Shortcut_Pad7=103 Const PB_Shortcut_Pad8=104 Const PB_Shortcut_Pad9=105 Const PB_Shortcut_Pause=19 Const PB_Shortcut_Print=42 Const PB_Shortcut_Prior=33 Const PB_Shortcut_Q=81 Const PB_Shortcut_R=82 Const PB_Shortcut_Return=13 Const PB_Shortcut_Right=39 Const PB_Shortcut_RightWindows=92 Const PB_Shortcut_S=83 Const PB_Shortcut_Scroll=145 Const PB_Shortcut_Select=41 Const PB_Shortcut_Separator=108 Const PB_Shortcut_Shift=65536 Const PB_Shortcut_Snapshot=44 Const PB_Shortcut_Space=32 Const PB_Shortcut_Subtract=109 Const PB_Shortcut_T=84 Const PB_Shortcut_Tab=9 Const PB_Shortcut_U=85 Const PB_Shortcut_Up=38 Const PB_Shortcut_V=86 Const PB_Shortcut_W=87 Const PB_Shortcut_X=88 Const PB_Shortcut_Y=89 Const PB_Shortcut_Z=90 Const PB_Splitter_FirstFixed=4 Const PB_Splitter_FirstMinimumSize=1 Const PB_Splitter_SecondFixed=8 Const PB_Splitter_SecondMinimumSize=2 Const PB_Splitter_Separator=2 Const PB_Splitter_Vertical=1 Const PB_Sprite_Alpha=2 Const PB_Sprite_Memory=1 Const PB_Sprite_Texture=4 Const PB_StatusBar_BorderLess=2 Const PB_StatusBar_Center=4 Const PB_StatusBar_Raised=1 Const PB_StatusBar_Right=8 Const PB_String_BorderLess=131072 Const PB_String_LowerCase=16 Const PB_String_MultiLine=4 Const PB_String_Numeric=8192 Const PB_String_Password=32 Const PB_String_ReadOnly=2048 Const PB_String_UpperCase=8 Const PB_Text_Border=131072 Const PB_Text_Center=1 Const PB_Text_Right=2 Const PB_ToolBarIcon_Copy=1 Const PB_ToolBarIcon_Cut=0 Const PB_ToolBarIcon_Delete=5 Const PB_ToolBarIcon_Find=12 Const PB_ToolBarIcon_Help=11 Const PB_ToolBarIcon_New=6 Const PB_ToolBarIcon_Open=7 Const PB_ToolBarIcon_Paste=2 Const PB_ToolBarIcon_Print=14 Const PB_ToolBarIcon_PrintPreview=9 Const PB_ToolBarIcon_Properties=10 Const PB_ToolBarIcon_Redo=4 Const PB_ToolBarIcon_Replace=13 Const PB_ToolBarIcon_Save=8 Const PB_ToolBarIcon_Undo=3 Const PB_TrackBar_Ticks=1 Const PB_TrackBar_Vertical=2 Const PB_Tree_AlwaysShowSelection=32 Const PB_Tree_CheckBoxes=256 Const PB_Tree_Checked=4 Const PB_Tree_Collapsed=8 Const PB_Tree_Expanded=2 Const PB_Tree_NoButtons=1 Const PB_Tree_NoLines=2 Const PB_Tree_Selected=1 Const PB_Web_Back=1 Const PB_Web_Forward=2 Const PB_Web_Refresh=4 Const PB_Web_Stop=3 Const PB_Window_BorderLess=-2147483648 Const PB_Window_Invisible=268435456 Const PB_Window_MaximizeGadget=13172736 Const PB_Window_MinimizeGadget=13238272 Const PB_Window_ScreenCentered=1 Const PB_Window_SizeGadget=12845056 Const PB_Window_SystemMenu=13107200 Const PB_Window_TitleBar=12582912 Const PB_Window_WindowCentered=2 |
| ||
Example program:Const PROGRAMTITLE$="PureBlitz demo" AppTitle PROGRAMTITLE ;Includes Include "purebasic_const.bb" Include "win32_const.bb" ;Initialize graphics w=800 h=600 Graphics3D GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),-1,2 hWND=GetActiveWindow() InitWindow hwnd style=GetWindowLong(hwnd,GWL_STYLE) If Not (style And WS_CLIPCHILDREN) style=style+WS_CLIPCHILDREN If Not (style And WS_VISIBLE) style=style+WS_VISIBLE If Not (style And WS_BORDER) style=style+WS_BORDER If Not (style And WS_MINIMIZEBOX) style=style+WS_MINIMIZEBOX If Not (style And WS_MAXIMIZEBOX) style=style+WS_MAXIMIZEBOX If Not (style And WS_SIZEBOX) style=style+WS_SIZEBOX If Not (style And WS_SYSMENU) style=style+WS_SYSMENU If Not (style And WS_DLGFRAME) style=style+WS_DLGFRAME SetWindowLong hwnd,GWL_STYLE,style x=(GetSystemMetrics(SM_CXSCREEN)-w)/2 y=(GetSystemMetrics(SM_CYSCREEN)-h)/2 MoveWindow hwnd,x,y,w,h,True pbCreateGadgetList(hWND) ;InstallCloseHandler 148,PROGRAMTITLE ;Status bar bar=pbCreateStatusBar(0,hWND) statusfield=pbAddStatusBarField(200) pbStatusBarText "Welcome to the program.",0 statusfield=pbAddStatusBarField(120) statusfield=pbAddStatusBarField(120) statusfield=pbAddStatusBarField(200) ;Menu pbCreateMenu(0,hWND) pbMenuTitle "File" pbMenuItem 1,"New" pbMenuBar pbMenuItem 2,"Open..." pbMenuItem 3,"Save" pbMenuItem 4,"Save as..." pbMenuBar pbMenuItem 5,"Import..." pbMenuItem 6,"Export..." pbMenuBar pbMenuItem 7,"Exit" pbMenuTitle "Help" pbMenuItem 8,"Help Contents" ;Toolbar toolbarheight=26 toolbarcontainer=pbContainerGadget(1,0,0,GetSystemMetrics(SM_CXSCREEN),toolbarheight,0) toolbar=pbCreateToolBar(0,toolbarcontainer) pbToolBarStandardButton 1,PB_ToolBarIcon_New pbToolBarStandardButton 2,PB_ToolBarIcon_Open pbToolBarStandardButton 3,PB_ToolBarIcon_Save pbToolBarSeparator pbToolBarStandardButton 4,PB_ToolBarIcon_Cut pbToolBarStandardButton 5,PB_ToolBarIcon_Copy pbToolBarStandardButton 6,PB_ToolBarIcon_Paste pbToolBarSeparator pbToolBarStandardButton 8,PB_ToolBarIcon_Help pbToolBarToolTip 1,"New" pbToolBarToolTip 2,"Open" pbToolBarToolTip 3,"Save" pbToolBarToolTip 4,"Cut" pbToolBarToolTip 5,"Copy" pbToolBarToolTip 6,"Paste" pbToolBarToolTip 8,"Help" pbCloseGadgetList While Not KeyHit(1) Wend ;UnInstallCloseHandler pbFreeGadget 1 SendMessage hWND,WM_CLOSE,0,0 End |
| ||
Tips: -Use CheckStatus to fill a 16-byte bank with the event data, then peek the integers for event source, etc. -Manually free any container or other gadgets that have their own gadget lists before you close the program, or you will crash. -You need to include your own win32_const.bb file. It's too long to post on the forum. -In your waitevent loop, keep checking the window size to detect a window move or resize event. -If you create a toolbar, do it inside a container gadget, or the toolbar will have no background. -Set the graphics mode to the maximum size you might need (probably the desktop size), then resize your camera viewport to the size you really want. -Use this to set the cls color to the windows color for a window. Use a Cls() call every time you draw the window, before rendering. GetSysColor() uses a switched red and blue value: hue=GetSysColor(COLOR_BTNFACE) ClsColor Blue(hue),Green(hue),Red(hue) -Some events have to be detected by checking to see if a gadget's selection or state is changed. Treeviews and listboxes have to be done like this. -Use the BlitzClose() dll for better handling of the window closing. -Do NOT use a second part of the AppTitle() function, since this will override BlitzClose. |
| ||
. |
| ||
Niiiiice. |
| ||
This is awesome! Thanks halo! |
| ||
just been looking through your pb code and spotted an error in pbOpenWindow(), or maybe you done it on purpose as it's not in the decls? |
| ||
Any chance that some kind soul could compile the .dll for this. Thanks. |
| ||
No. You have to buy PureBasic, since this is mostly just a wrapper for PB commands. |
| ||
Thanks Halo, can you help me to get the win32_const.bb file, the win32 file in the code archive seems missing some functions.. |
| ||
thx |
| ||
can you please make a compiled dll of the purebasic source please for those who dont own purebasic please. |
| ||
Perhaps you didn't read the part where he said you have to buy PureBasic. If a simple 'no' isn't enough, I'll clarify: compiling this DLL would be in violation of the terms of use of the PureBasic product. Pure's a good language implementation and its author has worked hard to make it what it is. If you want this functionality, show your appreciation for that and buy it. Nice work on this, halo. Not sure if I'll use it, but thanks for sharing. Everyone else, keep in mind that there are some bits not wrapped just by the above files, so you'll need other decls as well (GetSystemMetrics, GetActiveWindow and GetWindowLong, for three). |
| ||
Hey halo, I've been looking for something like this so I can do a little editor for a game using me engine(which isn't B+ compatible, so that's out of the question..) is this fully featured enough to do an app? I mean are there big vital parts missing before I actually go about learning/using it? I mean my biggest concern is mixing a gl display with it..is it possible to create multiple canvas' that I can use? (I've never done any winAPI stuff..so no idea if this is even possible at all, let alone in this.) |
| ||
"so you'll need other decls as well (GetSystemMetrics, GetActiveWindow and GetWindowLong, for three). " Where I can Find those decls Thanks |