• ベストアンサー

Viewウインドウに直接ボタンを貼り付けるには

VC++6.0 APPWizard(exe) SDI で作成したViewウインドウにボタンを貼り付けたいのですが、どうすればよいか教えてください。 普通にダイアログにボタンを貼り付ける場合のように簡単ではないのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.2

ANo.1です。 以前APIで組まれたアプリをMFCを使って書き換えたことがあり、そのときいくつかの書籍をみて、試行錯誤しながらつくりました。 MFCからwindowsプログラムをはじめ、後からAPIを学び直しました。 なので私の方法がどれほどまっとうな方法か解りませんが… ボタンウインドウをAPIでつくるのも可能ですが、CBUTTONクラスを使えば良いではないかと思います。 viewクラスのメンバとしてボタンクラスのインスタンスをもち、viewクラスのOnCreate()ハンドラ(追加します)でボタンをcreateすればよいのだと思います。 また追加したボタンに関するハンドラ、メッセージマップもウイザードではなく、手で(コードエディタで)入力しました。 あと、ボタンをShowWindow(TRUE)する必要があります。 いまprojectを作ってみて気が付きました。 とりあえずviewのOnCreate()の中でやってみました またAPIを使う場合ですが、ウインドウハンドルHWNDはそれぞれのウインドウ(今回はview)がメンバ変数m_hWndとして持っています。 インスタンスハンドルHINSTANCEはアプリケーションクラスがメンバ変数m_hInstanceとして持っています。 それと >とすれば、HWND, HINSTANCEとかは、VC++では何に対応するのですか? 書き間違えかも知れませんが、VC++ではなく、MFCですね。 VC++は言語、MFCはライブラリです。 #実は私も当初混同していました(汗)

abingo333
質問者

お礼

これは参考になります、ありがとうございました。 日数はかかると思いますが、練習がてら取り組んでみます。

その他の回答 (2)

  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.3

すいません。以下は私の勘違いです。 VC++とC++を取り違えました(大汗)。 >それと >>とすれば、HWND, HINSTANCEとかは、VC++では何に対応するのですか? >書き間違えかも知れませんが、VC++ではなく、MFCですね。 >VC++は言語、MFCはライブラリです。 >#実は私も当初混同していました(汗)

  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.1

ドラッグアンドドロップではできず、コードを書かなければなりません。

abingo333
質問者

補足

