SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

タスクバーとVB.NET

VB.NETプログラムでタスクバーを自由に設定しよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

タスクバーを自動的に隠す設定とタスクバーを他のウィンドウの手前に表示する設定を適用する

 ここでは、この2つのタスクバープロパティによって、今までに慣れたものとは違う方法をとることにしました。というのも、コードでデスクトップツールバーオブジェクトを作成し、それをタスクバーの場合と同じやり方で操作できるからです。タスクバーを右クリックして、新規ツールバーの作成を選択すれば、それは通常のコンピュータユーザーにとってデスクトップツールバーを意味します。プログラマは、このデスクトップツールバーを「アプリケーションバー(AppBar)」と呼びます。アプリケーションバーはタスクバーと同じ機能を持っており、ボタンとメニューを収容したり、隠したり、サイズを変更したり、移動したりすることができます。

 作業を楽にするため、新しいアプリケーションバークラスを作成することにしました。このクラスは新しいクラスとして追加することも、フォームのクラスの中に入れることもできます。どちらにしても、「TBAppBar」のような分かりやすい名前を付け、そこに次のコードを追加してください。

Public Class TBAppBar

'Get Message Sent By App Bar
Private Declare Function GetAppBarMessage Lib "shell32" _
Alias "SHAppBarMessage" _
(ByVal dwMessage As Integer, _
ByRef pData As APPBARDATA) = As Integer

'Send Message To App BAr
Private Declare Function SetAppBarMessage Lib "shell32" _
Alias "SHAppBarMessage" _
(ByVal dwMessage As Integer, _
ByRef pData As APPBARDATA) As Integer

'AppBar Structure
Private Structure APPBARDATA
Dim cbSize As Integer
Dim hwnd As Integer
Dim uCallbackMessage As Integer
Dim uEdge As Integer
Dim rc As Rectangle
Dim lParam As Integer
End Structure

'Get Current State
Private Const ABM_GETSTATE As Int32 = &H4
'Get TaskBar Position
Private Const ABM_GETTASKBARPOS As Int32 = &H5
'Apply Setting(s)
Private Const ABM_SETSTATE As Int32 = &HA
'Autohide
Private Const ABS_AUTOHIDE As Int32 = &H1
'Always on Top
Private Const ABS_ALWAYSONTOP As Int32 = &H2

Private TBAppBAutoHide As Boolean
Private TBAppBarAlwaysOnTop As Boolean

Public Sub New()
Me.GetState() 'Get Current State
End Sub

Private Sub GetState()

'What Setting?
Dim AppBarSetting As New APPBARDATA

'Initialise
AppBarSetting.cbSize = Marshal.SizeOf(AppBarSetting)

'Get Current State
Dim AppBarState As Int32 = _
GetAppBarMessage(ABM_GETSTATE, AppBarSetting)

Select Case AppBarState

'Nothing Set
Case 0
TBAppBAutoHide = False
TBAppBarAlwaysOnTop = False

'Always On Top
Case ABS_ALWAYSONTOP
TBAppBAutoHide = False
TBAppBarAlwaysOnTop = True

Case Else
'AutoHide
TBAppBAutoHide = True

End Select

End Sub

'Apply Settings
Private Sub SetState()

'Setting We Want To Apply
Dim AppBarSetting As New APPBARDATA
'Initialise
AppBarSetting.cbSize = Marshal.SizeOf(AppBarSetting)

If Me.AutoHide Then
AppBarSetting.lParam = ABS_AUTOHIDE 'AutoHide
End If

'Always On Top
If Me.AlwaysOnTop Then
AppBarSetting.lParam = AppBarSetting.lParam Or ABS_ALWAYSONTOP
End If

SetAppBarMessage(ABM_SETSTATE, AppBarSetting)

End Sub

Public Property AutoHide() As Boolean 'Autohide
Get
Return TBAppBAutoHide
End Get
Set(ByVal Value As Boolean)
TBAppBAutoHide = Value
Me.SetState()
End Set
End Property

Public Property AlwaysOnTop() As Boolean 'Always On Top
Get
Return TBAppBarAlwaysOnTop
End Get
Set(ByVal Value As Boolean)
TBAppBarAlwaysOnTop = Value
Me.SetState()
End Set
End Property

End Class

用法

 フォームクラス内に新しいTBAppBarオブジェクトを作成することを忘れないでください。

Private AB As New TBAppBar 'AppBar Object

 この2つのフォームボタンに次のコードを追加して、TBAppBarクラスの該当するプロパティを適用します。

Private Sub btnAutoHide_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAutoHide.Click

Select Case btnAutoHide.Text
Case "Auto Hide TaskBar"
btnAutoHide.Text = "Auto Hide TaskBar Off"
AB.AutoHide = True 'Set AutoHide On
Case "Auto Hide TaskBar Off"
btnAutoHide.Text = "Auto Hide TaskBar"
AB.AutoHide = False 'Set AutoHide Off
End Select
End Sub

Private Sub btnTop_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnTop.Click
Select Case btnTop.Text
Case "Keep TaskBar on Top"
AB.AlwaysOnTop = True 'Set Always On Top On
btnTop.Text = "Don't Keep TaskBar on Top"
Case "Don't Keep TaskBar on Top"
AB.AlwaysOnTop = False 'Set Always On Top Off
btnTop.Text = "Keep TaskBar on Top"
End Select
End Sub

 このアプリケーションバークラスにはもっと多くのメソッドと値(API定数)がありますが、ここではAutoHideAlwaysOnTopだけを説明します。このクラスには関連するAPIが2つあります。

  1. GetAppBarMessage
  2. SetAppBarMessage

 GetAppBarMessageはツールバーの現在の状態を取得します。SetAppBarMessageはツールバーの現在の状態を変更するのに使われます。現在の状態とは、ツールバーのプロパティ、位置、可視性などを指します。このクラスの中で2つのプロパティを作成しましたが、その1つはAutoHideに対応するもので、もう1つはAlwysOnTopに対応するものです。この2つの設定は互いに緊密な関係があるので、どちらもSetStateメソッドを使って簡単に操作できます。アプリケーションバーについては各自でもう少し深く研究してみてください。

 タスクバー領域に関しては基本的にこれで完了です。まだ触れていないタスクバー領域としては、昔ながらのスタートボタンとスタートメニューがあります。

次のページ
スタートボタンの設定

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Hannes du Preez(Hannes du Preez)

プログラミングトレーナー。プログラミングを最大の趣味とする。Visual Basic 5からプログラミングを始め、Visual Basic 6.0、Visual C++ 6.0、Visual Basic .NETでアプリケーションを開発。プログラミングの知識はすべて独学によるもので、CodeGuru...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3473 2009/02/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング