• ベストアンサー

BUTTON型のウィンドウに入力欄を作りたい。

uootの回答

  • uoot
  • ベストアンサー率75% (6/8)
回答No.2

灰色のウィンドウというのは、正しくは 3D 表現の表面色で表示されているウィンドウのことだと思います。このようなウィンドウで普通に思いつくのは「ダイアログボックス」です。 ダイアログボックスにエディットボックスを配置するには #1 さんの通りリソースエディタなどでダイアログボックステンプレートのリソースを用意するのが一般的です。ダイアログボックステンプレートリソース(または、ダイアログリソース)をダイアログボックスとして表示させるためには DialogBox() のほかに、 CreateDialog() と、それぞれのパラメータを渡せるバージョン DialogBoxParam() 、 CreateDialogParam() があります。 ちなみに、ダイアログボックステンプレートはメモリ上にゼロから作ることもできます。 Internet Explorer のインターネットオプションを開いたときのウィンドウだとすると、「プロパティシート」と呼ばれるものになってしまいますが、こちらは作成方法が通常のウィンドウと異なります。プロパティシートでは各タブページにダイアログボックスが表示されるようになっていますので、こちらもダイアログボックステンプレートを用意する必要があります。 プロパティシートの使用方法は各種ドキュメントを参照してください。 ダイアログボックスおよびプロパティシートのどちらも、新しいウィンドウクラスを作る必要はありません。

_yamamoto_
質問者

お礼

どうもありがとうございます。 ダイアログボックスを作らなければならないようですね。 例えばInternet Explorer のインターネットオプションを開いた時、”全般”のタブの欄にホームページのアドレスをエディットする場所がありますが3D表現で、くぼんだエディット欄になってますよね。 あれをウィンドウでやりたいのですができますか?