なにかこのあたりを記述した書籍、サイト等をご存知ないですか? ボタンウインドウを作ることからはじめないといけないのでしょうね。 ソースウインドウでCreateWindow(と入力すると、 HWND CreateWindow(......., .. HWND hWndParent, .. HINSTANCE hInstance, .. ) というWinAPI関数がでてきますが、これを使用すればよいのですか? とすれば、HWND, HINSTANCEとかは、VC++では何に対応するのですか? たとえば、GetParent( とたたくと、 CWnd* とガイドがでるので、HWNDはCWndと似たり寄ったりかなとは思いますが。

関連するQ&A

  • ウインドウのビューをリストビューにするには?(VC++6.0)

    VC++6.0 MFCにて MFC AppWizardにてプロジェクトを作成します。 SDIを選択し、後はデフォルトのままです。 そうやって作ったベースとなるコードを実行すると、 普通にウインドウが開きます。(当然か) そのウインドウのビューをリストビューにしたいのですが、 どこにどのようなコードを書けば良いのでしょうか?

  • ボタンが押された事を検知するには?

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <目的> 1.ダイアログにボタン1を配置する 2.処理A(無限ループ)を開始する 3.処理Aの先頭でボタン1が押されたか判断する 4.ボタン1が押された場合処理Aを終了し、処理Bを行う というプログラムを作成する。 <質問> 目的のプログラムを作成するには、ボタン1が押された事を検知する 必要があると思うのですが、その方法が分かりません。 ボタンが押された事を検知するにはどうしたら良いのでしょうか? 宜しければご指摘お願い致します。

  • 複数のビュー表示について

    MFCプログラミングをしています。 AppWizardでMDI(SDI)アプリを作成しました。 今、1つのドキュメント(データ)に対して、 2つのビューを作らなくてはなりません。 (2つ目はOpenGL表示) フレームウィンドウを生成して Create関数のコーディングまでは、 何とか書けましたが、 実行すると、異常終了していまします。 というのも、 新しいウィンドウとドキュメント、ビューの 関連づけがされていないからだと思います。 ウィザードで作られる場合は、 フレームウィンドウとドキュメント、ビューの 関連づけはドキュメントテンプレートを 使っているようですが、 実行後に独自に作る場合は どのようにすれば良いか分からず、困り果てています。 どなたかご指導又はヒントをよろしくお願い致します。

  • ダイアログ、ボタンについて

    VC++でプログラミングしています。 MFC AppWizard(exe) でダイアログベースで造っています。 以下の方法を教えてください。 ・EXE起動時、ダイアログのサイズを変更したい。 起動時に画面サイズをチェックして、画面いっぱいの大きさにしたいため。 ・EXE起動後、ボタンに表示している文字列を変更したい。 識者の方、ご教授願います。

  • スレッドの作成と起動

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <質問> ボタンを押すとOnButton()に入ります。 OnButton()内でワーカースレッドを起動させたいのですが、 どのようにコーディングするのでしょうか? スレッドの作成方法も分かりません・・。 宜しければご指摘お願い致します。

  • スケルトンの中のどこでウィンドウが生成されているのか?

    VC++、MFCです。 MFC AppWizardでSDIベースのスケルトンを生成した時点で、既にウィンドウが作られるコードがソース内に存在するはずなのですが、単純にCreate関数を探しても見当たりません。 一体どこでウィンドウが作るコードはどこにあるのでしょうか?

  • ボタンの背景色を変更する方法

    VC++のAPPWizardで作成した画面にボタンを 配置しています。 このボタンの背景色を変更するには どのようにしたらよいのでしょうか? よろしくお願いいたします。

  • スピンボタンの使い方

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <症状> ダイアログエディタでスピンボタンを配置し、ClassWizardでCSpinButtonCtrl型のメンバ変数を追加しました。 その後コンパイルするとエラー出ないのですが、実行出来ませんでした。 デバッグをすると、「ハンドルされていない例外は、試作.exeに あります:0xC0000005: Access Violation。」 が表示されて、それ以上先には進めません。 メンバ変数を削除すると、症状は無くなります。 <質問> メンバ変数を追加するだけで何故このような症状が出るのでしょうか? スピンボタンでは 初期値40 レンジ:0~80 増加幅:10 減少幅:-10 で設定したいのですが、どのようにしたら良いのでしょか? 宜しければご指摘お願い致します。

  • MFC VC++6.0 DestroyWindowの実装場所について

    [開発環境]:Visual C++ 6.0 現在、Visual C++ 6.0を使ったプログラミングの勉強をしています。 MFC AppWizard (exe)でSDIプログラムのtest1プロジェクト作成後、メインフレームにボタンを実装し、そのボタンを押下するとモードレスダイアログを表示するというアプリケーションを作っているのですが、ダイアログを終了させる時のDestroyWindowの実装場所と実装方法が分かりません。 ダイアログ用のクラスはCmyDialogとしていますが、ダイアログの終了ボタンを実装した場合、そのボタン処理の中すなわちCmyDialogクラスのなかの関数で行うべきなのでしょうか?それともダイアログの作成と同様にメインフレームがわの処理(CTest1Viewクラスでの処理?)として行うべきなのでしょうか?この場合にはどのような場所でどのようなタイミングで実装すればよいのか分かりません。 ご存じの方、これらについて御教授お願いします。 以下プログラムの一部を記載します。 -test1view.cppの一部-(ここでダイアログの作成と表示をしています) void CTest1View::OnButton1() { CmyDialog* myDLG = new CmyDialog; myDLG->Create(IDD_DIALOG1,this); myDLG->ShowWindow(SW_SHOW); }

  • 【MFC】キャンセルボタン処理が実装できない

    VC++2005(MFC)にて下記サイトを参考にMDIアプリケーションを作成しています。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_MDI1.html 手順として、プロジェクトを新規作成し、MFC AppWizard(exe)で 新規プロジェクト名をMDITest1に設定し、アプリケーションの種類はMDI、 ビュークラスCMDITest1Viewの基本クラスはCFormViewとします。 リソースビューより、自動生成されたフォームの上に、 Buttonを配置し、イベントハンドラOnBnClickedButton1()内にて、 IDCANCEL()処理にて、ボタン押下時のウィンドウを閉じる処理を 実装したいのですが、コンパイルエラーが発生します。 基本クラスがCDialogクラスの場合は実装できるような気がするのですが。。 フォームビューだと、キャンセル処理は実装不可能なのでしょうか? また、不可能だとしたらウィンドウを閉じる処理はどのように実装すればよいのでしょうか? 解決策をご存知の方おられましたら、お手数ですがご教授宜しくお願い致します。

専門家に質問してみよう