質問

CDialogベースのウィンドウを作成するコードに問題があります。コードは先週正常に機能していました。私が行った唯一の変更は、C ++の両端キューをハッシュ配列に置き換えることでした。ウィンドウの読み込みをスキップできるように、Createメソッドが呼び出されているコード行をコメントアウトしました。これで、コードはウィンドウをまったく作成しなくなりました。

Create関数はfalseを返し、GetLastError関数は0を返します。ウィンドウ内ではカスタムコントロールを使用せず、チェックボックスとリストコントロールのみを使用します。私が知る限り(この時点ではデバッガを接続できません)、OnCreate関数とOnInitDialog関数はまったく呼び出されていません。

Create関数の戻り値とGetLastErrorをテストするために使用している以下のコードを貼り付けました

BOOL result = ORDER_HANDLER_GUI.Create(OrderHandlerGUI::IDD, AfxGetMainWnd());
int error = ::GetLastError();

if(result)
    AfxMessageBox("Created GUI");
else
{
    CString msg;
    msg.Format("%d", error);
    AfxMessageBox("Could not create GUI");
    AfxMessageBox(msg);
}

更新: 私はついにデバッガーをアタッチすることができました(これは、何らかの理由でデバッガーが気に入らなかったサードパーティのアプリケーションに読み込まれたプラグインです)。コードをステップ実行した後、AfxGetMainWnd()がNULLを返しているようです。現在、これについてさらにテストを行っています。

役に立ちましたか?

解決

問題はCDynLinkLibrary()の呼び出しにあったようです。

私は、プラグインをロードするソフトウェアを作成する会社の要請でこれをコメントアウトしました。この行を再び追加すると、一部の値がまだnullになりましたが、ウィンドウは正しく作成されるようになりました。

これについて少し調査します。何か見つかったら更新します。誰かが私よりもこのことをよく知っているなら(難しいことではありませんが)、気軽にコメントを残してください。

他のヒント

ダイアログは、問題を引き起こしている可能性のあるコントロールを使用しますか?例えばリッチエディット?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top