HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0321
grt9プログレスバー上に文字を重ねて表示する6解決


grt9

リンク

2010/3/21(Sun) 14:19:08|NO.31462

以下の様にプログレスバー上に文字を重ねて表示しようと試みても、
文字がプログレスバー下に表示されてしまいます。

winobj "msctls_progress32","",,$50000000,40,20 pos 0,0 mes "test"
解決策をご存知の方、ご教授お願いします。



この記事に返信する


たこ

リンク

2010/3/21(Sun) 23:57:01|NO.31467

スタティックを作る
WM_CTLCOLORSTATICで
文字を描画するときに背景色を描画しないようにする
スタティック自体の背景色をなしにする
プログレスバーの上に置く

で、こっちはできました



grt9

リンク

2010/3/22(Mon) 16:13:17|NO.31470

たこさん、回答ありがとうございます。
動作を確認しました。
が、
sendmsg hStatic,$C,,"change"
等とすると、文字が重なって表示されてしまいます。
解決策があれば、ご教授いただければと。



たこ

リンク

2010/3/22(Mon) 21:48:58|NO.31480

確かに、スタティックを使ったやり方だとどうしてもそうなってしまいました

別の方法はプログレスバーをオーナードローで描画する方法しか思い当たらないです
ですが、この方法だとOSが用意してくれるような立体感(XPとかVISTA)のあるものではなくなります



ANTARES

リンク

2010/3/23(Tue) 00:59:05|NO.31482

 透明ウィンドウを使うのはどうでしょう。



grt9

リンク

2010/3/23(Tue) 16:40:00|NO.31499

>>たこさん、ANTARESさん回答ありがとうございます。
仰られる様なオーナードローや透過ウインドウを使用した方法を検討してみたのですが、
そこまでして欲しい機能かどうかを考えると、どうも引っ掛かりまして、
最終的には、機能を搭載しない、又はプログレスバー上に表示しない等と言った方に折れる事となりました。
回答してくださった方々には申し訳ないのですが、これにて解決と致します。



u

リンク

2010/3/24(Wed) 20:59:47|NO.31536

一応子ウインドウで試してみたらやはり再描画時にプログレスバーが浮かんでくるようになりました。

#include "user32.as" #define GWL_STYLE (-16) #define GWL_HWNDPARENT (-8) #define WS_CHILD 0x40000000 screen 0:hParent=hwnd winobj "msctls_progress32","",,$50000000,40,20//プログレスバー bgscr 1,30,17,,5,2//子ウインドウのサイズと位置 mes "test": hChild=hwnd GetWindowLong hChild,GWL_STYLE//現存のウインドウスタイルを取得し SetWindowLong hChild,GWL_STYLE,stat|WS_CHILD//子ウインドウスタイルを付加する SetParent hChild,hParent//親子定義



ONION software Copyright 1997-2021(c) All rights reserved.