- ベストアンサー
CWndのメンバ変数m_hWndへの値の代入はいつ行われる?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
うそついてました(^^;; CWnd::CreateExと、CWnd::Attachになります。 CWnd::Createでは、実際にこの中で格納が行われるのではない点に注意してください。 具体的には、 1. ::SetWindowsHookExでフックをかける 2. ::CreateWindowExでウィンドウを作成する 3. フックのコールバック関数の中でCWnd::Attachを呼び出し、ウィンドウハンドルを格納する。 となります。 結構複雑ですねぇ。 目で追っただけなんで、間違ってるかも・・・ #VC++6.0 SP5で確認してます。 こういうコアなところについて知識を深めたいのであれば、 MFCより、Win32SDKだけでウィンドウアプリを作っていく 方がいいですよ。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>というか、MFCにて最初に初心者が躓くことは、SDKと違いすぎてSDKでやったあれはMFCでは見当たらないけどどうなっちゃったの?と言うことなんですよ。 うーん、SDK、API知ってればたいていのことはMFCでも何とかなるんですけどね。自分でソース追えるはずですし。 たとえば、CWndのメンバ関数なんて、ほとんどがウィドウハンドルをパラメータに持つAPIと、ウィンドウメッセージをそのままラップしただけですよ。 SDKでの機能が見当たらないなんてことがあったら、 使いたいAPIでソースの中身を検索して、使ってるクラス 調べればいいんですよ。 で、一部動作が違うようなものに出会ってつまずいたら、MFCのソースを除いて実装を確認すればいいだけです。 SDK、APIでの開発が難しくて理解できないから、MFCをはじめました、 なんて人ではMFCは使いこなせないと思いますよ。 結局、中身は一緒なんですから。 MFCは、さまざまなケースに対応可能なように、実装が複雑になっています(今回のウィンドウハンドルの格納のように) ただし、オブジェクト指向というところからみれば、実装は大して気にしなくていいはずです。 お約束的な毎回必要とするようなもの(特にウィンドウプロシージャの記述)を隠蔽してくれているだけでも楽をしていると思えばいいのでは? もちろん、SDKができる人にとってはですが。
お礼
コメントありがとうございました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
デバッグすれば分かりますよ。 CWndをnewしてステップ実行していけば。
関連するQ&A
- テキストボックスの値を変数に代入したい。
テキストボックスの値を変数に代入したいのですが、どういうコードを書けばいいですか? 例えばTextBox1の値を変数xに代入したいのですが。
- ベストアンサー
- Visual Basic
- 画像をクリックして変数に値を代入
JavaScriptで、 ある画像をクリックして変数に10という値を代入したいと思っています。 ご存知の方いらっしましたらよろしくお願いします。 (「button」などで行う方法はわかります。)
- 締切済み
- JavaScript
- ダイアログからビュークラスのメンバ変数へ代入するには?
プログラミング初心者です. Visual C++.netを使っています. Viewクラスから,Domodal()にてあるダイアログを呼び出しました. ダイアログ上のあるボタンを押したら,Viewクラスのメンバ変数へ1を代入するという処理をしたいと考えています. ラジオボタンやエディタコントロールであれば,DDXを利用すればよいと思うのですが,単なるボタンの場合はどうすれば,呼び出し元のViewクラスの値を操作(この場合,代入)出来るのでしょうか?
- ベストアンサー
- C・C++・C#
- bシェルでシェル変数に変数に代入されている値の個数
bシェル(Bourneシェル)で、シェル変数に変数に代入されている 値の個数を知りたいのですが、できるのでしょうか。 ----- #!/bin/sh A="1 2 3 4 5" echo $A 変数Aには、半角スペース区切りで、「1 2 3 4 5」と5個の値が 代入されています。 この設定されている値の個数、5を求めたいのですが、 どうすればよいのでしょうか。 Solaris8 Bシェル です。
- 締切済み
- Solaris系OS
- SQLのmaxで求めた値を変数に代入する
ex) select max(id) from table でかえってくる値を変数に代入するにはどのようにコーディングすればよいのでしょうか? ExcelVBAを使っています。
- 締切済み
- Visual Basic
- 代入したのに値が更新されないんです・・・
WindowsXP VC.netでプログラミングしているのですが、 PostMessageでコールされる関数のWPARAMを publicで宣言した変数に代入しても、 値が更新されないんです。。。 public: WPARAM m_wWP; とヘッダで定義して、 WPARAMの値が10であった時、 long testclass::PostCallFunc( WPARAM wparam, LPARAM lparam) { m_wWP = wparam; } とやってもm_wWPが10にならないんです。。。 とっても困っています。 ご存知の方がいらっしゃいましたらご教授ください。 よろしくお願いします。
- 締切済み
- C・C++・C#
- 配列を使わずに、数字(連番)を使用した変数に値を代入したい。
配列を使わずに、数字(連番)を使用した変数に値を代入したい。 お世話になっております。 配列を使わずに、数字(連番)を使用した変数($a1,$a2,$a3・・・)に、 forループを使って、値を代入したい。 #================================= for($i;$i<10;$i++){ $a??? = 10; #←ここがわかりません。 } #================================= どなたかご存知の方、ご教授ください。 よろしくお願いします。
- ベストアンサー
- Perl
- PHP4で、メンバ変数の値を忘れてしまう2
PHP4での質問です。 前の質問がわかりにくかったので、書き直しました。 オブジェクト指向的にいかがなものかとは思いますが、オブジェクトのメンバ変数を直接外部から変更したいと思います。 ---------<a.php>---------- class myClass { var member = 0; } ---------<b.php>---------- $ary_c = array(); for ($i=0; $i<10; $i++) { $c = new myClass(); $c->member = 1; echo "(1)c->member=".$c->member; array_push($ary_c, $c); } foreach ($ary_c as $c) { echo "(2)c->member=".$c->member; } ------------------------------ 以上の様なソースで、(1)のデバッグライトでは、メンバ変数memberの値は1であるのに、(2)のデバッグライトでは、0になってしまいます。 この原因がお分かりのかた、もしよろしければ知恵をお貸し下さい。 よろしくお願いします。
- ベストアンサー
- PHP
お礼
回答ありがとうございます。 >こういうコアなところについて知識を深めたいのであれば、 >MFCより、Win32SDKだけでウィンドウアプリを作っていく >方がいいですよ。 というか、MFCにて最初に初心者が躓くことは、SDKと違いすぎてSDKでやったあれはMFCでは見当たらないけどどうなっちゃったの?と言うことなんですよ。