[リストへもどる]
一括表示

投稿時間:2004/06/29(Tue) 17:59
投稿者名:エース
Eメール:
URL :
タイトル:
トグルボタンのXP風表示
・ONの時にボタンが押された状態
・OFFの時にボタンが押されていない状態
というボタンを実現するため、チェックボックスコントロールを貼り付け、
プロパティのStyleを「1-グラフィック」にしてみました。
しかし、マニュフェストファイルを作成し、EXEを実行するとこのチェックボックス
だけが、真四角の状態で表示されます。

別のコンポーネントを使用するなどはなしで、
Windows XP風な角が丸くなったボタン(トグルボタン)を作成する方法をご存じの方がいましたら教えてください。

「Microsoft Forms 2.0 Object Library」コントロールをコンポーネントとして追加すると
トグルボタンコントロールがあるのですが、標準のものだけで実現したいと考えています。

投稿時間:2004/06/29(Tue) 18:24
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: トグルボタンのXP風表示
> Windows XP風な角が丸くなったボタン(トグルボタン)を作成する方法
角を丸くしたボタンを作成したいなら、APIのCreateRoundRectRgn と SetWindowRgn を
使用すれば一応角の丸いボタンを作成することも色んな形のボタンを作成する事も可能です

要領としてはここの円形・多角形のフォーム・コントロールを作成するを参考にして下さい。
Private Sub Form_Resize()
    Result = CreateRoundRectRgn(0, 0, Check1.Width / Screen.TwipsPerPixelX, _
                            Check1.Height / Screen.TwipsPerPixelY, 20, 20)
    SetWindowRgn Check1.hWnd, Result, True
End Sub

投稿時間:2004/06/29(Tue) 18:52
投稿者名:エース
Eメール:
URL :
タイトル:
Re^2: トグルボタンのXP風表示
> > Windows XP風な角が丸くなったボタン(トグルボタン)を作成する方法
> WindowsXP でもボタンは角が四角ですが。
> 角を丸くしたボタンを作成したいなら、APIのCreateRoundRectRgn と SetWindowRgn を
> 使用すれば一応角の丸いボタンを作成することも色んな形のボタンを作成する事も可能です

早速の回答ありがとうございます。
WindowsAPIを使用することは思い付きませんでした。

ところで、やはりOS任せというかコントロール自体のプロパティなどで角を丸くするのはやはり難しいのでしょうか?
何を心配しているかというと、角の丸さが他のコントロールと異なるようになる可能性があるかな...と
極端な話ですが、マニュフェストを使用したVisual的な表示方法が将来変わってしまった場合、
プログラムで角を丸くしていると、そのコントロールだけ違った表示になります。
#考えすぎですかね... ^^;

投稿時間:2004/06/29(Tue) 19:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: トグルボタンのXP風表示
> 極端な話ですが、マニュフェストを使用したVisual的な表示方法が将来変わってしまった場合、
> プログラムで角を丸くしていると、そのコントロールだけ違った表示になります。
> #考えすぎですかね... ^^;

そこまで考えるなら、サポート打ち切りのVB6.0 を使っている方が問題では。

投稿時間:2004/06/29(Tue) 19:18
投稿者名:エース
Eメール:
URL :
タイトル:
Re^4: トグルボタンのXP風表示
> > 何を心配しているかというと、角の丸さが他のコントロールと異なるようになる可能性があるかな...
>
> WindowsXP でも .NET  でもボタンは角が四角のはずですが?
>
>
> > 極端な話ですが、マニュフェストを使用したVisual的な表示方法が将来変わってしまった場合、
> > プログラムで角を丸くしていると、そのコントロールだけ違った表示になります。
> > #考えすぎですかね... ^^;
>
> そこまで考えるなら、サポート打ち切りのVB6.0 を使っている方が問題では。

そうですね。
いろいろ考えすぎですね。
さきほどの方法で試してみます。

ありがとうございました。

投稿時間:2004/06/30(Wed) 00:33
投稿者名:通りすがり
Eメール:
URL :
タイトル:
Re^5: トグルボタンのXP風表示
表示するだけなら(コントロールをコードで作ってしまう?)
Form_Loadで
Call CreateWindowEx(0, "BUTTON", "Check1", &H50001003, 0, 0, 150, 20, Me.hWnd, 0, 0, 0)
CreateWindowExは宣言してね。

おもしろそうなので色々調べてみました。
上記のコードで出来ると思います。マニュフェストファイルを作成すると
WindowsXP風になりました。

内容の取得は自分で調べて下さい。

自分でもよく分かってません。(ウィンドウスタイルが&H50001003って何?)
だから間違っているかもしれません。
分かる人フォローして下さい。

#VBってマニュフェストファイル作ってもすべてがWindowsXP風にならないんだよね
#ListViewとかTabStripとか…

投稿時間:2004/06/30(Wed) 09:47
投稿者名:エース
Eメール:
URL :
タイトル:
Re^6: トグルボタンのXP風表示
> 表示するだけなら(コントロールをコードで作ってしまう?)
> Form_Loadで
> Call CreateWindowEx(0, "BUTTON", "Check1", &H50001003, 0, 0, 150, 20, Me.hWnd, 0, 0, 0)
> CreateWindowExは宣言してね。
>
> おもしろそうなので色々調べてみました。
> 上記のコードで出来ると思います。マニュフェストファイルを作成すると
> WindowsXP風になりました。
>
> 内容の取得は自分で調べて下さい。

レスありがとうございます。
ちょっと調べてみます。

ご指摘のようにVB6だと、確かに、マニュフェストだけでXP風にはならないですね。
フレームの中にコマンドボタンやオプションボタンを作成すると表示が変になったり
しますもんね。
(そういう場合はPictureBoxを先に貼り付け、その上にコマンドボタンやオプション
ボタンを貼り付ければいいのですが...)
やはり、花ちゃん(さん?)が言われるように.NETを使った方がいいのですかね。 ^^;

投稿時間:2004/06/30(Wed) 12:14
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^7: トグルボタンのXP風表示
> やはり、花ちゃん(さん?)が言われるように.NETを使った方がいいのですかね。 ^^;

使えるなら、.NETの方が対応は楽でしょうね。(^^;

最初にEnableVisualStylesメソッドさえ呼び出しておけば、
あとはプロパティの指定だけで済みますし。
http://www.ocv.ne.jp/~oratorio/junk/image/Checkbox.manifest.jpeg

投稿時間:2004/07/01(Thu) 11:53
投稿者名:エース
Eメール:
URL :
タイトル:
Re^2: トグルボタンのXP風表示
> 要領としてはここの円形・多角形のフォーム・コントロールを作成するを参考にして下さい。
> Private Sub Form_Resize()
>     Result = CreateRoundRectRgn(0, 0, Check1.Width / Screen.TwipsPerPixelX, _
>                             Check1.Height / Screen.TwipsPerPixelY, 20, 20)
>     SetWindowRgn Check1.hWnd, Result, True
> End Sub

上記の方法で試してみたのですが、他のマニフェストによって丸くなったコマンドボタン
と比較して、ボタンの色がおかしいようですし、角の丸さも見た目が異なってしまいます。

残念ですが、諦めたいと思います。

いろいろとレスをいただいた皆さん、本当にありがとうございました。

本来なら.NETを使用して回避したいところですが、環境の問題で難しいため諦めます。
画像までご用意してくださった、魔界の仮面弁士さんありがとうございました。
今後の参考にさせていただきます。