MDIのメモ帳もどきにセーブ・ロード機能をつけるには

このQ&Aのポイント
  • 「猫でもわかるプログラミングWINSDK編83章~85章のMDIのメモ帳もどきにセーブ・ロード機能を付けるには、どうすればいいんですか?」
  • MDIのドキュメントウィンドウのウィンドウハンドルを取得した後に、その子ウィンドウであるエディットボックスのウィンドウハンドルを取得する方法を教えてください。
  • 「猫でもわかるWindowsプログラミング第2版」のint MyOpen(HWND hEdit);int MySaveAs(HWND hEdit);に手を加えるだけで、テキストファイルを操作したいんです。
回答を見る
  • ベストアンサー

MDIのメモ帳もどきにセーブ・ロード機能をつけるには

猫でもわかるプログラミング WINSDK編 83章~85章のMDIのメモ帳もどきにセーブ・ロード機能を 付けるには、どうすればいいんですか? http://www.kumei.ne.jp/c_lang/sdk/sdk_83.htm http://www.kumei.ne.jp/c_lang/sdk/sdk_84.htm http://www.kumei.ne.jp/c_lang/sdk/sdk_85.htm MDIのドキュメントウィンドウのウィンドウハンドルを取得したら、 (これは前回質問して分かりました。hChildがハンドルですね?) その子ウィンドウであるエディットボックスのウィンドウハンドルを 取得したいんですが、どうすればいいですか? 要するに、「猫でもわかるWindowsプログラミング第2版」の int MyOpen(HWND hEdit);int MySaveAs(HWND hEdit);に手を加えるだけで テキストファイルを操作したいんです。

  • TKOZ
  • お礼率38% (8/21)

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

  • ベストアンサー
回答No.1

DocProcの中で、 >hEdit = GetWindow(hWnd, GW_CHILD); と取得できるようなので、 FrameWndProcのWM_COMMANDで処理するのであれば、 hChildから取得できるのではないでしょうか。 hEdit = GetWindow(hChild, GW_CHILD);

TKOZ
質問者

お礼

ありがとうございます。おかげで、セーブもロード機能も付ける事が 出来ました。

