1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-08-05 01:50:24 +00:00
QB64 Phoenix Edition. QB64 is a modern extended BASIC programming language that retains QBasic/QuickBASIC 4.5 compatibility and compiles native binaries for Windows, Linux, and macOS. https://qb64phoenix.com
Find a file
Matthew Kilgore 3f709ba65b Add logic to correctly discover our process's Window
Currently we have two different ways of determining what Window handle
to tie our dialogs too - we either use GetForegroundWindow(), or create
a completely new and hidden handle. The associated window determines
what process names shows up on notifications, and also which window
can't be interacted with while a dialog is open.

Both of those approaches aren't really good. In the case of
GetForegroundWindow(), it just returns whatever window the user has in
focus, which might be a completely different process. With the hidden
window, it means the dialog and notification aren't really tied to the
QB64-PE program, so you can still interact with the window even when a
dialog is open, and the notification doesn't show an exectuable name.

To solve this we're now using EnumWindows() to enumerate over all the
Windows on the system and find one associated with our ProcessId. We
then check if it's the top-level window and return it if it is.

If that process fails to find a window (such as if this is a
console-only program, or $SCREENHIDE is used) then we check if
GetConsoleWindow() gives us a handle and use that.

If neither approach works, then we fall back to creating a hidden window
so that the dialogs can still work.
2022-11-12 19:16:43 -05:00
.ci Step 22: There's always something else 2022-08-19 00:26:13 +02:00
.github/workflows Add license tests 2022-10-01 15:08:01 -04:00
docs Generate .license.txt file with license information 2022-10-01 14:46:00 -04:00
internal Add logic to correctly discover our process's Window 2022-11-12 19:16:43 -05:00
licenses Address issues mentioned in #216 2022-10-25 04:24:01 +05:30
source Simplebuffers refactoring 2022-11-04 23:08:42 +01:00
tests Swap bmp test images for png 2022-11-09 21:56:44 -05:00
.clang-format Run clang-format on ./internal/c/*cpp files 2022-05-06 13:20:30 -04:00
.gitignore Add a740g's miniaudio backend 2022-08-27 14:27:55 -04:00
COPYING.txt Fix up licensing details 2020-02-25 21:21:12 +11:00
Makefile Remove -lcomdlg32 -lole32 from line Makefile:363 2022-10-25 08:36:06 +05:30
qb64pe.1 Add and fix options list in manpage 2022-10-01 20:19:01 -04:00
README.md Step 10: Update remaining stuff 2022-08-12 02:54:12 +02:00
SAMPLES.txt Update more links 2022-05-03 23:49:57 -04:00
setup_lnx.sh Update setup_lnx.sh 2022-09-20 20:46:52 +01:00
setup_osx.command Fix setup_osx.command script when run from a different directory 2022-10-27 23:26:07 -04:00
setup_win.bat Fix errorlevel check 2022-09-13 17:31:02 -04:00

QB64 Phoenix Edition

QB64-PE

QB64 is a modern extended BASIC+OpenGL language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows (Vista and up), Linux and macOS.

Table of Contents

  1. Installation

    1. Windows
    2. macOS
    3. Linux
  2. Usage

  3. Additional Info

Installation

Download the appropriate package for your operating system over at https://github.com/QB64-Phoenix-Edition/QB64pe/releases/latest

Windows

Make sure to extract the package contents to a folder with full write permissions (failing to do so may result in IDE or compilation errors).

  • It is advisable to to whitelist the 'qb64pe' folder in your antivirus/antimalware software *

macOS

Before using QB64-PE make sure to install the Xcode command line tools with:

xcode-select --install

Run ./setup_osx.command to compile QB64-PE for your OS version.

Linux

Compile QB64-PE with ./setup_lnx.sh.

Dependencies should be automatically installed. Required packages include OpenGL, ALSA and the GNU C++ Compiler.

Usage

Run the qb64pe executable to launch the IDE, which you can use to edit your .BAS files. From there, hit F5 to compile and run your code.

To generate a binary without running it, hit F11.

Additionally, if you do not wish to use the integrated IDE and to only compile your program, you can use the following command-line calls:

qb64pe -c yourfile.bas

qb64pe -c yourfile.bas -o outputname.exe

Replacing -c with -x will compile without opening a separate compiler window.

Additional Information

More about QB64-PE at our wiki: https://qb64phoenix.com/qb64wiki

We have a community forum at: https://qb64phoenix.com/forum

We don't currently tweet. Sorry.

Find us on Discord: https://discord.gg/D2M7hepTSx