• ベストアンサー

MDI起動時に空のウィンドウが開かないようにするには?

birの回答

  • ベストアンサー
  • bir
  • ベストアンサー率44% (11/25)
回答No.1

MFCで作ったものであれば、CxxApp::InitInstance()のProcessShellCommand()を呼んでる直前で cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; を入れてやれば起動時にドキュメントが新規作成されなくなります。 詳しくはCCommandLineInfoクラスのヘルプを参照してください。 Win32APIで作られたものだったらわかりませんが、子ウィンドウが作られる所でブレークを張ってコールスタックを見ればある程度追えるんじゃないでしょうか。 例) // DDE、file open など標準のシェル コマンドのコマンドラインを解析します。 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; // コマンドラインでディスパッチ コマンドを指定します。 if (!ProcessShellCommand(cmdInfo)) return FALSE;

ystk
質問者

お礼

ありがとうございます。 cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; でうまくいきました。とても助かりました。 お盆休みでお礼が遅れてしまい申し訳ありませんでした。 m(_ _)m

関連するQ&A

  • MDIでプロジェクトを作成しSDIとして使用する方法

    次の開発環境でWindowsアプリを作成するにあたり、 アプリケーションの種類をSDIとすべきかMDIと すべきか迷っています。  WindowsXP Professional  Visual Studio.NET 2002  VC++ MFC そこで、質問なのですがアプリケーションの種類を MDIとしてプロジェクトを作成した後にSDIと同じ動き となるようにコードを書く(変更する)ことがで きますか。 例えば、プロジェクトを起動させると、常に1つの ドキュメントがメインウィンドウ全体に表示される。 ご存じの方すいませんがよろしくお願いします。

  • MDIアプリケーションの子ウィンドウとしてOfficeを起動する方法

    MDIアプリケーションを作成しているのですが、行き詰ってしまったので質問させていただきます。 開発環境はVB.net2008Expressを使用しています。 タイトルの通りなのですが、MDIの子ウィンドウとして既存のプログラムやソフトウェア(今回はOfficeのWordを起動しようとしています)を起動する方法を調べています。 Dim ass As System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom("起動したいプログラムのFullName") Dim childFrm As Form = ass.CreateInstance("起動したい実行ファイルのメインフォームのクラス名") childFrm.MdiParent = Me childFrm.Show() という方法を見つけて試してみたのですが、"起動したい実行ファイルのメインフォームのクラス名"がわからずオブジェクト参照されませんでした。 知識不足でどういった検索ワードで検索したらいいかもわからない状態です。どうか皆さんのお知恵を拝借させていただけないでしょうか?

  • MDIで同時起動するドキュメント数の制限方法

    次の開発環境でWindowsアプリを作成するにあたり、 アプリケーションの種類をMDIとします。  WindowsXP Professional  Visual Studio.NET 2002  VC++ MFC そこで、質問なのですがMDIで同時起動する ドキュメント数を制限する方法はありますか。 例えば、ウィンドウ内で開くドキュメント数を 4つまでに制限する。 .NET上での設定なのか、コード上で行うのか。 または、参照するサイトやサンプルプログラム、 書籍、ヒントとなる関数やコードなど、なんでも よろしいのでご存じなことを教えて頂けないで しょうか。

  • VC++6.0,MDI,子ウィンドウのタイトルが変わる!?

    VC++6.0でMDIプログラムを作成しているものです. 子ウィンドウをダブルクリックすると「ファイルを開く」のコモンダイアログを呼び出し,そこに選択した画像ファイルを表示させるプログラムを作ったのですが,ついでにタイトルバーに開いたファイル名を以下のようにして表示させました. // Viewクラスにて CFileDialog dlg(TRUE, "bmp", "*.bmp",               OFN_HIDEREADONLY|         OFN_OVERWRITEPROMPT,        "BITMAP(*.bmp)|         *.bmp|JPEG(*.jpg)|         *.jpg||"); if (dlg.DoModal() != IDOK) { return; } GetParent()->SetWindowText(dlg.GetFileName()); そして,画像を表示したウィンドウとは別のウィンドウをアクティブにすると,タイトルバーに表示したファイル名がウィンドウを生成したときのタイトルに戻ってしまいます. 子ウィンドウが何個あっても,表示している画像のファイル名をタイトルバーに表示したいのですが,どうすればいいのですか?

  • ウィンドウの作成

    VC++のMDIで基本クラスをCFormViewにしてアプリケーションを作成しています。  フォームにボタンをおいて、それを押すと別のフォーム(ウィンドウ)が表示されそこにカメラの動画像がでるようにさせたいのですがどのようにしたらよいでしょうか??今、別のフォーム(ウィンドウ)を表示させるところで悩んでいます…

  • 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クラスのダイアログを、 呼び出したいのです。 うまく説明できず申し訳ありませんが、 お詳しい方おられましたら、具体例など交えてご説明頂けると幸いです。 お手数ですが、どうか宜しくお願い致します。

  • ASP.NET 空のフォルダを含む発行の方法

    Visual Web Developer 2010 Express で Windows Server 2008 R2 上の IIS にASP.NET Web アプリケーションの発行を行なっているのですが、空のフォルダが発行先に作成されません。 (1)プロジェクトのプロパティで配置する項目を「このプロジェクトに含まれる全てのファイル」にし、発行プロファイルで「発行先に余分なファイルを残す」とするか、 (2)対象のフォルダ内に何らかのファイルを格納する であれば発行先に作成されることはわかったのですが、どちらも不要なファイルが発行先にできてしまうので、この方法はやりたくありません。 空のフォルダを発行対象に含めるにはどうすればよいでしょうか。 よろしくお願いします。

  • 【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クラスの場合は実装できるような気がするのですが。。 フォームビューだと、キャンセル処理は実装不可能なのでしょうか? また、不可能だとしたらウィンドウを閉じる処理はどのように実装すればよいのでしょうか? 解決策をご存知の方おられましたら、お手数ですがご教授宜しくお願い致します。

  • 空のウィンドウが立ち上がり操作できない

    MacでIllustrator CS3を使用しています。 ソフトを立ち上げると、タイトルバーに「Adobe Design Suite Premium CS3」とだけ書かれた空のウィンドウが出てきます。 このウィンドウは最小化は出来ますが、消すことが出来ません。 また、「Illustratorの終了」をはじめ、メニューバーからの操作が出来なくなってしまいます。 (終わらせるには、Dockからアイコンを右クリック→強制終了しか方法がありません) 既存のファイル(たとえばpsファイルなど)をIllustratorで開くと、ファイルの内容は表示されます。 また、ツールバーは使えるため、不自由ながらもファイルを編集することは一応可能です。 (ただしメニューバーからファイルの保存は出来ないので、実際は使えない状況ですが) これまでも同じマシンで同ソフトを使用しており、とくに不具合はなかったのですが、 この症状の原因として何が考えられるでしょう。 また、解決策としてどのような方法があるでしょうか。 よろしくお願いいたします。

  • EXCELのウインドウ形式について

    EXCEL2000のSDIについて初歩的な質問です。 モニターが二つあるのでexcelのウインドウを 2つ(SDI化?)に分けたいのですができないのでしょうか? WEBで調べたのですが、EXCEL2000はMDIの アプリケーションでありウインドウの中に 子ウインドウが複数表示される仕組みしかできない のでしょうか? ツール→オプション→表示→ 「ウインドウをタスクバーに表示する」を チェックしたのですがSDIになってないような気がします。