emWin ウィンドウオブジェクト

  
 

ウィンドウオブジェクト(ウィジット)

ウィジェットはオブジェクト型のプロパティを持つウィンドウであり、Windows環境でははコントロールと呼ばれ、ユーザーインターフェースの要素を構成します。特定のイベントに自動的に反応することができ、例えばボタンが押された場合外観を変化させます。ウィジットはいつでも変更可能なプロパティをもちます。また不要になったウィジットはすみやかに削除されます。ウィンドウと同様にウィジットはそれぞれ固有のハンドルを与えられています。

ウィジットにはウィンドウマネージャーが必要になります。ウィジットが作成されるとウィンドウ同様に振る舞い、ウィンドウマネージャによって位置や再描画の管理が適切に行われます。ウィジットはアプリケーションやユーザーインターフェースに必ずしも必要ありませんが、開発時間を減らすことができます。

ウィジットの基本

利用可能なウィジェット

ウィジェットのうちスキニングをサポートするものはスキニングされた状態も示してあります。

スキニングについての詳細はこちら

名前

スクリーンショット

(クラッシック)

スクリーンショット

(スキン適用)

説明
BUTTON プッシュ可能なボタンです。テキストやビットマップをボタン上に表示することができます。
CHECKBOX チェックボックスです。チェック状態と非チェック状態が有ります
DROPDOWN ドロップダウンリストボックスです。プッシュするとリストが開きます。
EDIT   一行の入力ボックスです。
FRAMEWIN フレームウィンドウ。GUIの外観を決めます。
GRAPH   グラフウィジット。曲線や数値を表示します。
HEADER ヘッダコントロール。列管理をします。
ICONVIEW   アイコン調ウィジット。携帯デバイスなどでアイコンを利用する場合に便利です。
IMAGE     イメージウィジット。自動で様々なフォーマットの画像を表示します。
LISTBOX   リストボックス。選択されると青くハイライトが付きます。
LISTVIEW   リスト表示ウィジット。表や計算用紙を作るのに利用します。
LISTWHEEL   リストホイールウィジット。データは回転して表示される用にエフェクトがかかります。
MENU   メニューウィジット。水平または垂直メニューバーを作成します。
MULTIEDIT   複数行の入力ボックス
MULTIPAGE   複数ページウィジット
PROGBAR プログレスバー
RADIO 一つしか選択できないラジオボタン
SCROLLBAR 水平または垂直スクロールバー
SLIDER 変数を変えるためのスライダー
SPINBOX     スピニングボックス、飛び飛びの値を選択できます。
TEXT   テキスト表示
TREEVIEW   ツリー表示

 

再描画のメカニズム

ウィジェットは、そのプロパティに応じて自分自身を再描画します。WM_Exec()、GUI_Exec()またはGUI_Delay()を呼び出して再描画が行われます。マルチタスク環境では、バックグラウンドタスクは、通常WM_Exec()を呼び出すとウィジェット(およびコールバック機能を持つ他のすべてのウィンドウ)を更新するために使用されます。
ウィジェットのプロパティが変更されると、ウィジェットのウィンドウ(またはその一部)が無効状態になり、すぐに再描画は開始されず、後でWMで行われます。

 

ウィジェットの使用方法

プログレスバーを表示してみます。次のコードだけで表示することができます。

PROGBAR_Handle hProgBar;
GUI_DispStringAt("Progress bar", 100, 20);
hProgBar = PROGBAR_Create(100, 40, 100, 20, WM_CF_SHOW);

widgets progbargray0percent

最初の行は、ウィジェットのハンドル用のメモリーを予約。最後の行は実際にウィジェットを作成します。この後WM_Exec()が呼ばれると自動的に描画が行われます。
メンバ関数でウィジットのプロパティを変更することで随時ウィジットの外観に変更できます。今回プログレスバーを45%表示にし、色をデフォルト(暗い灰色/明るい灰色)から緑/赤に変更してみます。

PROGBAR_SetBarColor(hProgBar, 0,   GUI_GREEN);
PROGBAR_SetBarColor(hProgBar, 1,   GUI_RED);
PROGBAR_SetValue   (hProgBar, 45);

widgets progbargreenred45


動的メモリ使用

断片化が発生するため組込み用途では動的メモリ使用は望ましくありません。しかしemWinでは異なるハンドルを利用することで断片化なしに動的メモリ使用を可能にしました。実際にメモリを参照するポインタとハンドルを別に管理することでウィジットが実際に使用するメモリ領域を適宜最適化していくことで断片化を防いでいます。

 

ウィジットの詳細

BUTTON

タッチスクリーンでの主なユーザーインターフェースとして使用されます。次の画像のように、ボタンにテキストを表示したり背景を追加できます。

widgets button


CHECK BOX

