|
|
Tech Note 38: Adding Controls to the NS Basic ToolbarJune 27, 2002© 2010 NS BASIC Corporation. All rights reserved. |
This Tech Note applies to Pocket PC units. It is not applicable to Pocket PC 2002.
Since the introduction of the Mark Gamber's Win32 API object, unlimited possibilities have been opened for NS Basic developers to expand the boundaries of this tool. Many of us would like to place some controls on the Toolbar, freeing up some more display space for our applications. As a first step, let's place a CommandButton on a Toolbar:
Sample 1
(Before running this sample, please save it under the name "TlbButton.nsb")
Option Explicit
'Declare variables and objects
AddObject "MGCEWin32.API","API"
AddObject "CommandButton","cmdTool", 50, 3, 20, 20
cmdTool.BackColor = 12632256 ' Gray
cmdTool.Caption="OK"
Dim AppWnd
Dim tlbWnd
'Get Application Window Handle
AppWnd = API.FindWindow("TlbButton.nsb")
'Get ToolBar Window Handle
tlbWnd = API.ChildWindowFromPoint(AppWnd, 0, 0)
'Assign to our Button a new Parent
API.WindowParent(cmdTool.hWnd) = tlbWnd
Sub cmdTool_Click
MsgBox "Tool Button Clicked"
End Sub
Now, lets try to add an Icon button to a Toolbar. For this purposes we can use PictureBox control with loaded "bmp" file in it.
"But PictureBox doesn't have a window handle property!" you say.
Absolutely correct, and the knowledge of the Windows API's will come to our help again. The trick is in knowing that the main application window that is created by NS Basic has 2 children: ToolBar and Dialog and all controls that are added to the project become, actually, the children of the Dialog window:
Sample 2
(Before running this sample, please save it under the name "TlbIcon.nsb")
Option Explicit
'Declare variables and objects
AddObject "MGCEWin32.API","API"
AddObject "PictureBox","picTool", 50, 3, 21, 21
' Load picture file into control ( Make sure that the file exists in your system)
picTool.DrawPicture "\Windows\property.2bp",0,0
picTool.BorderStyle = 0
Dim AppWnd
Dim dialogWnd
Dim pictWnd
'Get Application Window Handle
AppWnd = API.FindWindow("TlbIcon.nsb")
'Get ToolBar Window Handle
tlbWnd = API.ChildWindowFromPoint(AppWnd, 0, 0)
' Get Dialog Window handle
dialogWnd = API.ChildWindowFromPoint(AppWnd, 100, 100)
'Get PictureBox handle using dialogWnd as a Parent and PictureBox
coordinates
pictWnd = API.ChildWindowFromPoint(dialogWnd, 50, 3)
'Assign to our Icon a new Parent
API.WindowParent(pictWnd) = tlbWnd
Sub picTool_Click
MsgBox "Tool Icon Clicked"
End Sub
' Lets Change BorderStyle to show that it was clicked
Sub picTool_MouseDown(b, s, x, y)
picTool.BorderStyle = 1
End Sub
' Restore BorderStyle
Sub picTool_MouseUp(b, s, x, y)
picTool.BorderStyle = 0
End Sub
Alex Yakhnin, Software Developer, Morganville, NJ