Restored from previous forum. Originally posted by dmoc.
Which of these is correct and why?
hWnd = CreateWindowEx_(....
MoveWindow_(hWnd, ...
or...
*hWnd = CreateWindowEx_(....
MoveWindow_(*hWnd, ...
Pointer query
-
BackupUser
- PureBasic Guru

- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
Restored from previous forum. Originally posted by tinman.
--
It's not minimalist - I'm increasing efficiency by reducing input effort.
(Win98first ed. + all updates, PB3.51, Ed3.53)
This one is probably the most correct. The reason is that Windows works mainly on handles, not pointers, so you have no way of being able to do "*hWnd\SomeFieldInTheStructure = $BAADC0DE" because a handle does not give you the direct address of something in memory.Originally posted by dmoc
hWnd = CreateWindowEx_(....
MoveWindow_(hWnd, ...
--
It's not minimalist - I'm increasing efficiency by reducing input effort.
(Win98first ed. + all updates, PB3.51, Ed3.53)
-
BackupUser
- PureBasic Guru

- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
-
BackupUser
- PureBasic Guru

- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
Restored from previous forum. Originally posted by tinman.
Looking at the Windows header files I see that:
typedef void *HANDLE;
So the definition of the HANDLE type already includes the fact that this is a "pointer" to some non-descript type. But since you cannot do this in PB it will be defined as a long, which is good enough.
If you wrote HANDLE *hWnd in C you would effectively have a pointer to a pointer, giving you warnings but it would still work.
--
It's not minimalist - I'm increasing efficiency by reducing input effort.
(Win98first ed. + all updates, PB3.51, Ed3.53)
From a point of view of whether the program works or not, both versions would work. It just needs to be a 32bit place to store some value.Originally posted by dmoc
The PB Editor source uses the second form for all the rich edit gadgets. Confusing. I'm trying to resize a multi-line string gadget
created via CreateWindowEx_() and getting nowhere.
Looking at the Windows header files I see that:
typedef void *HANDLE;
So the definition of the HANDLE type already includes the fact that this is a "pointer" to some non-descript type. But since you cannot do this in PB it will be defined as a long, which is good enough.
If you wrote HANDLE *hWnd in C you would effectively have a pointer to a pointer, giving you warnings but it would still work.
--
It's not minimalist - I'm increasing efficiency by reducing input effort.
(Win98first ed. + all updates, PB3.51, Ed3.53)
-
BackupUser
- PureBasic Guru

- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
-
BackupUser
- PureBasic Guru

- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
Restored from previous forum. Originally posted by tinman.

--
It's not minimalist - I'm increasing efficiency by reducing input effort.
(Win98first ed. + all updates, PB3.51, Ed3.53)
This works if you like, but it uses the wrong types (I wrote it some time agoOriginally posted by dmoc
OK, thanks, I'll experiment some more.
Code: Select all
If OpenWindow(0, 0, 0, 500, 500, #PB_Window_SystemMenu, "Scrollbar Example")
If CreateGadgetList(WindowID())
scrollbar.l = CreateWindowEx_(0, "ScrollBar", "", #WS_CHILD | #WS_VISIBLE | #SBS_VERT | #SBS_LEFTALIGN, 20, 20, 10, 50, WindowID(), 0, GetModuleHandle_(0), 0)
SetWindowLong_(scrollbar, #GWL_ID, 3)
params.SCROLLINFO
params\cbSize = SizeOf(SCROLLINFO)
params\fMask = #SIF_DISABLENOSCROLL | #SIF_PAGE | #SIF_POS | #SIF_RANGE
params\nMin = 0
params\nMax = 100
params\nPage = 10
params\nPos = 0
SendMessage_(scrollbar, #SBM_SETSCROLLINFO, #TRUE, @params)
; This is how to resize an OS created gadget under PB
MoveWindow_(scrollbar, 40, 40, 20, 300, #TRUE)
EndIf
While quitprog.w=0
ev.l=WaitWindowEvent()
Select ev
Case #PB_Event_CloseWindow
quitprog=1
EndSelect
Wend
EndIf
End
It's not minimalist - I'm increasing efficiency by reducing input effort.
(Win98first ed. + all updates, PB3.51, Ed3.53)
-
BackupUser
- PureBasic Guru

- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm