コントロールのクラスを知るには – プログラミング – Home

コントロールのクラスを知るには
 
通知
すべてクリア

[解決済] コントロールのクラスを知るには


ゆあ
 ゆあ
(@ゆあ)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

VC初心者です。
コントロールがどのクラスに存在するのか調べるのはどうしたらいいんでしょうか?
とりあえず私が知りたいのは、ラジオボタンとグループボックスなんですが
ほかのコントロールもどのクラスに属するのか調べる方法があれば教えてください。


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

覚えるより、他ないのでは?

http://sysneitf.hoops.ne.jp/mfc/

上記のアドレスから、コントロールのレガシーコントロール内を覗いて見てください。
(工事中も多いのですけど、σ(^^) のお気に入りのページです。)

ちなみに
ラジオボタンもグループボックスもボタンコントロール(CButton)に属します。


返信引用
ゆあ
 ゆあ
(@ゆあ)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

Bunさん、またしてもありがとうございました。
ホームページ参考になりそうです。
でもホームページ等で調べるしかやはり方法はないのですか?
覚えるといわれてもはじめにどこに属するのかわからないと
メンバに登録できないですからね。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

解決されていないのかな?

しゃーないから、分厚い本を買ってください。(爆)

(別解)
ダイアログ等に貼り付けたコントロールであれば、ClassWizardのメンバ変数の追加で
カテゴリをコントロールにすれば、変数のタイプにそのクラス名が出ます。

一般的なコントロールは、プログラムをやっていれば自然に覚えちゃうと思いますけど。(^^;


返信引用
ゆあ
 ゆあ
(@ゆあ)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

Bunさん、おはようございます。
クラスウィザードで見れるんですね。
ありがとうございます。
でもこの間教えていただいた。
ON_COMMAND_RANGEで同じ操作をするボタンを
メンバの配列にしてしまったので
クラスウィザードが使えなくなってしまったんです。

HopAssignDlg.cppでコード追加。

void CHopAssignDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHopAssignDlg)
DDX_Control(pDX, IDC_HOP_BTN1, m_Button[1]);
DDX_Control(pDX, IDC_HOP_BTN2, m_Button[2]);
//}}AFX_DATA_MAP
}

HopAssignDlg.hでコード追加。

// ダイアログ データ
//{{AFX_DATA(CHopAssignDlg)
enum { IDD = IDD_HopAssignDlg };
CButton m_Button[3];
//}}AFX_DATA
こんな感じでやってみたんですけど、どこかやはり悪かったのでしょうか?


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

そもそも クラスウィザードは ON_COMMAND_RANGE をサポートしていません。(確かそうだったと)
手でガリガリと実装するしか方法はないと思います。

悪かったというのは、何かエラーが出るのでしょうか?
(ついでに、どんなことを実現されたいのですか?)


返信引用
ゆあ
 ゆあ
(@ゆあ)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

早速のお返事ありがとうございます。
どこかやはり悪かったのでしょうか?
というのはクラスウィザードが使えなくなってしまったことです。
このメンバに対してだけではなく、すべてについて使えないので、
今は手でがりがりコードを書いてます。

やりたいことはボタンとラジオボタンの連動で
それは今は何とか動いているのですが、
結局クラスウィザードが使えなくなってしまったので、
苦労してるのです。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

このページでお勉強してみてください。キーワードはコメントデリミタです。

http://www.microsoft.com/japan/developer/library/vccore/_core_handlers_for_message.2d.map_ranges.htm

手で実装する場合には注意することがありますので、一応下記を参考にしてください。

BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
//{{AFX_MSG_MAP(CMyApp)
...この間には手でコードを書いてはいけません <--- ここが大事
//}}AFX_MSG_MAP
ON_COMMAND_RANGE(ID_MYCMD_ONE, ID_MYCMD_TEN, OnDoSomething)
END_MESSAGE_MAP( )

ON_COMMAND_RANGE()は手で実装するので
//}}AFX_MSG_MAPの行の後に書きます。

//{{AFX_??? から

//}}AFX_/// までをコメントデリミタといってユーザーがこの間にコードを書いては
いけないようになっています。ここをコメントデリミタといいます。
クラスウィザードの管理する部分なのでユーザーが荒らしてはいけないということです。


返信引用
ゆあ
 ゆあ
(@ゆあ)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

Bunさんありがとうございました。
AFXの外に書いたらクラスウィザードが復活しました。
いつもありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました