Skip to content

Commit f188162

Browse files
committed
fbc examples/win32: fix some examples for fbc 1.10
- a few of these examples probably haven't worked for several releases of fbc - TRUE on old versions of fbc would be equal to -1, but in newer versions of fbc will be equal to boolean value of True. This doesn't interop very well with win32 API where GetMessage() can return -1, 0, non-zero even though winapi types this as BOOL. And in the window procedure, return values depend on the actual message (i.e. WM_CREATE) examples/win32/COM/DropTarget: - add 'byval' for parameters to allow -w pedantic to pass - fix handling of GetMessage() - fix handling of WM_CREATE - after 'dropTarget' is destroyed set pointer to NULL to avoid double delete examples/win32/COM/MovePlayer: - fix handling of zstring/wstring conversion - command line is read as zstring ptr by load filename is passed as wstring ptr examples/win32/COM/WebBrowser: - link to https:/www.freebasic.net for starting URL - fix handling of GetMessage() - TODO: following links and javascript errors (AddListenerEvent) not handled correctly - include mshtmlc.bi instead of mshtml.bi examples/win32/GDIPLus: - fix handling of GetMessage() - CAST's to handle warnings ( PathGradientBrush is a kind of Brush ) examples/win32/variants: - older fbc packages (before 2015) had VARIANT_ forward declaration in inc/win/oaidl.bi - having it locally in variant.bi allows this library to be compiled (but has not been tested for correctness / completeness)
1 parent 1d643cf commit f188162

File tree

11 files changed

+214
-207
lines changed

11 files changed

+214
-207
lines changed

