トップページ > 過去ログ > 記事閲覧
ツールバー関連関数の使い方
名前:kazuoni 日時: 2009/12/19 11:52

はじめまして。お邪魔します。 今回はツールバー関連関数の使用方法について教えていただきたいです。 (過去ログ、検索をかけても、ヒットしなかったので。。) SetupToolBarの第一第二引数の意味 AddToolBarButtonの第三引数の意味 が理解できず、実装できなくて困っています。 詳しく解説していただかなくても、サンプルコードを張り付けていただくだけでも結構です。 よろしくお願いします。

Page: 1 |

Re: ツールバー関連関数の使い方 ( No.1 )
名前:管理人 日時:2009/12/22 00:26

Ver 3.00 以降では SetupToolBar 関数が正常に機能しなかったので、 機能するように修正したバージョンをアップしました よろしければこちらをダウンロードしてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) SetupToolBar を実装した当時の説明文が手元に残っていましたので こちらに掲載します、不明な点がありましたらご質問下さい あと、この機能はウインドウモード専用です ↓ここから実装当時の書き込み // ツールバーの準備( NULL を指定するとツールバーを解除 ) int SetupToolBar( const char *BitmapName, int DivNum ) ; // ツールバーのボタンの状態 #define TOOLBUTTON_STATE_ENABLE // 入力可能な状態 #define TOOLBUTTON_STATE_PRESSED // 押されている状態 #define TOOLBUTTON_STATE_DISABLE // 入力不可能な状態 #define TOOLBUTTON_STATE_PRESSED_DISABLE // 押されている状態で、入力不可能な状態 // ツールバーのボタンのタイプ #define TOOLBUTTON_TYPE_NORMAL // 普通のボタン #define TOOLBUTTON_TYPE_CHECK // 押すごとにON/OFFが切り替わるボタン // ツールバーにボタンを追加 int AddToolBarButton( int Type, int State, int ImageIndex, int ID ) ; // ツールバーに隙間を追加 int AddToolBarSep( void ) ; // ツールバーのボタンの状態を取得( TRUE:押されている or 押された FALSE:押されていない ) int GetToolBarButtonState( int ID ) ; // ツールバーのボタンの状態を設定 int SetToolBarButtonState( int ID, int State ) ; // ツールバーのボタンを全て削除 int DeleteAllToolBarButton( void ) ;  まずツールバーのボタン用の画像を SetupToolBar 関数で読み込みます。 ボタン用の画像は、使用するボタンの絵が横一列に並んだ物を使用します。 (感覚としては LoadDivGraph で読み込む画像と同じです)  そして DivNum には、指定した画像を何個に分割して扱うか(何個分のボタン画像が 並んでいるのか)を指定します。  因みにこの画像ですが、何故かパレット画像しか受け付けないようですので (ツールバーの仕様?)、とりあえずDXライブラリでは256色のBMPパレット画像 のみ扱えるようにしてあります。 ので、間違ってフルカラーの画像を指定したり しないようにご注意下さい。  次に AddToolBarButton でボタンを追加します。  Type にはボタンのタイプ(TOOLBUTTON_TYPE_??? 系)を指定して、State には ボタンの初期の状態(TOOLBUTTON_STATE_??? 系)を指定します。  ImageIndex では BitmapName で指定した分割画像の左から何番目のボタン画像 を使用するかを指定します。  ID はボタンの識別子です。ボタンの状態を調べたり変更したりする時に使用 しますので、複数のボタン同士で ID が被らないようにして下さい。  ボタンが押されたかどうかは GetToolBarButtonState で調べるのですが、  ボタンのタイプに TOOLBUTTON_TYPE_NORMAL を指定した場合はちょっと挙動が特殊です。 このタイプは普通のボタンなので、見た目上はボタンを押したあと直ぐ元に戻ってしまいますが、 GetToolBarButtonState では一度ボタンが押されると、押された後に GetToolBarButtonState で 調べられるまでボタンが押されたという情報を保持し続けます。 で、一度でも GetToolBarButtonState で状態を取得すると再び押されていない 状態を返すようになります。  TOOLBUTTON_TYPE_CHECK の場合は見た目通りの押下状態が返ります。  後は、注釈の通りです。  因みにボタンを一つだけ消したりすることは出来ませんので、配置を変更する時は DeleteAllToolBarButton で一度全てボタンを削除した後、再度配置し直して下さい。    最後に簡単なサンプルを・・・  二つボタンを追加して二つ目のボタンが押されるまでループし続けるプログラムは 次の様になります。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) return -1; //読み込みは一度だけ SetupToolBar( "button.bmp", 3 ) ; //普通のボタンを二つ追加 AddToolBarButton( TOOLBUTTON_TYPE_NORMAL, TOOLBUTTON_STATE_ENABLE, 0, 100 ) ; AddToolBarButton( TOOLBUTTON_TYPE_NORMAL, TOOLBUTTON_STATE_ENABLE, 2, 101 ) ; //右のボタンが押されるまでループ while( ProcessMessage() == 0 && GetToolBarButtonState( 101 ) == FALSE ){} DxLib_End() ; return 0 ; }  というわけで一応実装してみましたが、果たしてこれで良いのかどうか よく分かっていないので、何かあれば突っ込んで下さい。 Bitmap タイプのリソースのIDを引数として取るようにしました↓ // ツールバーの準備( NULL を指定するとツールバーを解除、ResourceID は BitmapName が NULL の際に使用される ) int SetupToolBar( const char *BitmapName , int DivNum , int ResourceID ) ; ResourceID に渡す値は int LoadGraphToResource( int ResourceID ) ; と同じタイプですので、Bitmap として追加したリソースのみ使用できます
Re: ツールバー関連関数の使い方 ( No.2 )
名前:kazuoni(解決) 日時:2009/12/22 03:07

迅速かつ丁寧なご対応ありがとうございます。 修正パッチは導入させていただきました。 まだ自分が忙しく、組み込むまで入ってませんが。。 だいたい解釈としてはあっていたので、なんとか実装できそうです。 ありがとうございました。 次回も、質問に来た時には、よろしくお願いします。 #名前の横に解決と書けばよいのでしょうか?^^;
Re: ツールバー関連関数の使い方 ( No.3 )
名前:管理人 日時:2009/12/27 12:37

特に名前の横に解決と書いていただく必要はありません 他の方にとって分かりやすいので「書かないで下さい」と言う理由もありませんが (^ ^;

Page: 1 |