関連するQ&A

  • VC++でウィンドウを作る場合・・・

    えっと、VC++初心者です。 VC++でウィンドウを作るのに色んな方法があるようですが、 WIN32APIの Create関数(CreateEX関数含む)と CreateWindow関数(CreateWindowEX関数含む)の 使い分けの違いがよく分かりません。 どういったときにどちらを使うのがよいのでしょうか? どうぞ宜しくお願いします。

  • CreateWindow で作ったウィンドウが白いんですが

    VC++ 6.0 で CreateWindow で作ったウィンドウが 白いんですが、これを、メッセージボックスと同じ色(鉛色?)にするにはどうしたらいんでしょうか。 あるいは、その逆、チェックボックス等に付属するテキスト文字の背景を白くできればそれでもかまいません。 (デフォルトで灰色なので)                  ↓ CreateWindow("BUTTON", "このテキスト背景が灰色",        WS_CHILD | WS_VISIBLE |        BS_AUTOCHECKBOX,        Window_Width,        Window_Height,        NULL,        NULL,        hWnd,        NULL);

  • Win32APIを始めたのですが・・・。

    Window Handleについての質問です。Win32APIではCreateWindow()でチェックボックスを作ることが出来るのですが、 C++でプログラミングしていたところ、困ったことになりました。 まず、クラスのメンバーとしてHWND m_Hwndを宣言し、メンバー関数(CreateChk())において m_Hwnd = CreateWindow(...)とし、WM_CREATEのメッセージ処理内で関数CreateChk()を呼び出して チェックボックスを作るようにしたのですが、WM_CREATEのメッセージ処理を終えると同時にm_Hwndの内容が意味を持たないものに 変わってしまい、チェックボックスの状態を利用することが出来ません。 変数の寿命に関係したものだとは思うのですが、クラスを用いたオブジェクト指向プログラミングも始めたばかりでよくわかりません。 どなたか対処方法をご存知でないでしょうか?

  • ExcelVBAでAPIを使って外部ウインドウのエディットテキストを取得する方法

    ●やりたいこと ExcelVBAで、APIを実行し、外部ソフトのウィンドウに含まれている エディットテキストを取得して、セルに出力したい 使用する関数・宣言、できればコードを教えていただけませんでしょうか。 イメージはこちらをご参考いただけると幸いです。 ​http://situmon-img.blogspot.com/2008/08/1.html​ 変数hwindowに親ウィンドウのハンドルが取得されています。 エディットボックスのハンドル、IDは分かりません。 エディットボックスのハンドルを取得し、 分かっているクラス・ハンドルの文字列を取得 といった流れになるのではと思っております。 変数にさえ文字列が取得できれば、 当然ですが、Range("B2")=変数 で大丈夫です。 変数は、ひとつを使いまわしで構いません。 変数をエディットテキストの数だけ用意しても構いません。

  • 進行状況表示のウィンドウ

    進行状況表示のウィンドウ ソフトの中である程度時間のかかる処理をしている間、ソフトが固まったように見えるのを防ぐために、進行状況を表示する小さなダイアログボックスを作ろうと思いました。 そして、新しいウィンドウを作る方法は、ダイアログのリソースを作っておいてDialogBox()関数でそれを呼び出すか、ウィンドウクラスを登録してCreateWindow()関数でウィンドウを作る方法と二通りあると思いますが、どちらが向いていますか?? 作るウィンドウには進行状況の%表示とキャンセルボタンを作るだけのモーダルなもので、「時間のかかる処理」は_beginthreadex()関数で別スレッドを立てて行う予定です。 環境は、Visual C++ 2008 のWin32アプリです。

  • Win32 API エディットボックス内文字列の色変更

    Win32 APIについて質問です。 (Microsoft Visual Studio .NET 2002、XP、API) エディットコントロールに表示されている文字列の 色(またはフォント)を変更したいと思っています。 エディットボックスに「0」という数字を入力し その後「更新ボタン」をクリックすると、「0」の 文字色が赤色(または赤太文字)へ変更される という具合です。 Win32 APIを始めて間もない者(Cも始めて間もないです) なので、かなり苦戦しております。 「SendMessage() 」みたいな関数を使用しエディット ボックスのハンドルへメッセージを送ることで 実現させるのかなぁ程度しか理解しておりません。 ご存じの方すいませんがよろしくお願いします。

  • ウィンドウクラスの指定について

    いつもお世話になっていますGedankenです。 ウィンドウズプログラムについて素朴な質問があります。 Win32 API プログラミング(C言語)ではRegisterClass などで登録した ウィンドウクラスをCreateWindow を使う時"文字列"で指定すると思いますが なぜそんなに回りくどいことをするのでしょうか。 普通に考えれば構造体へのポインタなどで指定した方がスマートだと 思うのですが、どうなのでしょうか。 多分ちゃんとした理由があると思いますが、そこについて解説お願いします。 よろしくお願いします。

  • エディットボックスに入力されている文字列が、スペースだけで構成されているかどうか。

    VC++6.0・Win32APIを用いて、ウィンドウズアプリケーションを作成しています。 エディットボックスに入力されている文字列が、スペース(全角スペース又は半角スペース)のみ (それらの組み合わせでも構わない)で構成されているかどうかを判別するアルゴリズムを教えてください。 ヒントでも構いません。 エディットボックスの作成や、そこからの文字列の取得については理解しています。 あっ、でもよく考えてみたらエディットボックスかどうかは関係ないですね(^_^;) 『ある文字列が・・・』で十分ですね。 お手数をお掛けしますが、よろしくお願いいたします。

  • リストビューの選択状態を取得するメッセージはありますか?

    リストビューが選択状態(1行が青色や灰色の背景になる状態)にあって、エディットボックスが空欄では無いときに、 あるボタンを有効にするという処理をしたいと思っています。 リストビューが選択されていることを教えてくれるメッセージがあれば、教えてください。よろしくお願いします。 環境:Win32 API, VC++6.0

  • VC6でエディットボックスの扱いについて

    エディットボックスに複数行のメッセージを送りたいのですが、SetDlgItemText関数を使うと、いつも同じところから文字が出力されてしまうので,うまく行きません。 ちなみに、MFCは使わず、WindowsのAPIでコードを打っています。 どなたか解決方法をご存知の方いらしましたら、宜しくお願いします。