examples/win32/COM/DropTarget/CDropTarget.bas

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
''
99
'' Constructor for the CDropTarget class
1010
''
11-
constructor CDropTarget(hwnd as HWND)
11+
constructor CDropTarget(byval hwnd as HWND)
1212
'' IDropTarget implementation (while there's no support for virtual methods and inheritance)
1313
static as IDropTargetVtbl vtbl = _
1414
( _
@@ -32,7 +32,7 @@ constructor CDropTarget(hwnd as HWND)
3232

3333
'' tell OLE that the window is a drop target
3434
RegisterDragDrop(m_hWnd, cast(LPDROPTARGET, @this))
35-
35+
3636
end constructor
3737

3838
''
@@ -48,19 +48,19 @@ destructor CDropTarget()
4848

4949
'' release our own reference
5050
m_DropTarget.lpVtbl->Release(@m_DropTarget)
51-
51+
5252
end destructor
5353

5454

5555
''
56-
'' IUnknown::QueryInterface
56+
'' IUnknown::QueryInterface
5757
''
5858
private function CDropTarget.QueryInterface _
59-
(pInst as IDropTarget ptr, _
60-
iid as REFIID, ppvObject as any ptr ptr) as HRESULT
61-
59+
(byval pInst as IDropTarget ptr, _
60+
byval iid as REFIID, byval ppvObject as any ptr ptr) as HRESULT
61+
6262
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
63-
63+
6464
if( (memcmp( iid, @IID_IUnknown, len( GUID ) ) = 0) or _
6565
(memcmp( iid, @IID_IDropTarget, len( GUID ) ) = 0) ) then
6666
CDropTarget.AddRef( pInst )
@@ -70,30 +70,30 @@ private function CDropTarget.QueryInterface _
7070
*ppvObject = NULL
7171
return E_NOINTERFACE
7272
end if
73-
73+
7474
end function
7575

7676
''
77-
'' IUnknown::AddRef
77+
'' IUnknown::AddRef
7878
''
7979
private function CDropTarget.AddRef _
80-
(pInst as IDropTarget ptr) as ULONG
81-
80+
(byval pInst as IDropTarget ptr) as ULONG
81+
8282
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
83-
83+
8484
return InterlockedIncrement(@_this->m_lRefCount)
8585
end function
8686

8787
''
88-
'' IUnknown::Release
88+
'' IUnknown::Release
8989
''
9090
private function CDropTarget.Release _
91-
(pInst as IDropTarget ptr) as ULONG
92-
91+
(byval pInst as IDropTarget ptr) as ULONG
92+
9393
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
94-
94+
9595
dim as LONG count = InterlockedDecrement(@_this->m_lRefCount)
96-
96+
9797
if(count = 0) then
9898
return 0
9999
else
@@ -102,18 +102,18 @@ private function CDropTarget.Release _
102102
end function
103103

104104
''
105-
'' IDropTarget::DragEnter
105+
'' IDropTarget::DragEnter
106106
''
107107
private function CDropTarget.DragEnter _
108-
(pInst as IDropTarget ptr, _
109-
pDataObject as IDataObject ptr, grfKeyState as DWORD, _
110-
pt as POINTL, pdwEffect as DWORD ptr) as HRESULT
111-
108+
(byval pInst as IDropTarget ptr, _
109+
byval pDataObject as IDataObject ptr, byval grfKeyState as DWORD, _
110+
byval pt as POINTL, byval pdwEffect as DWORD ptr) as HRESULT
111+
112112
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
113-
113+
114114
'' does the dataobject contain data we want?
115115
_this->m_fAllowDrop = _this->QueryDataObject(pDataObject)
116-
116+
117117
if(_this->m_fAllowDrop) then
118118
'' get the dropeffect based on keyboard state
119119
*pdwEffect = _this->DropEffect(grfKeyState, pt, *pdwEffect)
@@ -129,14 +129,14 @@ private function CDropTarget.DragEnter _
129129
end function
130130

131131
''
132-
'' IDropTarget::DragOver
132+
'' IDropTarget::DragOver
133133
''
134134
private function CDropTarget.DragOver _
135-
(pInst as IDropTarget ptr, _
136-
grfKeyState as DWORD, pt as POINTL, pdwEffect as DWORD ptr) as HRESULT
135+
(byval pInst as IDropTarget ptr, _
136+
byval grfKeyState as DWORD, byval pt as POINTL, byval pdwEffect as DWORD ptr) as HRESULT
137137

138138
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
139-
139+
140140
if(_this->m_fAllowDrop) then
141141
*pdwEffect = _this->DropEffect(grfKeyState, pt, *pdwEffect)
142142
_this->PositionCursor(pt)
@@ -148,26 +148,26 @@ private function CDropTarget.DragOver _
148148
end function
149149

150150
''
151-
'' IDropTarget::DragLeave
151+
'' IDropTarget::DragLeave
152152
''
153153
private function CDropTarget.DragLeave _
154-
(pInst as IDropTarget ptr) as HRESULT
155-
154+
(byval pInst as IDropTarget ptr) as HRESULT
155+
156156
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
157-
157+
158158
return S_OK
159159
end function
160160

161161
''
162-
'' IDropTarget::Drop
162+
'' IDropTarget::Drop
163163
''
164164
private function CDropTarget.Drop _
165-
(pInst as IDropTarget ptr, _
166-
pDataObject as IDataObject ptr, grfKeyState as DWORD, _
167-
pt as POINTL, pdwEffect as DWORD ptr) as HRESULT
168-
165+
(byval pInst as IDropTarget ptr, _
166+
byval pDataObject as IDataObject ptr, byval grfKeyState as DWORD, _
167+
byval pt as POINTL, byval pdwEffect as DWORD ptr) as HRESULT
168+
169169
dim as CDropTarget ptr _this = cast(CDropTarget ptr, pInst)
170-
170+
171171
_this->PositionCursor(pt)
172172

173173
if(_this->m_fAllowDrop) then
@@ -185,10 +185,10 @@ end function
185185
'' Position the edit control's caret under the mouse
186186
''
187187
private sub CDropTarget.PositionCursor _
188-
(pt as POINTL)
189-
188+
(byval pt as POINTL)
189+
190190
dim as DWORD curpos
191-
191+
192192
'' get the character position of mouse
193193
ScreenToClient(m_hWnd, cast(POINT ptr, @pt))
194194
curpos = SendMessage(m_hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y))
@@ -201,8 +201,8 @@ end sub
201201
''
202202
''
203203
private sub CDropTarget.DropData _
204-
(pDataObject as IDataObject ptr)
205-
204+
(byval pDataObject as IDataObject ptr)
205+
206206
'' construct a FORMATETC object
207207
dim as FORMATETC fmtetc = ( CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL )
208208
dim as STGMEDIUM stgmed
@@ -225,41 +225,41 @@ private sub CDropTarget.DropData _
225225
end sub
226226

227227
''
228-
'' QueryDataObject private helper routine
228+
'' QueryDataObject private helper routine
229229
''
230230
private function CDropTarget.QueryDataObject _
231-
(pDataObject as IDataObject ptr) as integer
232-
231+
(byval pDataObject as IDataObject ptr) as integer
232+
233233
dim as FORMATETC fmtetc = ( CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL )
234234

235235
'' does the data object support CF_TEXT using a HGLOBAL?
236236
return pDataObject->lpVtbl->QueryGetData(pDataObject, @fmtetc) = S_OK
237237
end function
238238

239239
''
240-
'' DropEffect private helper routine
240+
'' DropEffect private helper routine
241241
''
242242
private function CDropTarget.DropEffect _
243-
(grfKeyState as DWORD, pt as POINTL, dwAllowed as DWORD ) as DWORD
244-
243+
(byval grfKeyState as DWORD, byval pt as POINTL, byval dwAllowed as DWORD ) as DWORD
244+
245245
dim as DWORD dwEffect = 0
246246

247247
'' 1. check "pt" -> do we allow a drop at the specified coordinates?
248-
248+
249249
'' 2. work out that the drop-effect should be based on grfKeyState
250250
if(grfKeyState and MK_CONTROL) then
251251
dwEffect = dwAllowed and DROPEFFECT_COPY
252252
elseif(grfKeyState and MK_SHIFT) then
253253
dwEffect = dwAllowed and DROPEFFECT_MOVE
254254
end if
255-
255+
256256
'' 3. no key-modifiers were specified (or drop effect not allowed), so
257257
'' base the effect on those allowed by the dropsource
258258
if(dwEffect = 0) then
259259
if(dwAllowed and DROPEFFECT_COPY) then dwEffect = DROPEFFECT_COPY
260260
if(dwAllowed and DROPEFFECT_MOVE) then dwEffect = DROPEFFECT_MOVE
261261
end if
262-
262+
263263
return dwEffect
264264
end function
265265

examples/win32/COM/DropTarget/CDropTarget.bi

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,52 @@
22
#include once "win/ole2.bi"
33

44
type CDropTarget
5-
private:
5+
private:
66
'' implements IDropTarget
77
dim as IDropTarget m_DropTarget = any
88

99
public:
10-
declare constructor(hwnd as HWND)
10+
declare constructor(byval hwnd as HWND)
1111
declare destructor()
1212

1313
private:
1414
'' IDropTarget implementation (while there's no support for virtual methods and inheritance)
1515
declare static function QueryInterface _
16-
(pInst as IDropTarget ptr, _
17-
iid as REFIID, ppvObject as any ptr ptr) as HRESULT
18-
16+
(byval pInst as IDropTarget ptr, _
17+
byval iid as REFIID, byval ppvObject as any ptr ptr) as HRESULT
18+
1919
declare static function AddRef _
20-
(pInst as IDropTarget ptr) as ULONG
21-
20+
(byval pInst as IDropTarget ptr) as ULONG
21+
2222
declare static function Release _
23-
(pInst as IDropTarget ptr) as ULONG
24-
23+
(byval pInst as IDropTarget ptr) as ULONG
24+
2525
declare static function DragEnter _
26-
(pInst as IDropTarget ptr, _
27-
pDataObject as IDataObject ptr, grfKeyState as DWORD, _
28-
pt as POINTL, pdwEffect as DWORD ptr) as HRESULT
29-
26+
(byval pInst as IDropTarget ptr, _
27+
byval pDataObject as IDataObject ptr, byval grfKeyState as DWORD, _
28+
byval pt as POINTL, byval pdwEffect as DWORD ptr) as HRESULT
29+
3030
declare static function DragOver _
31-
(pInst as IDropTarget ptr, _
32-
grfKeyState as DWORD, pt as POINTL, pdwEffect as DWORD ptr) as HRESULT
33-
31+
(byval pInst as IDropTarget ptr, _
32+
byval grfKeyState as DWORD, byval pt as POINTL, byval pdwEffect as DWORD ptr) as HRESULT
33+
3434
declare static function DragLeave _
35-
(pInst as IDropTarget ptr) as HRESULT
36-
35+
(byval pInst as IDropTarget ptr) as HRESULT
36+
3737
declare static function Drop _
38-
(pInst as IDropTarget ptr, _
39-
pDataObject as IDataObject ptr, grfKeyState as DWORD, _
40-
pt as POINTL, pdwEffect as DWORD ptr) as HRESULT
41-
38+
(byval pInst as IDropTarget ptr, _
39+
byval pDataObject as IDataObject ptr, byval grfKeyState as DWORD, _
40+
byval pt as POINTL, byval pdwEffect as DWORD ptr) as HRESULT
41+
4242
'' internal helper function
43-
declare sub PositionCursor(pt as POINTL)
44-
declare sub DropData(pDataObject as IDataObject ptr)
45-
declare function DropEffect(grfKeyState as DWORD, pt as POINTL, dwAllowed as DWORD) as DWORD
46-
declare function QueryDataObject(pDataObject as IDataObject ptr) as integer
43+
declare sub PositionCursor(byval pt as POINTL)
44+
declare sub DropData(byval pDataObject as IDataObject ptr)
45+
declare function DropEffect(byval grfKeyState as DWORD, byval pt as POINTL, byval dwAllowed as DWORD) as DWORD
46+
declare function QueryDataObject(byval pDataObject as IDataObject ptr) as integer
4747

4848
'' member variables
49-
as LONG m_lRefCount = any
50-
as HWND m_hWnd = any
49+
as LONG m_lRefCount = any
50+
as HWND m_hWnd = any
5151
as integer m_fAllowDrop = any
5252
as IDataObject ptr m_pDataObject = any
5353
end type

0 commit comments

Comments
 (0)