VBのコントロールをDLL(C)から制御するには?


比嘉@糸満  2003-11-17 23:20:15  No: 109998

こんにちは。
VBとCを独学している比嘉と言います。

VBのコントロールをDLL(C言語)に渡してDLL内でコントロールを制御
することは可能でしょうか。
例えば、VBのテキストボックスのハンドルをDLLに渡して、DLL内で
テキストボックスに文字を書き込むとか出来ますか。

コントロールの渡し方とDLL内での受け取り方がわかりません。
アドバイスお願いします。


比嘉@糸満  2003-11-17 23:22:12  No: 109999

すいません。この質問はVCの掲示板にするべきだったでしょうか?
でもVBも絡んでるので、こちらでも良いですよね。。


魔界の仮面弁士  2003-11-18 00:06:56  No: 110000

VB6のTextBoxであれば、hWndプロパティの値をC側に渡せば、
そこからEM_系メッセージなどを使って制御する事ができるかと。


ねろ  2003-11-18 02:01:56  No: 110001

つまりこんな感じですか
VB側
Private Declare Sub SetText Lib "settext.dll" (ByVal hwnd As Long)
Private Sub Command1_Click()
    Call SetText(Text1.hwnd)
End Sub

C側
#include "winuser.h"
#define  WM_SETTEXT    0x000C
void __declspec(dllexport) __stdcall SetText(HWND hWnd);
void __declspec(dllexport) __stdcall SetText(HWND hWnd){
    SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)"dllからセット");
}


岡田 之仁  2003-11-18 07:56:15  No: 110002

DLL(C言語)では無理ですが・・・
MFCを使ったActiveX では、コントロールのディスパッチポイント
を受け取れますので、可能です。

ヘルプで、Dispatch とか、Invoke の項目で検索してみて下さい。

ですが、MFCでActiveXを作成するのもかなりの難易度です
ので、他のコントロールの制御を連継するには、なかなかの時間を要
すると思いますが・・・

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加