''[[C++/Tk/バグ対応]]''
* C++/Tkで-scrollregionコマンドが正常に通らない [#r18ee1c5]
[[C++/Tk:http://cpptk.sourceforge.net/]]で公開されているcpptk-1.0.2を利用していて、うまく動かないと思うことが多い。~
今回は以下のように-scrollregion()オプションを使用した時のバグに対応したい。
 canvas( ".scaleC" ) -background( "white" ) -width( 486 ) -height( 32 )
                     -scrollregion( 5, 2, 5475, 32 ) -xscrollcommand( ".xsbar set" );
コンパイルは通るが正常に動作しない。~
原因は二つあり、一つは最終的に実行されるTclコマンドの文法ミス、~
もう一つはboost::lexical_cast()で付加されるカンマだ。~
まずは文法ミスの原因となっているcpptk.hの該当箇所について、以下のように書き換える。~

** 制約事項 [#w186a2c5]
cpptk-1.0.2およびboost_1_34を使用。~
~
~
ファイル名:cpptk.h L:1303~
 /* This is OK for me ******************************************//*  -scrollregionバグ対応                         */
 template <typename T1, typename T2, typename T3, typename T4>
 details::Expr scrollregion(T1 const &x1, T2 const &y1,
      T3 const &x2, T4 const y2)
 {
      std::string str(" -scrollregion ");
      str += "{";                                                //  追加箇所その1                                //
      str += details::toString(x1); str += " ";
      str += details::toString(y1); str += " ";
      str += details::toString(x2); str += " ";
      str += details::toString(y2);
      str += "}";                                                //  追加箇所その2                                //
      return details::Expr(str, false);
 }
 //*This is OK for me ******************************************//*  -scrollregionバグ対応                         */
残る問題はロケールの設定で対応する。~
プログラムの冒頭で以下のようにして打開。~
 //    locale::global( locale("japanese") );                       //  ロケールを設定 *これだと失敗*                 //
     locale loc( std::locale( "japanese" ),                      //  数値 → 文字列時にカンマが入らないように      //
     &use_facet< std::numpunct< char > >( std::locale::classic() ) ); //                                           //
     locale::global( loc );                                      //  ロケールを設定                                //


*** 修正履歴 [#a59f35b9]
~

*** 課題 [#i9435c45]
~

-備考~
cpptk.hとかcpptkbase.hって誰か手入れたりしてるのかな?~

*** 参考ページ [#p52862c0]
[[C++/Tk:http://cpptk.sourceforge.net/]]~
[[strstreamやboost::lexical_castをしたときに数値にカンマが入る:http://d.hatena.ne.jp/Nilfs/20080529/1212063249]]~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS