VCで簡単なプログラムを造っています。
ダイアログベースです。
エディットボックスへのアクセス方法がわかりません。
識者の方、ご教授願います。
簡単にソースを載せます。
以下は、ボタンを押した時に動作するルーチンです。
void CTestDialog::OnButton1()
{
CreateThread(, , Sub, , ,);
}
Sub() が作成されたスレッドで動作する関数です。
void Sub()
{
CString csText;
csText.Format("てすと");
SetDlgItemText(IDC_EDIT1, csText);
}
IDC_EDIT1 が CTestDialogクラスのエディットボックスです。
Sub() の中でこのエディットボックスに書きたい。
Sub() を CTestDialogクラスとして定義するのか、または
SetDlgItemText関数で IDC_EDIT1 が CTestDialogクラスであると
指定するのか、などわかりません。
どこに、どういう記述をすればいいか教えてください。
No.2ベストアンサー
- 回答日時:
こんにちは。
itohhといいます。akino4さんが言われるようにわたしも、引数としてthis(自分自身という意味)を渡します。
ワーカースレッドは、同じクラス内でも別領域になってしまうからです。
下記に簡単な例を載せます、参考にしてください。
※CreateThreadの代わりにAfxBeginThreadを使用するようにしましょう。
※テキストボックスを前もってCString型のメンバ変数(m_text)としておきます。
long CAbc::test()
{
CWinThread* wkpThread=NULL;
wkpThread = AfxBeginThread( CAbc::m_Thread, this );
return 0;
}
UINT CAbc::m_Thread( LPVOID n )
{
CAbc* wkThis;
wkThis = (CAbc *)n;
n->m_text = "テストだよ!!";
return 0;
}
他のメンバ関数やメンバ変数を使う場合もn->xxxxxxとします。
ただし、メインスレッドとワーカースレッドは同時に動作するので何らかの排他制御が必要になることもある。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) excel ピポットテーブルの更新について 1 2022/05/13 16:12
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既定のコンストラクタがない?
-
DebugクラスとTraceクラスの違い
-
WindowsAPIのリストビューの...
-
(UWSC) 「#32770」の意味わかり...
-
VB.NETでのEnumの使用について
-
MFCアプリのコマンドラインでパ...
-
FriendとPublicの違い。。。
-
ダイアログ表示時にチェックボ...
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
エディットコントロールでEnter...
-
C++/CLIからC++の呼び出しで例外
-
C#のクラス設計について教えて...
-
クラスのアドレスを引数として...
-
イベントにAddHandlerされてい...
-
CMainFrameクラスの使い方
-
DataContextについて
-
このコンパイルエラーの意味に...
-
【MFC】ユーザインタフェースス...
-
ソケットを使った「非同期」通...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
【ASP.NET】 独自で作成したク...
-
MFCアプリのコマンドラインでパ...
-
DebugクラスとTraceクラスの違い
-
ボタンのオーナードローについて
-
OnInitDialog()の関数の組み込み方
-
IncludeではなくClassで宣言す...
-
関数の呼び出し元の検索
-
このコンパイルエラーの意味に...
-
C++ protectedにアクセス不可
-
C++で継承元のクラスの代入演算...
-
DataGridViewのセルに斜線を引...
-
C#で通常のbuttonコントロール...
-
エディットコントロールのイベ...
-
CMainFrameクラスの使い方
おすすめ情報