関連するQ&A

  • MDI(自作メモ帳)の子ウィンドウのHWND取得について

    はじめまして、TKOZという者です。 c言語とWINAPIでMDIの自作メモ帳を作っています。 ところで、MDIを使って、複数のドキュメントウィンドウでテキストファイル を保存したいのですが、選択されたドキュメントウィンドウの保存をする 際にそのドキュメントウィンドウのHWND取得をしたいのですが、 どうすればいいでしょうか? ソースコードはこれです。 http://www.kumei.ne.jp/c_lang/sdk/sdk_83.htm http://www.kumei.ne.jp/c_lang/sdk/sdk_84.htm http://www.kumei.ne.jp/c_lang/sdk/sdk_85.htm

  • CreateStatusWindowの第2引き数の書き換え

    ステータスバー HWND CreateStatusWindow( LONG style, // ウィンドウスタイル LPCTSTR lpszText, // 第1区画に表示される文字列 HWND hwndParent, // 親ウィンドウハンドル UINT wID // ステータスバーのID ); の第2引き数の書き換えはどのように行えばよいのでしょうか? 猫でも分かるC++の第59章 ステータスバーを作る その3 http://www.kumei.ne.jp/c_lang/sdk/sdk_59.htm を参考にしているんですが、ステータスバーの文字を、他のウインドウに 隠れてしまっても保持するようにさせる方法が分かりません。 第2引き数の書き換えができればそれは可能になると思います。 上記サイトではSetTimerとSB_SETTEXTを使用して、それと同等の表示効果を実現できていますが、 もっとよい方法(第2引き数の書き換え)などができるのではないかと思いました。

  • dllの作り方

    環境 WIN98 VC++6.0 MFC にて 猫でも~において 161章でdllを作りましたが、xxx.dllファイルは作成されますが、xxx.libが作成されません。 162章では両方作られ問題ありません。 作り方は、 メニューから「ファイル」「新規作成」「プロジェクト」(タブ)を選択します。そこから「Win32 Dynamic-Link Library」を選びました。 どうすればxxx.libが作られるのか教えてください。 161章 http://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm 162章 http://www.kumei.ne.jp/c_lang/sdk2/sdk_162.htm

  • パイプを用いたプロセス間通信について

    VC++2005にて下記サイトを参考にパイプを用いたプロセス間通信を行うプログラムを作成しています。 猫でもわかるプログラミング (1)第242章 匿名パイプ(サーバー側) http://www.kumei.ne.jp/c_lang/sdk3/sdk_242.htm (2)第243章 匿名パイプ(クライアント側) http://www.kumei.ne.jp/c_lang/sdk3/sdk_243.htm サーバー側からWriteFileでデータを送信する際に、 char型配列に入ったバッファデータ「szBuf」を送信し、 クライアント側のReadFileで同じく「szBuf」で受信していますが、 構造体Data ================== typedef TypeData{ int a; int b; char c[10]; }Data; ================== のオブジェクトdataを送信するには、WriteFile及びReadFileの箇所は どのように実装すれば良いのでしょうか? MSDNにはWriteFileの引数の型はLPCVOIDとあるため、 可能だと思うのですが。。。 もし解決策をご存知の方おられましたら、ご教示お願い致します。

  • コモンコントロールInitCommonControls

    久米井さんのサイトを参考にしてコモンコントロールの使い方を 調べているんですが、57章 http://www.kumei.ne.jp/c_lang/sdk/sdk_57.htm こちらではInitCommonControls関数です。 148章 http://www.kumei.ne.jp/c_lang/sdk2/sdk_148.htm こちらでは、InitCommonControlsExが使われていますが、 従来のInitCommonControls関数でも差し支えはありません。(多分) と書かれています。 その多分についての詳しい情報を教えてください。

  • 猫でも 20章

    LRESULTはlong型、DWORDはmsdnより、「32 ビットの符号なし整数、またはセグメント アドレスとそれに関連するオフセット」、SendMessageは返り値はLRESULT型。それで、猫でもわかるプログラミング20章(http://www.kumei.ne.jp/c_lang/sdk/sdk_20.htm)、の上のほうにリスト等の情報を取得するのに、 int getDlg(HWND hDlgWnd) { GetWindowText(GetDlgItem(hDlgWnd, IDC_EDIT1), edit_str, sizeof(edit_str)); ScrPos = GetScrollPos(GetDlgItem(hDlgWnd, IDC_SCROLL1), SB_CTL); ListNo = (int)(DWORD)SendMessage(GetDlgItem(hDlgWnd, IDC_LIST1), LB_GETCURSEL, 0L, 0L); ComboNo = (int)(DWORD)SendMessage(GetDlgItem(hDlgWnd, IDC_COMBO1), CB_GETCURSEL, 0L, 0L); return 0; } とあるのですが、SendMessageを(int)(DWORD)とキャストしているのはなぜなんでしょうか。(int)ではダメですか?

  • 些細な質問ですが、よろしくお願いします。

    現在C++のSDKを勉強中の身です。 「猫でも分かるプログラミング」の98章を勉強中に疑問が出てきました。疑問というよりも中身が知りたくて質問させていただきました。 98章 http://www.kumei.ne.jp/c_lang/sdk/sdk_98.htm いままで何気にやってきたことですが、「デバイスコンテキスト」とはどんなものなんでしょうか? 自分ではクライアント領域を描画するためのメモリ空間だと考えていたんですが、次にこんな関数が出てきました。 (HDC)CreateCompatibleDC(hdc) この関数で得られるものは「メモリデバイスコンテキストハンドル」 ・・・? デバイスコンテキストハンドルはメモリ空間じゃなかったの?と疑問を持ってしまいました。 じゃあメモリデバイスコンテキストとはなんぞや?とまたまた新たなる疑問が次々に発生・・・・・ そして例えばビットマップの表示ならば SelectObject関数により、ビットマップハンドルとメモリデバイスコンテキストハンドルを対応図づける?のですが、このSelectObject関数もなにをやっているのかつかみにくいです。「対応づけ」と理解していますが、それがあっているのかどうかも不明です。 よって解決したい問題は (1)「デバイスコンテキストハンドル」および「メモリデバイスコンテキストハンドル」とはなんなのか? (2)SelectObject関数は何をしているのか? すこし図々しい疑問で恐縮ですが、この疑問に答えられる方は返信よろしくお願いします。

  • 「猫でもわかるプログラミング」について。

    こんにちは。私は30代の男性です。 「猫でもわかるプログラミング http://www.kumei.ne.jp/c_lang/index_sdk.html」の「Windows SDK編 第1部 」→「第28章 ボタンを使う 」をコピーして、VCで動作を確認しようとしたのですが、うまく動作しませんでした。 VCに関しては初心者なので、さっぱりわかりません。どのようにしたらボタンが表示されるようになるのでしょうか?解決策をお教え頂ければありがたいです。 宜しくお願いいたします。

  • IP Address Controlから値を取得するAPI

    IP Address Controlから値を取得するAPI を探しています。 GetAddress? ネコでもわかる~の下記ページをみたのですが 取得までは記載されていなくて・・。 http://www.kumei.ne.jp/c_lang/sdk3/sdk_214.htm どなかたご教授願います 環境は VS 2008 SP1 Win32プロジェクト(C/C++)です。

  • MDIでのダイアログ生成

    VC++2005でMDIアプリケーションを作成しています。 ダイアログベースでは、DoModal()にてダイアログを生成していましたが、 MDIでのダイアログ生成の方法が分かりません。。 調べた結果、 (1)CreateWindow()にてクライアントウィンドウを作成 (2)CreateMDIWindow()にて子ウィンドウを作成 の順序で処理を行うことは分かりましたが、 関数の一部の引数に何を設定してやれば良いのかが不明です。。 ※下記はネット上にあったサンプルソースです。  「???」の箇所が不明な引数です。 (1) CreateWindow(   TEXT("MDICLIENT"), //MDICLIENT は固定です   NULL,   WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,   0, 0, 0, 0,   hWnd,       //メインウィンドウのハンドル←???   (HMENU)1,    //←???   hInst,       //インスタンスハンドル←???   (LPSTR)&ccs    //CLIENTCREATESTRUCT構造体のポインタ←???  ); (2) HWND CreateMDIWindow(  MDI_CHILD ,   //ウィンドウクラス名  TITLE ,     //ウィンドウのタイトルバーテキスト  0 ,       //ウィンドウスタイル。WS_MAXIMIZE(最大化表示)など  CW_USEDEFAULT , //X座標  CW_USEDEFAULT , //Y座標  CW_USEDEFAULT , //幅  CW_USEDEFAULT , //高さ  hClientWindow , //クライアントウィンドウのハンドル ←???  hIns ,      //インスタンスハンドル       ←???  0        //アプリケーション定義の値 ); なお、行いたい処理の流れとしては、 CTestDialogクラスより、CTest2Dialogクラスのダイアログを、 呼び出したいのです。 うまく説明できず申し訳ありませんが、 お詳しい方おられましたら、具体例など交えてご説明頂けると幸いです。 お手数ですが、どうか宜しくお願い致します。

専門家に質問してみよう