こんにちは。
VBとCを独学している比嘉と言います。
VBのコントロールをDLL(C言語)に渡してDLL内でコントロールを制御
することは可能でしょうか。
例えば、VBのテキストボックスのハンドルをDLLに渡して、DLL内で
テキストボックスに文字を書き込むとか出来ますか。
コントロールの渡し方とDLL内での受け取り方がわかりません。
アドバイスお願いします。
すいません。この質問はVCの掲示板にするべきだったでしょうか?
でもVBも絡んでるので、こちらでも良いですよね。。
VB6のTextBoxであれば、hWndプロパティの値をC側に渡せば、
そこからEM_系メッセージなどを使って制御する事ができるかと。
つまりこんな感じですか
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からセット");
}
DLL(C言語)では無理ですが・・・
MFCを使ったActiveX では、コントロールのディスパッチポイント
を受け取れますので、可能です。
ヘルプで、Dispatch とか、Invoke の項目で検索してみて下さい。
ですが、MFCでActiveXを作成するのもかなりの難易度です
ので、他のコントロールの制御を連継するには、なかなかの時間を要
すると思いますが・・・
以上。
ツイート | ![]() |