ソフト開発塾

Q:VCでVB TEXTBOXに書き込みできるの?

VB上のCaptionでなく、TEXT BOXのTEXTに文字列を書き込むのは 簡単(可能)ですか?ウインドウのハンドルをVB側からVCコールの 引数で与えればVC側で書き込み可能だと聞きましたが本当ですか? 簡単な例題があれば幸いです。


A:VBのテキストボックスのハンドルを渡せば、コントロールは可能ですが、
VCで機械制御を割り込みで行っていて、その状態をVBのフォームに表示したいとか
特殊なことをするのでしょうか?

VCでVBのフォームに張り付けてあるテキストボックス(入力エリア)を見つけ、書き込む動作は
ウイルスみたいに思いますが...


Q:VCで機械制御を割り込みで行っていて、VCのプログラムから VBに戻らずにその制御中の状態をVBのフォームに表示したい と考えております。


A:本来の趣旨からはずれますが、VC側でVBが取得できるプロパティを用意しておいて、VBで1秒間隔ぐらいで監視するのがよいと思います。
ただ、メインがVBで作成する(=VBが終了すると機械制御が終わっても良い)のであれば、考え方が変わってくる。制御中の状態は、どれぐらいの項目があるのでしょう?数が少ないのであれば、テキストボックスのhWndをVCに渡しておいて、VCでhWndに対して変更すればよいと思います。

VB フォームのソース
Option Explicit

Private Sub Command1_Click()
    Me.C0121C1.Puls
End Sub

Private Sub Form_Load()
    Me.C0121C1.wk01hWnd = Me.Text1.hWnd
End Sub

VC側 OCXを作成するから、メソッドPulsを作成しました。これはVBでテストのためにOCXに指示するためです。

void CC0121CCtrl::Puls() 
{
    // TODO: ここにディスパッチ ハンドラ コードを追加してください。
    CWnd myWnd;
    myWnd.Attach(m_wk01hWnd);
    myWnd.SetWindowText("XXXX");
    myWnd.Detach();
}

また、VC側でプロパティwk01hWndを作成しました。これは、VB側のテキストボックスのhWndを記憶するためです。
VC側で実際にVBのhWndを保管するため、プライベートのメンバ変数m_wk01hWndを追加しています。

VBのハンドルの保管
void CC0121CCtrl::SetWk01hWnd(long nNewValue) 
{
    // TODO: ここにプロパティ ハンドラを追加してください
    m_wk01hWnd=(HWND)nNewValue;
    SetModifiedFlag();
}

ソフト開発塾の掲示板の入り口ここにも設置


ソフト開発塾 リンク集

--- KONDO-NET.GR.JP ---
今日のアクセス人目