|
テクニカルノート25: ツールバーにコントロールを追加June 27, 2002© NSB Corporation. All rights reserved. |
Go to English page.
Alex Yakhnin 氏(Software Developer, Morganville, NJ) による寄稿。
このテクニカルノートの内容はPocket PCデバイスに適用しますが、Pocket PC 2002には対応していません。
Mark GamberのWin32 APIオブジェクトの紹介以来、NS Basicプログラマに、このツールの境界線を広げるための、無限の可能性が開かれてきました。我々の多くは、アプリケーションのためにより多くのディスプレイスペースを確保しながら、Toolbar上にコントロールを置きたいと思っているはずです。最初のステップとして、ToolbarにCommandButtonを配置してみましょう。
Sample 1
(このサンプルを実行する前に、"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
それでは、IconボタンをToolbarに追加するのを試してみましょう。この目的の為に、"bmp"ファイルを中に読み込んだPictureBoxコントロールを使うことが出来ます。
"しかし、PicutureBoxはウインドウを処理するプロパティを持っていない!"とあなたは言うかもしれません。
勿論それは正しいことです。そしてWindows APIの知識がここでもヘルプとなります。トリックは、NS Basicによって作成されるアプリケーションのメイン ウインドウが、2つの子供を持っていることを知ることです。それらはToolBarとDialogです。プロジェクトに追加される全てのコントロールは、実際、Dialogウインドウの子供になります。
Sample 2
(このサンプルを実行する前に、"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