> ## Content Index
> Fetch the complete content index at: https://nolongerset.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# twinBASIC Update: November 13, 2022
- URL: https://nolongerset.com/twinbasic-update-november-13-2022/
- Published: 2022-11-13T20:11:04.000Z
- Updated: 2026-05-08T12:53:34.000Z
- Description: Highlights include drag and drop support, an innovative IDE feature known as "Type Hints", and a proof-of-concept twinBASIC multithreading project.
- Author: Mike Wolfe
- Tags: twinBASIC Weekly Update, #Import 2026-05-20 02:59

*On April 23, 2021, I helped [Wayne Phillips](twitter.com/WaynePhillipsEA/) introduce the world to [twinBASIC](https://www.twinbasic.com/) at the [Access DevCon Vienna](https://www.donkarl.com/devcon/) conference. I [boldly predicted](https://nolongerset.com/devcon-2021/) that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025\. With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.*

*Every Sunday, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project. If you come across items that should be included here, tweet me [@NoLongerSet](https://twitter.com/NoLongerSet) or email me at mike at nolongerset dot com.*

*Here are some links to get involved with the project:*

- **[Custom twinBASIC IDE Installation Guide](https://nolongerset.com/how-to-install-twinbasic/)* (NOTE: the twinBASIC VSCode extension is under a feature freeze until 2023)*
- *[GitHub Issue Tracker (report bugs)](https://github.com/WaynePhillipsEA/twinbasic/issues)*
- *[twinBASIC Discord Server](https://discord.com/invite/UaW9GgKKuE) ([chat about the project](https://github.com/WaynePhillipsEA/twinbasic/discussions/629))*
- *[twinBASIC/VBx LinkedIn Group](https://www.linkedin.com/groups/14132101/)*

---

## Highlights

### Drag and Drop Support Added

As of [BETA 173](https://github.com/twinbasic/twinbasic/releases/tag/beta-x-0173), the properties, methods, and events needed to support drag-and-drop were implemented on all controls. This includes:

- `.DragMode`, `.DragIcon` properties
- `.Drag` method
- `.DragOver`, `.DragDrop` events

### Type Hints

I'm not sure if any other programming languages support this, but this is a pretty nifty development environment feature. Here's the [explanation from Wayne](https://discordapp.com/channels/927638153546829845/927638154192748606/1041387565070155921):

> BETA 175 introduces TypeHints that allow us to offer a hint to the IDE as to the real datatype in situations where the definition of a parameter is more generically defined (e.g. a Variant, or a Long type that is really an enumeration). This is needed to prevent breaking backwards-compatibility of a procedure signature (ABI), but still allowing us to refine the datatype for intellisense purposes.   
>  
> Let's look at an example from the VB library:

##### Step 1\. Add the `TypeHint` Attribute to the Procedure Declaration

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2022/11/image-14.png)

Note the new attribute syntax in the above function definition, `[ TypeHint (DragConstants) ]`

##### Step 2\. Calling Code Now Shows More Useful IntelliSense Options

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2022/11/image-13.png)

In the above screenshots, the `Action` parameter is defined as a Variant. In VBx, this means you would get no IntelliSense. However, there are times when you are forced to define a parameter as a Variant–such as if you need to accept `Null` values.

With the new TypeHint feature, you can tell IntelliSense what the function is expecting in *most* situations, even if the actual definition is set to something more generic (like `Variant` or `Object`).

### `App.Title` Can Now Be Set at Runtime

Implented as of [BETA 174](https://github.com/twinbasic/twinbasic/issues/143#issuecomment-1312402909).

### New GUI Properties, Methods, and Events Implemented

Listed below are all the **newly implemented** form and control properties, methods, and events:

- `Form.ScaleMode`, `.ScaleLeft`, `.ScaleTop`, `.ScaleWidth`, `.ScaleMode`, `.ScaleX`, `.ScaleY`
- `PictureBox.ScaleHeight`, `.ScaleLeft`, `.ScaleTop`, `.ScaleWidth`, `.ScaleMode`, `.ScaleX`, `.ScaleY`
- `{ALLCONTROLS}.DragMode`, `.DragIcon`
- `{ALLCONTROLS}.Drag `method
- `{ALLCONTROLS}.DragOver`, `.DragDrop` events
- `Form.Move` method (fixed)

The full list of GUI items yet to be implemented is [available here](https://github.com/twinbasic/twinbasic/issues/1188).

### 

## Around the Web

### Simple Demo of MultiThreading in twinBASIC

From the very beginning, twinBASIC has [supported multithreading](https://nolongerset.com/multithreading-in-twinbasic/).

That said, there is no twinBASIC language syntax that supports multithreading (such as the `Async` and `Await` keywords in VB.NET). At least not yet. Such support is on the [roadmap](https://github.com/twinbasic/twinbasic/issues/335) for early next year (2023).

In the meantime, you can use a handful of Windows API calls (`CreateThread`, et al.) to implement "manual" multithreading in twinBASIC. To showcase this approach, fafalone posted a proof-of-concept project on GitHub: [ThreadTest](https://github.com/fafalone/ThreadTest).

> Extremely simple demo of multithreading in twinBASIC  
>  
> Normally, when you call MsgBox, code execution stops until you respond to it. In this demo, you'll see the following line continues and updates the label, before we decide to manually wait for it.

### 

## Changelog

Here are the updates from the past week. You can also find this information by visiting the GitHub [twinBASIC Releases page](https://github.com/WaynePhillipsEA/twinbasic/releases).

[Releases · WaynePhillipsEA/twinbasicContribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.![](https://github.githubassets.com/favicons/favicon.svg)GitHubWaynePhillipsEA![](https://opengraph.githubassets.com/13bf5f13278e5633e644e312c6a75cfe0baf97f01dd45660573b36f5de0ee945/WaynePhillipsEA/twinbasic)](https://github.com/WaynePhillipsEA/twinbasic/releases)

### BETA 170

- fixed: control anchor properties not working correctly in compiled builds when a form has a menu \[ https://github.com/[/issues/1332](https://github.com/twinbasic/twinbasic/issues/1332) \]
- fixed: \[ArrayBoundsCheck(False)\] on Win64 could cause a crash due to bad codegen \[ wqweto, private \]
- improved: minor performance improvements for accessing array elements with \[ArrayBoundsCheck(False)\] and fixed-length arrays
- improved: variables panel entries are now sorted alphabetically

### BETA 171

- added: support for Form.ScaleMode / Form.ScaleX / Form.ScaleY
- added: support for PictureBox.ScaleMode / PictureBox.ScaleX / PictureBox.ScaleY
- fixed: Form.DrawWidth and PictureBox.DrawWidth are now scaled with DPI
- fixed: (regression) DriveListBox crashing in Property Let ListIndex
- improved: arrays were sometimes ordered incorrectly in the LOCALS IDE panel \[ FullValueRider, discord\]
- improved: tweaked IDE LOCALS panel alignment of variable name & type \[ rexxitall, discord \]
- added: project setting 'Force Dpi Awareness At Startup', defaulting to 'PER\_MONITOR\_DPI\_AWARE'
- fixed: GetSetting/DeleteSetting not handling Optional Missing args properly \[ https://github.com/[/issues/1337](https://github.com/twinbasic/twinbasic/issues/1337) \]

### BETA 172

- fixed: (regression) IDE crash on Win7

### BETA 173

- fixed: clicking on the form area no longer takes focus away from child controls, to match VBx
- added: {ALLCONTROLS}.DragMode support
- added: {ALLCONTROLS}.DragIcon support
- added: {ALLCONTROLS}.DragOver event support
- added: {ALLCONTROLS}.DragDrop event support
- added: {ALLCONTROLS}.Drag method support

### BETA 174

- fixed: missing Form.Move method \[ https://github.com/[/issues/1348](https://github.com/twinbasic/twinbasic/issues/1348) \]
- improved: (IDE) code event selector drop down lists are now alphabetically sorted \[ fafalone, discord \]
- improved: VBP import log now includes warnings for controls that have been converted to PictureBox \[ fafalone, discord \]
- fixed: App.Title property can now be set at runtime, and now works inconjunction with AppActivate \[ https://github.com/[/issues/143](https://github.com/twinbasic/twinbasic/issues/143) \]

### BETA 175

- added: support for `[TypeHint(dataType)]` attribute support for parameters, allowing for enhancing IDE intellisense without affecting ABI
- improved: enhanced methods in standard libraries with TypeHints; {ALLCONTROLS}.Drag, Global.LoadResPicture, Global.LoadPicture, Screen.MousePointer, Clipboard.GetText, Clipboard.GetFormat, Clipboard.SetText