様々な選択肢を選択するために使用されます。チェックボックスにはオンまたはオフ状態があります。また、操作無効になっている場合ボックスは次の表のようにグレー表示されます。

 選択非選択
操作有効
操作無効

DROPDOWN

複数の要素を持つリストから一つの要素を選択するために使用されます。それは、閉じている状態では現在選択されている項目を示し、ユーザーがウィジェットを開いた場合はリストが展開されます。

閉じている状態開いている状態

EDIT

テキスト入力の主要なユーザーインターフェイスとして使用されます。

空の状態入力済みの状態


バイナリ、10進数、16進モードで値を入力するためのEDITフィールドを使用することができます。入力無効状態ではチェックボックスのように編集フィールドがグレー表示されます。

入力有効状態入力無効状態

FRAMEWIN

フレームウィンドウは、アプリケーション、PCアプリケーションの外観を決めます。フレーム、タイトルバーとユーザ領域で構成されています。、下図のように、ウィンドウのアクティブまたは非アクティブ状態はタイトルバーの色で示します。

アクティブ非アクティブ

GRAPH

グラフのウィジェットは、データを視覚化するために使用することができます。グラフウィジェットの標準的なアプリケーションは測定値または関数のグラフの曲線を示しています。複数の曲線を同時に表示することができます。水平と垂直のスケールとグリッドを使用することができます。データが表示領域より大きくなると自動的にスクロールバーを追加しデータ領域を拡大できます。

グラフの曲線測定値の時間推移

 HEADER

HEADERのウィジェットは、次のように表のラベルに使用されます。

widgets header 1

ポインタインプットデバイス(PID)が使用されている場合、ヘッダー項目の幅はPIDによって仕切りをドラッグして管理することができます。


LISTBOX
リストボックスは、リストの一つの要素を選択するために使用されています。以下に示すように、周囲のフレームのウィンドウなしで作成、またはFRAMEWINウィジェットの子ウィンドウとすることができます。リストボックス内の項目が選択されている場合強調表示されます。

リストボックスアクティブリストボックス非アクティブ

LISTVIEW
ListViewのウィジェットは、複数の列を持つリストの一つの要素を選択するために使用されています。列を管理するLISTWIEWウィジェットは、HEADERウィジェットが含まれています。周囲のフレームウィンドウなしまたはFRAMEWINのウィジェットの子ウィンドウとして作成することができます。項目が選択されている場合、強調表示します。

説明LISTVIEW 

非アクティブ

フレームウィンドウなし

スクロールバーなし

グリッド非表示

アクティブ

フレームウィンドウなし

スクロールバーなし

グリッド非表示

アクティブ

フレームウィンドウあり

スクロールバーなし

グリッド非表示

アクティブ

フレームウィンドウあり

スクロールバーあり

グリッド非表示

アクティブ

フレームウィンドウあり

スクロールバーあり

グリッド表示

 


MENU

メニューを作成するために使用することができます。各メニュー項目は、アプリケーションのコマンドやサブメニューを表します。メニューは水平および/または垂直に表示することができます。メニュー項目は、セパレータを使用してグループ化することができます。メニュー項目を選択すると、メニューの親にWM_MENUメッセージを送信するか、サブメニューを開きます。マウスのサポートが有効になっている場合はメニューのウィジェットはマウスに反応します。以下の表は、垂直サブメニューを持つ水平メニューの例です。

説明WIDGET_Effect_3D1LWIDGET_Effect_Simple
カラーディスプレイ

モノクロディスプレイ

(グレースケール)

モノクロディスプレイ

 


MULTIEDIT
MULTIEDITウィジェットは複数行でテキストを編集することができます。テキストエディタとして使用するか、テキストを表示することに使用できます。ウィジェットはスクロールをサポートしています。

説明フレームウィンドウ
編集モード
自動水平スクロールバー
折り返し表示なし
インサートモード
編集モード
自動垂直スクロールバー
折り返し表示
オーバーライトモード
表示モード
折り返し表示

 


MULTIPAGE

マルチページウィジェットを使用することにより、アプリケーションはウィンドウまたはダイアログボックスの同じ領域に対して複数のページを定義することができます。ページのタブをクリックすることでページが選択でき、表示領域を超えるタブがある場合は自動的にページの角に小さなスクロールバーを表示します。サンプルフォルダにはマルチページのウィジェットを作成して使用法を示すWIDGET_Multipage.cが含まれています。

説明MULTIPAGE
3ページ、タブは左上寄せ
6ページ、タブは右下寄せ

 


TEXT
通常、以下のメッセージボックスに表示される、ダイアログボックス内のテキストフィールドを表示するために使用されます。

widgets messagetext

もちろんテキストフィールドは、次のように他のウィジェットのラベルに使用することができます。

widgets text


emWinホームに戻る 


ウィンドウオブジェクト関連ページ 
SEGGER
RTOS&Middleware