
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イベントにAddHandlerされてい...
-
privateなメンバ関数をテストす...
-
FriendとPublicの違い。。。
-
プロトタイプなのにexternを使...
-
デスクトップへコピー時に処理...
-
【MFC】ユーザインタフェースス...
-
C++で継承元のクラスの代入演算...
-
DataGridViewのセルに斜線を引...
-
MFCのドラッグ&ドロップについて
-
デストラクタ
-
関数重複の問題
-
VBのシステムの設計書にUMLは適...
-
(UWSC) 「#32770」の意味わかり...
-
DLLからEXEのクラスを呼び出す...
-
ダイアログ表示時にチェックボ...
-
個々の関数について継承してい...
-
条件によって別のクラスのイン...
-
UMLでの「オブジェクト」と「イ...
-
C# using の有効範囲
-
VB.NETで、DLLを頂いたんですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
エディットコントロールでEnter...
-
オーバーライド関数の呼び出し...
-
このコンパイルエラーの意味に...
-
【ASP.NET】 独自で作成したク...
-
MFC モードレスDlgについて
-
[MFC] CWnd::MessageBoxの警告...
-
ボタンのオーナードローについて
-
MessageBoxを継承したい
-
ダイアログクラスのコントロー...
-
vba sendKeysを送る相手のソフ...
-
エディットコントロールのイベ...
-
Delphi6 DLL内でのメモリ共有(?)
-
個々の関数について継承してい...
-
privateなメンバ関数をテストす...
-
WindowsAPIのリストビューの...
おすすめ情報