• 締切済み

モードレスフォームが開かない

モードレスフォームとモーダレスフォームを開く二つのメソッドを実装したActiveXDLLを作成しました。フォームはクラスモジュールのグローバル変数として定義し、DLLがロードされた際にフォームもNEWし、上記二つのメソッドでは単にshow(モーダル/モードレス)を指定している単純なDLLです。 そのDLLをCで作成したクライアントから使用した際に、モードレスウィンドウ表示メソッドは正しく動作してウィンドウも開くのですが、モーダレスウィンドウの場合は画面が開かず、またエラーメッセージも表示されないまま処理がCクライアント側に戻ってきます。 エラーメッセージが出ないので原因が特定できないのですが、対処方法でなくとも、調査するポイントやヒントを教えていただきたいと思っております。 よろしくお願いします。

みんなの回答

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.1

すみません、「モードレス」と「モーダレス」の意味が分かりません(^^; 「モーダル(modal)」か「モードレス(modeless)」かは分かるんですが。 # というか「モーダレス」とは言わないような気が・・・ >モードレスウィンドウ表示メソッドは正しく動作してウィンドウも開くのですが、 >モーダレスウィンドウの場合は画面が開かず、またエラーメッセージも表示されないまま この質問内容だと、モーダルかそうでない(=モードレス)かは、不具合に関係ないと思うのですが。 もし、モーダルウインドウが表示されないならSetParent()などで、親Windowを明示する必要があったんじゃないでしょうか。

関連するQ&A

  • ActiveXDLL(VB)にウィンドウハンドルを受け取るメソッドを用意したい

    VB6で作成したActiveXDLLに、ウィンドウハンドルを渡すためのメソッドを実装したいと思います。 ActiveXDLLを使用するクライアントはCで作成しており、クライアント側で表示するウィンドウのボタンを押下した際にActiveXDLLのCOMコンポーネントをインスタンス化して、クライアントのウィンドハンドルをCOMコンポーネントに渡したい次第です。 VBでウィンドウハンドルを受け取るFunctionを作成したことがなく、また調べてみたものの解決策を見出すことができませんでしたので、よい方法や参考HPがあれば教えていただきたいと思っております。 よろしくお願いいたします。

  • GSviewの動作について

    先日、LATEXはじめの一歩(著 土屋 勝)付属のDVDからTeXをインストールしました。本の内容に従いダウンロードできたのでGSview 4.8のテストをと思い、元々入っていたファイル(上手くいくと虎の絵が表示されるらしいのですが)を開くと Failed to load C:\gs\gs9.04\bin\gsdll32.dll, error 126 指定されたモジュールが見つかりません。 Failed to load C:\Program Files (x86)\Ghostgum\gsview\gsdll32.dll, error 126 指定されたモジュールが見つかりません。 Failed to load gsdll32.dll, error 126 指定されたモジュールが見つかりません。 と出てしまい正しく表示されません。 ファイルを見るようにするにはどうすればよいのでしょうか。ご存知の方がおられれば教えてください。

  • c¥programdata¥arush¥message.dll開始中に

    c¥programdata¥arush¥message.dll開始中にエラー発生 モジュールが見つかりません。 と立ち上げ時に表示されるようになりました。 表示させないようにする方法をどなたか教えていただければありがたいです。osはwindows7です。

  • モジュール異常

    c:windows¥system32¥spads.dllを読み込み中にエラーが発生しました指定されたモジュールが見つかりませんでした。又 c:windows¥system32¥gzmrotate.dllを読み込み中にエラーが発生しました指定されたモジュールが見つかりませんでした。 というメッセージが起動後出てきます。回避の仕方をアドバイスお願いします。

  • エラーメッセージが分からないので教えて下さい

    PCを立ち上げたら、必ず「C:WINDOWS\DOWNLO"1\Cns.dllを読み込み中にエラーが発生しました。指定されたモジュールが見つかりません」 というメッセージが出てきます。どうすればエラーメッセージが出なく なるのか教えて下さい

  • VB2005 フォームロード時にメッセージ表示

    VB素人です。 VB2005で、あるフォームクラスを起動した際の フォームロード処理で、エラー判定処理(DBデータを取得して判定)を 行っています。 エラーと判定された場合、メッセージBOXを表示するのですが、 フォームが表示される前に、メッセージのみが表示されてしまいます。 フォームが表示→メッセージが表示(同時も可)にするには どのようにすれば良いのでしょうか? アドバイスをお願いします。

  • 起動するたびにエラーメッセージが出ます

    Windowsを起動するたびに下記のメッセージが表示されます。 RUNDLL C:\WINDOWS\DOUWNLO~1\CnsMin.dllを読み込み中にエラーが発生しました。 指定されたモジュールが見つかりません。 出なくなるようにすることは出来ますか?

  • わけがわかりません

    素人なので、全く意味がわかりません。よろしくお願いいたします。 立ち上げ、デスクトップが表示されると、必ず「C:¥WINDOWS¥Downlo~l\cnsMin.dllを読み込み中にエラーが発生しました。指定されたモジュールがみつかりません」というメッセージが出ます。どういう意味でしょうか?

  • GSviewのインストールについて

    先日、美文書作成入門(5版)付属のDVDからtexやghostscriptなどをインストールしました。 しかし、GSviewは入っておらず、インストールされなかったので、Gsview4.9をwebからダウンロードし、インストールしました。しかしインストール後、起動しても、 「Ghostscript can not be found on your computer.You will need to download and install AFPL Ghostscript from http://www.cs.wisc.edu/~ghost/」 と表示されてしまい、epsファイルを開こうとしても、 Ghostscript registry entries not present. Unknown in Comments section at line 5: %%DocumentFonts: (atend) Unknown in Trailer section at line 39365: %%DocumentFonts: Helvetica Failed to load C:\Program Files\Ghostgum\gs7.04\bin\gsdll64.dll, error 126 指定されたモジュールが見つかりません。 Failed to load C:\Program Files\Ghostgum\gsview\gsdll64.dll, error 126 指定されたモジュールが見つかりません。 Failed to load gsdll64.dll, error 126 指定されたモジュールが見つかりません。 Can't load Ghostscript DLL などと表示され、開くことができません。 きちんとGs viewをインストールし、epsファイルが見られるようにするためにはどうすればよいのでしょうか。知っている方がいたら教えてください。

  • DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。

    C++プロジェクト(Windowsフォームアプリ)を作成し、あるサイトで公開されているDLLを実装し→コンパイル→デバッグ実行させた所、問題なく動作が確認できたのですが、 クラスライブラリで作成したC++新規プロジェクトに同じくDLLを実装し、同一ソリューション内にC#又はC++でWindowsフォームアプリを作成し、先に作成したクラスライブラリプロジェクトを参照させる形態で作成した際に、コンパイル→デバッグ実行させた所、コンパイルは通ったのですがデバッグ実行時に、DLLを参照しようとしたタイミングで 「DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。」 というエラーが発生してしまいました。 何故Windowsフォームアプリ単体時にはDLLが参照できたのに、クラスライブラリにし複数プロジェクトにして実行するとエラーが発生してしまうのか、どなたか原因、解法等 心得ておられましたら御指南のほど宜しくお願いします。 以下 事象詳細です。 開発環境:Microsoft Visual Studio 2008 公開DLL:USB-IOを制御する目的のUSBIODLLDemo.dllというDLLです。 <成功時> 1.C++プロジェクト(Windowsフォームアプリ)新規作成 2.DLLがインストールされているフォルダから.dllファイル, .hファイル、.libファイルをコピーしプロジェクト新規作成したフォルダにコピーする 3.プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイル に.libファイル名を記入 4.ダウンロードの.hファイルから __declspec(dllimport) BYTE __stdcall GetNo(void); __declspec(dllimport) void __stdcall P1Write(BYTE newVal); __declspec(dllimport) BYTE __stdcall P1WriteBit(BYTE Bit, BOOL Tf01); __declspec(dllimport) BYTE __stdcall P1Read(void);  をコピーしstdafx.h へ貼付け。 5.stdafx.hへ貼り付けた宣言がこのままではコンパイルが通らなかったため #define BYTE unsigned char #define BOOL bool  を追記。 6.ダウンロードしたDLLの関数を使用した一文を実装 7.コンパイル→デバッグ実行→ 無事実行完了! <エラー発生時> *下記事象ではC#Winフォームアプリを挙げていますがC++Winフォームアプリで試しても同じ結果になりました。 1.C++プロジェクト(クラスライブラリ)新規作成 2.DLLがインストールされているフォルダから.dllファイル, .hファイル、.libファイルをコピーしプロジェクト新規作成したフォルダにコピーする 3.プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイル に.libファイル名を記入 4.ダウンロードの.hファイルから __declspec(dllimport) BYTE __stdcall GetNo(void); __declspec(dllimport) void __stdcall P1Write(BYTE newVal); __declspec(dllimport) BYTE __stdcall P1WriteBit(BYTE Bit, BOOL Tf01); __declspec(dllimport) BYTE __stdcall P1Read(void);  をコピーしStdafx.h へ貼付け。 5.Stdafx.hへ貼り付けた宣言がこのままではコンパイルが通らなかったため #define BYTE unsigned char #define BOOL bool  を追記。 6.ダウンロードしたDLLの関数を使用した一文を実装(公開関数として) 7.C#プロジェクト(Windowsフォームアプリ)新規追加 *C++(Windowsフォームアプリ)でやっても同じ結果になりました。 8.新しい参照の追加で上のクラスライブラリプロジェクトを追加 9.フォームアプリ側でクラスライブラリプロジェクトの関数を実行する処理を実装 clsTest ctst; ctst.Exec(); 10.コンパイル→デバッグ実行→DLLを参照しようとしたタイミングでエラー発生! 「DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。」 *クラスライブラリ側の、DLLの関数を呼んでいる部分をコメントアウトするとエラー無く実行できてしまいます。

専門家に質問してみよう