hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
グループボックス - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

 HSP3.0 

初めてまともにページ作るので、ヘンなとこあったら直してください。

擬似グループボックス

グループボックスとは、コントロールパネルなどでよくみる四角い枠線のことです。
本来はボタンコントロールにメッセージを送って作るものですが、HSPでやるとグループボックスが再描画されないという問題が生じます。
それを防ぐために、HSPではスタティックテキストを下敷きにするのを推奨しているようですが、HSP3でmesbox命令のスタティックテキストがなくなり、グループボックスを作るのにわざわざhsp3util.asを使用しなければいけないようになってしまいました。

「そんなめんどくさいことをするよりは自分で描いたほうがましだ!」ということで自分で作ってみました。(^^;

見出し

モジュール

+  モジュール

サンプル

+  サンプル

コメント

  • 間違ったことかいてないかチェック・・・。 -- QIG 2005-12-14 (水) 23:03:52
  • 使える! 今まで...って言っても2度だけだけど、lineのオンパレードで作ったことがあります。 それも背景色無視で..。 -- hiroki? 2005-12-15 (木) 09:17:34
  • exgroupbox命令実行の前に枠内にmesを入れるのと、実行後に入れるのとでは、フォントサイズが変更されます。^^; -- hiroki? 2005-12-15 (木) 09:18:01
  • 既知のバグです。(^^; 現在選択されているフォント情報を取得する方法はないものかと考えましたが、見つかりませんでした・・・。 -- QIG 2005-12-15 (木) 17:40:41
  • 描画Y位置がおかしかったので修正。 -- QIG 2005-12-15 (木) 18:07:12
  • LUNAバージョン追加しました。ついでに細かいところを修正・・・。 -- QIG 2005-12-15 (木) 19:57:37
  • スタイルを自動で判別するようにしました。だいぶ実用的になったと思います。(^_^) -- QIG 2005-12-16 (金) 20:35:24
  • Windowsクラッシックスタイルなんですが、使っていくうちにXPスタイルという判定になり文字が青く枠線もなしになります。実際には引いてるんだろうけど、直すには一端XPスタイルにして再度クラッシックにしなければなりません。どうして...(;_;) 組み込み方が悪いのかな -- hiroki? 2005-12-28 (水) 10:57:03
  • ここが気になりました。
      1
      2
      3
    
     
     
     
    
        ;XP以降でビジュアルスタイルが有効の場合
    //  if varptr(IsThemeActive) : if IsThemeActive()!0 : vstyle = 1
        vstyle = IsThemeActive()
    どうですか? -- kz3
  • あっ、if osver(1)>=5 & osver(2)>=1 : if IsThemeActive?()!0 : vstyle = 1 のままでした。 いつのまに変わってる。(-_-;) ごめんなさいいまのところ正常です。 -- hiroki? 2005-12-28 (水) 12:10:24
  • でもこれだと、XP以外はエラー出るんじゃないの。 Win98にIsThemeActive?のAPIあるんですか。 -- hiroki? 2005-12-28 (水) 12:33:44
  • 「Minimum operating systems Windows XP 」無い様ですねぇ・・・ -- kz3 2005-12-28 (水) 12:40:09
  • Win98が無いからいまとなっては試しようがない -- hiroki? 2005-12-28 (水) 12:48:17
  • IsThemeActive?関数がないOSでも大丈夫です。
      1
      2
      3
      4
    
     
     
     
     
    
        #uselib "test.dll"
        #func test "test"
     
        mes varptr(test)
    が大丈夫ですから。-- QIG 2005-12-28 (水) 13:19:51
  • ここの他にも細々といじってますので、全部コピーしなおした方がいいかと・・・。 -- QIG 2005-12-28 (水) 13:30:53
  • 'test'は関数ポインタになっていたんですね。
      1
      2
      3
    
     
     
     
    
        ;XP以降でビジュアルスタイルが有効の場合
    //  if varptr(IsThemeActive) : if IsThemeActive()!0 : vstyle = 1
        if varptr(IsThemeActive): vstyle = IsThemeActive(): else: vstyle=0
    でしょうか。Is〜は有効であればTRUE(≠0)を返します。!0で「0でない」時に真にするのはそのままBOOL値となるので!0は要らなくてもいいですね。 -- kz3
  • 確かにそうだ、てことで修正。ついでに選択フォント保存機能追加しました。 -- QIG 2005-12-28 (水) 16:50:10
  • なかなか APIってのは便利なものがありますね。勉強不足です。 -- hiroki? 2005-12-28 (水) 19:02:02
  • あれから数日、スタイルを変えずに使い続けていると、また表示されなくなりました。 XPのバグかいの? -- hiroki? 2006-01-02 (月) 12:40:31
  • vstyleの値を調べると、XPスタイルもクラッシックも1になりましたが、次にクラッシックに戻せば0になりました。 -- hiroki? 2006-01-02 (月) 13:12:05
  • ち、ちなみに知っているかと思いますがボタンコントロールにWS_CLIPCHILDREN($02000000)スタイルを除くとコントロールの後ろの親ウィンドウの背景も再描画されます。by naznyarkさんより。
    このスタイルは子ウィンドウに隠れた部分を再描画対象から除外するというものです。 -- kz3 2006-01-02 (月) 13:13:03
  • 今回はvstyleの値だけ調べたんです -- hiroki? 2006-01-02 (月) 13:19:10
  • 一度終了して起動してもXPスタイルと判定される -- hiroki? 2006-01-02 (月) 13:21:51
  • 私はこのモジュールを二週間ほど使い続けていますが、表示されなくなったことはありませんでした。なんでそうなるのかな・・・。 -- QIG 2006-01-02 (月) 13:39:24
  • いろいろとスタイル変えて試してみましたが、特に変な動作はありませんでした。 -- QIG 2006-01-02 (月) 13:41:18
  • スタイルも変えずに使い続けると....。(-_-;) -- hiroki? 2006-01-02 (月) 13:43:24
  • やっぱり日数がたてば、こうなるんですけど。
    CPUがダブルコアの64ビットだからってことはないですよね。^^; by hiroki
    gbox.png
  • やっと見つけました。
    異常状態のまま下記を追加(上書)して確かめると、正常に描画しました。
    ほとんどネットからのパクリなんですけどね。(^^;)
	#uselib "UxTheme.dll"
	#cfunc IsThemeActive "IsThemeActive"
	#cfunc IsAppThemed "IsAppThemed"

	if varptr(IsThemeActive) : vstyle1 = IsThemeActive()
	if varptr(IsAppThemed)   : vstyle2 = IsAppThemed()
	vstyle = vstyle1 & vstyle2

でも、異常状態のままなんで、vstyle1の値は1のハズでXPスタイルの判定なんですが、vstyle2がゼロなので、
クラシックという判定になります。
試しに修正していないもので動作すると描画されない。(^^;)
ちなみに、IsThemeActive?()もIsAppThemed?()も、XPスタイルかどうかの判定のようです。 by hiroki

  • なぜ・・・(?_?) IsThemeActive?は環境依存なのかな・・・。 -- QIG 2006-01-19 (木) 20:31:37
  • regionプラグインのテストも兼ねて更新。原因がよく分からないままhirokiさんのコードを追加しました。 -- QIG 2006-01-28 (土) 21:44:34
  • W2K等でコけるので、最終行のvstyle 配列初期化を追加しました。 -- Chiba-NW? 2007-10-09 (火) 21:09:17

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
filegbox.png
724件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2009-04-01 (水) 01:56:47 (1712d)