_WINDOWHANDLE - mkilgore/QB64pe GitHub Wiki
The _WINDOWHANDLE function returns the window handle assigned to the current program by the OS. Windows-only.
- hwnd&& = _WINDOWHANDLE
- The result is an _INTEGER64 number assigned by Windows to your running program.
- Use it to make API calls that require a window handle to be passed.
- Not available in Linux or macOS.
- Build 20170924/68.
Example: Showing the system-default message box in Windows.
DECLARE LIBRARY "user32" FUNCTION MessageBoxA& (BYVAL hwnd AS LONG, Message AS STRING, Title AS STRING, BYVAL MBType AS _UNSIGNED LONG) DECLARE LIBRARY DO msg& = 0: icon& = 0: DB& = 0 INPUT "Enter Message Box type(0 to 6 other Quits): ", BOX& IF...THEN BOX& < 0 OR (boolean) BOX& > 6 THEN EXIT DO INPUT "Enter Icon&(0=none, 1=stop, 2=?, 3=!, 4=info): ", Icon& IF...THEN BOX& THEN INPUT (file mode) "Enter Default Button(1st, 2nd or 3rd): ", DB& IF...THEN DB& THEN DB& = DB& - 1 'adjust value to 0, 1, or 2 msg& = MsgBox&("Box Title", "Box text message", BOX&, Icon&, DB&, 4096) 'on top of all windows PRINT "Button ="; msg& LOOP END FUNCTION MsgBox& (Title$, Message$, BoxType&, Icon&, DBtn&, Mode&) SELECT CASE Icon& CASE 1: Icon& = MB_ICONSTOP& 'warning X-sign icon CASE 2: Icon& = MB_ICONQUESTION& 'question-mark icon CASE 3: Icon& = MB_ICONEXCLAMATION& 'exclamation-point icon CASE 4: Icon& = MB_ICONINFORMATION& 'lowercase letter i in circle CASE ELSE: Icon& = 0 'no icon END SELECT IF...THEN BoxType& > 0 AND (boolean) DBtn& > 0 THEN 'set default button as 2nd(256) or 3rd(512) SELECT CASE BoxType& CASE 2, 3, 6 IF...THEN DBtn& = 2 THEN Icon& = Icon& + MB_DEFBUTTON3& ELSE Icon& = Icon& + MB_DEFBUTTON2& '3 button CASE ELSE: Icon& = Icon& + MB_DEFBUTTON2& '2nd button default END SELECT END IF Focus& = MB_SetFocus& MsgBox& = MessageBoxA&(_WINDOWHANDLE, Message$, Title$, BoxType& + Icon& + Mode& + Focus&) 'focus on button END FUNCTION '' '' |
- Explanation: Notice how the call to the external dynamic library function MessageBoxA& passes _WINDOWHANDLE to the API and how the message box shown is created as a child of your program's window, not allowing the main window to be manipulated while the message box is open.
Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page