
VC++6.0にてMFCを使うDLLを作成しています。
関連HPを参考になんとかDLLを作ることが出来ました。
そこで今度はDLL側でダイアログボックスを作成して表示させようとしたところうまくいきません。
エラーも無くスルーされてしまいます。
こういう使い方は出来ないのでしょうか。
↓DLL関数のソースファイルです。
----------------------------------------------
#include "StdAfx.h"
#include "Defs.h"
#include "Func.h"
#include "resource.h"
#include "testdlg.h"
#include "dlg2.h"
int WINAPI DllFunc( CString &p_rcStr, CWnd *p_pcWnd )
{
TestDlg dlg;
Cdlg2 dlg2;
dlg.ps = p_rcStr;
dlg2.DoModal();//なにも出ない
AfxMessageBox(p_rcStr);//コレはOK
dlg.DoModal();//何もでない
return TRUE;
}
--------------------------------------------
No.1ベストアンサー
- 回答日時:
理由としては
1.ダイアログ側で初期化時に不整合
2.リソースIDのバッティング
1の場合・・・ダイアログをEXEで単独で表示できるかを
確認したらよいかと思います。
2またはダイアログ側に問題が無い場合・・・DLLでのダイ
アログ使用時のトラブルは多分大体こっちです。
DLLと呼び出し側EXEの「resource.h」でコントロー
ルIDが重複しているとダイアログは表示されません。
重複ID値のリソースで数値を変更して(リソースエディ
タの[プロパティ][ID]で『IDC_XXX=301』のように入れ
る)表示されるようになれば、これが原因です。
根本的な解決は共有DLLなら(普通こっち)
---------------------------------------
int WINAPI DllFunc( CString &p_rcStr, CWnd *p_pcWnd )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); //←コレ
---------------------------------------
を先頭行に入れてください。参考↓
http://www-kobayashi.ctrl.titech.ac.jp/members/m …
拡張DLLなら、↓の参考URLから「拡張DLLの
リソース」に飛んで見て下さい(DLLインスタンスハン
ドルは DllMain から取る)
参考URL:http://homepage2.nifty.com/DSS/VCPP/DLL/dllresou …
有り難うございます!!!!
IDの重複だったようです。
AFX_MANAGE_STATE(AfxGetStaticModuleState()); //←コレ
で一発解決でした。
とても助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++で文字列から任意の文字を...
-
#defineの使い方について
-
なぜ、C++の標準ヘッダをインク...
-
gccでコンパイル時のエラー
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
C++テンプレートでの引数
-
std::wstringのメモリリークに...
-
string型のフォーマット書式指...
-
テイラー展開とその精度について
-
JPEGやPNGが読めるLoadImage関数
-
std::mapのメモリアロケータに...
-
VS2019でofstreamが未定義になる
-
CStringとString
-
名前空間でビルドエラー(LNK20...
-
OpenCVでRAW画像(カラー)を開...
-
_tcscat がうまくいきません(V...
-
VC++でSELECT文の実行結果を表示
-
C++で2次元配列charをループしたい
-
C言語のポインターで詰まっている
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラーが出ているのですが...
-
enumの値から定義名を文字列化...
-
VC++で文字列から任意の文字を...
-
なぜ、C++の標準ヘッダをインク...
-
指定した文字を削除したい
-
std::map の const 修飾について
-
std::wstringのメモリリークに...
-
VHDLのsignedとunsignedの違いは?
-
C言語のエラーを修正したい
-
switch文のエラーについて
-
#define中の#のエスケープ
-
#include "fstream.h"
-
空ENTERの判別
-
VS2019でofstreamが未定義になる
-
構造体配列のvectorへの変換と...
-
C言語のポインターで詰まっている
-
C++ 平均値、最大値と最小値の...
-
VxWorks 6.4ソケット接続につい...
-
リモートデスクトップの接続元I...
-
C++での <iostream.h>と<iostre...
おすすめ情報