- PR -

C#からCで作成したダイアログ画面を呼び出す方法

投稿者投稿内容
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-02-14 09:35
諸農です。

遅くなってすみません。

引用:

.NETでない環境からの呼び出しは確認しております。


その呼び出しはVCやVBからですか?
となると、関数の仕様がわかれば前に進めるかもしれないですね。
引用:

Cのプログラムでは下記の用に宣言されている関数を呼び出したいと思っています。
コード:
BOOL Ex_Select_Menu
(HINSTANCE hInstance, HWND hwnd, short kai_cd, char kbun,
 HWND Menuhwnd, char pas, char *menu_cd, long vdate)




それぞれの引数の仕様ですが、次の通りでしょうか?
hInstance→アプリケーションのインスタンスでしょうか?
hwnd→アプリケーションのメインのウィンドウハンドルでしょうか?
kai_cd→1でOKですか?
kbun→CharではなくByteでは?
 ↑ちょっと記憶が曖昧です。変換されましたっけ?
Menuhwnd→何らかのウィンドウハンドル?
pas→byte?
*menu_cd→byteの参照渡し?
long vdate→日付を8桁の数値で渡す?


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-14 12:38
あれから調べてみたところhInstanceの指定方法が間違っていたみたいです。
申し訳ない

DialogBox(hInstance, "MENU", hwnd, (DLGPROC)MenuDlgProc);

この場合、hInstanceにはアプリケーションのインスタンスハンドルじゃなく
DLLのインスタンスハンドルを渡さないといけないみたいです。
(DLL内のリソースを使用するため)

なので引数としてhInstanceをもらうのではなくDllMainの第一引数で渡される
ハンドルをインスタンスハンドルとして保持し、それを使用してみてください



YRENA
会議室デビュー日: 2004/01/20
投稿数: 12
投稿日時: 2004-02-16 09:41
返信遅くなりまして、申し訳ございません。
引用:

その呼び出しはVCやVBからですか?
となると、関数の仕様がわかれば前に進めるかもしれないですね。


⇒VCから確認しています。
 私はまだ関数の仕様を理解できていないのでしょうか。
 もう一度、よく見直してみます。 

コード:
BOOL Ex_Select_Menu
(HINSTANCE hInstance, HWND hwnd, short kai_cd, char kbun,
 HWND Menuhwnd, char pas, char *menu_cd, long vdate)


それぞれの引数の仕様は以下の通りです。
hInstance:アプリケーションのインスタンスです。
hwnd   :アプリケーションのメインのウィンドウハンドルです。
kai_cd  :1でOKです。
kbun   :Char型でOKです。
Menuhwnd :アプリケーションのメイン画面のリストボックスのハンドルです。
pas   :Charです。
*menu_cd :byteの参照渡しです。
vdate  :日付を8桁の数値で渡します。

引用:

引数としてhInstanceをもらうのではなくDllMainの第一引数で渡される
ハンドルをインスタンスハンドルとして保持し、それを使用してみてください


呼び出す側は置いといて、呼び出される側に問題があるのでしょうか。
呼び出される側のコードを修正しないといけないと言うことですよね。
もう少し探りつつ、試してみます。


YRENA
会議室デビュー日: 2004/01/20
投稿数: 12
投稿日時: 2004-02-17 08:47
引用:

引数としてhInstanceをもらうのではなくDllMainの第一引数で渡される
ハンドルをインスタンスハンドルとして保持し、それを使用してみてください


上記のように呼び出されるプログラムを修正したところ、ダイアログが開きました。
(DllMainの記述がなかったので追加しました。)
ありがとうございました。 

スキルアップ/キャリアアップ(JOB@IT)