i don't know what im doin' wrong, CreateWindowExA,in CreateHWND, won't create a window it just returns 0.
Strict
Import PUB.Win32
Import PUB.DirectX
Extern "win32"
Function RegisterClassExA(class:WNDCLASSEX)="RegisterClassExA@4"
Function UpdateWindow(hwnd)="UpdateWindow@4"
End Extern
Const D3D_SDK_VERSION=32|$80000000
Const D3D_SDK_VERSION_DEBUG=31|$80000000
Const D3DPRESENT_INTERVAL_IMMEDIATE=-2147483648
Global d3d:IDirect3D9=Null
Global d3ddev:IDirect3DDevice9=Null
Global d3dpp:D3DPRESENT_PARAMETERS=Null
Global TriDClassName:Byte Ptr="TriD_Window_Class".ToCString()
Function CreateHWND(width,height,fullscreen)
If Not MyRegisterClass(GetModuleHandleA(0)) RuntimeError "Error registering class"
Local hwnd,style
If fullscreen
style=WS_EX_TOPMOST|WS_VISIBLE|WS_POPUP
Else
style=WS_OVERLAPPEDWINDOW
EndIf
Local wndTitle:Byte Ptr=AppTitle.ToCString()
Local wndClass:Byte Ptr=TriDClassName
hwnd=CreateWindowExA(..
0,..
wndClass,..
wndTitle,..
style,..
CW_USEDEFAULT,..
CW_USEDEFAULT,..
width,..
height,..
0,..
0,..
GetModuleHandleA(0),..
Null)
MemFree wndTitle
If hwnd=0 RuntimeError "Error creating window"
ShowWindow(hwnd,True)
UpdateWindow(hwnd)
Return hwnd
End Function
Function CreateD3D(hwnd,width,height,fullscreen,depth)
Local version=D3D_SDK_VERSION
?Debug
version=D3D_SDK_VERSION_DEBUG
?
d3d=Direct3DCreate9(version)
Local dm:D3DDISPLAYMODE=New D3DDISPLAYMODE
d3d.GetAdapterDisplayMode(D3DADAPTER_DEFAULT,dm)
d3dpp=New D3DPRESENT_PARAMETERS
d3dpp.Windowed = Not fullscreen
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD
d3dpp.EnableAutoDepthStencil = True
d3dpp.AutoDepthStencilFormat = D3DFMT_D16
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE
d3dpp.BackBufferFormat = dm.Format
d3dpp.BackBufferCount = 1
d3dpp.BackBufferWidth = width
d3dpp.BackBufferHeight = height
d3dpp.hDeviceWindow = hwnd
d3d.CreateDevice(..
D3DADAPTER_DEFAULT,..
D3DDEVTYPE_HAL,..
hwnd,..
D3DCREATE_SOFTWARE_VERTEXPROCESSING,..
d3dpp,..
d3ddev)
End Function
Function WinProc(hwnd,msg,wParam,lParam)
bbSystemEmitOSEvent hwnd,msg,wParam,lParam,Null
Select msg
Case WM_DESTROY
End
Return 0
End Select
Return DefWindowProcA(hwnd,msg,wParam,lParam)
End Function
Function MyRegisterClass(hInstance)
Global registered
If registered Return
registered=True
Local wc:WNDCLASSEX=New WNDCLASSEX
wc.cbSize=SizeOf(WNDCLASSEX)
wc.style = CS_HREDRAW|CS_VREDRAW
wc.lpfnWndProc = WinProc
wc.cbClsExtra = 0
wc.cbWndExtra = 0
wc.hInstance = hInstance
wc.hIcon = 0
wc.hCursor = LoadCursorA(Null, Byte Ptr IDC_ARROW)
wc.hbrBackground = GetStockObject(WHITE_BRUSH)
wc.lpszMenuName = 0
wc.lpszClassName = TriDClassName
wc.hIconSm = 0
Return RegisterClassExA(wc)
End Function
Type WNDCLASSEX
Field cbSize
Field style
Field lpfnWndProc:Byte Ptr
Field cbClsExtra
Field cbWndExtra
Field hInstance
Field hIcon
Field hCursor
Field hbrBackground
Field lpszMenuName:Byte Ptr
Field lpszClassName:Byte Ptr
Field hIconSm
End Type
|