VC++2005のWindowsフォームアプリケーションに関して教えていただきたいことがあります。
フォームに設置したボタンをクリックすると、自分で作ったクラス(仮にAとします)の関数が起動して、フォームのpictureBox1に描画ができるようにしたいです
Graphics^ gr = pictureBox1-> と書いた後に候補(CreateGraphics)が選択できませでした・・・
pictureBox1 というのは、Form1のメンバではなく、PictureBox^ pictureBox1 というように生成されているので、
やはり外部のクラスからフォームのコントロールを操作するのは厳しいのでしょうか・
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんばんは。
要は、PictureBox^はForm1内で動的に作成された代物で、メンバ変数として記憶されていないが、其れをクラスAの方から操作したいと言う事でしょうか。
手法の良し悪しは別として、可能である筈です。
但し、クラスAに向かってForm1のポインタ位は渡さないといけません。Form1からControlsプロパティを使えば、ピクチャーボックスに辿り着ける筈です。
http://msdn.microsoft.com/ja-jp/library/system.w …
http://msdn.microsoft.com/ja-jp/library/system.w …
//-------------------------
Form1の何処か
//-------------------------
//ピクチャーボックスを作成する
System::Windows::Forms::PictureBox^ pictureBox = gcnew System::Windows::Forms::PictureBox();
//ピクチャーボックスをForm1に追加する
this->Controls->Add(pictureBox);
//背景色の設定
pictureBox->BackColor = System::Drawing::SystemColors::GradientActiveCaption;
//この文字列を使ってControlsプロパティから探す
pictureBox->Name = L"picture box dynamic created";
//位置やサイズの設定
pictureBox->Location = System::Drawing::Point(800, 20);
pictureBox->Size = System::Drawing::Size(100, 20);
pictureBox->Show();
//-------------------------
クラスAの何処か
fはクラスA内のメンバ変数で、Form1が入っているものとする
//-------------------------
//Form1のControlsプロパティからピクチャーボックスを見つける
const int iFound = f->Controls->IndexOfKey(L"picture box dynamic created");
//-1は見つからなかったので引き返す
if(iFound == -1)return;
//見つかった(必要に応じてPictureBox^にダウンキャストする)
System::Windows::Forms::Control^ control = f->Controls->default[iFound];
//グラフィックスオブジェクトの作成
System::Drawing::Graphics^ gfx = control->CreateGraphics();
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Google Drive Googleフォームについて(至急) 2 2022/06/28 21:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イベントにAddHandlerされてい...
-
FriendとPublicの違い。。。
-
C#のクラス設計について教えて...
-
MFCのドラッグ&ドロップについて
-
クラスのアドレスを引数として...
-
オーバーライド関数の呼び出し...
-
既定のコンストラクタがない?
-
MRUの一時回避 VC++2008 MFC
-
MFCアプリのコマンドラインでパ...
-
C++ protectedにアクセス不可
-
vba sendKeysを送る相手のソフ...
-
MFC CSplitter内にコントロール...
-
ダイアログ表示時にチェックボ...
-
VC++ MFC CFrameWndって・・・
-
このコンパイルエラーの意味に...
-
ボタンのオーナードローについて
-
派生クラスから基本クラスprote...
-
DLLからEXEのクラスを呼び出す...
-
CMainFrameクラスの使い方
-
MessageBoxを継承したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
【ASP.NET】 独自で作成したク...
-
MFCアプリのコマンドラインでパ...
-
DebugクラスとTraceクラスの違い
-
ボタンのオーナードローについて
-
OnInitDialog()の関数の組み込み方
-
IncludeではなくClassで宣言す...
-
関数の呼び出し元の検索
-
このコンパイルエラーの意味に...
-
C++ protectedにアクセス不可
-
C++で継承元のクラスの代入演算...
-
DataGridViewのセルに斜線を引...
-
C#で通常のbuttonコントロール...
-
エディットコントロールのイベ...
-
CMainFrameクラスの使い方
おすすめ情報