初めてこちらの質問掲示板を利用させていただきます。
さっそくですが、
現在CStatusBarから派生させたクラスに、
CStaticから派生させたクラスを配置してステータスバーに
テキストを表示させ、
そのスタティックコントロールの領域を左クリックすると
メッセージボックスが表示されるようなプログラムを作成していますが
うまくいきません。
以下が現時点で書いているソースです。
コンパイルは通っています。
●CStatusBarの派生クラス、MdeStatusBarのヘッダファイル
class MdeStatusBar :public VhxStatusBar
{
public:
MdeStatusBar(void);
~MdeStatusBar(void);
void SetTest( void );
CString m_sTest ;
MdeStaticAngle* m_pStatic ;
};
inline void MdeStatusBar::SetTest( void )
{ m_sTest = テスト; }
●MdeStatusBarのcppファイル
MdeStatusBar::MdeStatusBar(void)
{
MdeStaticAngle* m_pStatic = new MdeStaticAngle() ;
m_pStatic->Create( _T(Test), WS_VISIBLE | WS_CHILD | SS_CENTER ,
CRect(100,10,200,40), this ) ;
}
MdeStatusBar::~MdeStatusBar(void)
{
delete m_pStatic ;
}
●CStaticの派生クラス、MdeStaticAngleのヘッダファイル
class MdeStaticAngle : public CStatic
{
public:
MdeStaticAngle(void);
~MdeStaticAngle(void);
afx_msg void OnLButtonDown( UINT nFlags, CPoint point ) ;
DECLARE_MESSAGE_MAP()
};
●
BEGIN_MESSAGE_MAP( MdeStaticAngle, CStatic )
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
MdeStaticAngle::MdeStaticAngle(void)
{
}
MdeStaticAngle::~MdeStaticAngle(void)
{
}
void MdeStaticAngle::OnLButtonDown( UINT nFlags, CPoint point)
{
//MdeStaticAngle::OnLButtonDown( nFlags, point );
MessageBox( テスト, テストタイトル , MB_OK );
}
何か問題点があれが、ご指摘を願います。
> 何か問題点があれが、ご指摘を願います。
http://www.mtakahashi.com/cgi.cgi?13809
Did you read?
> 発言される前に「使用上の注意」を必ずお読み下さい。
> ■ マルチポストについて
>
> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」で
す。この行為は
> マナー違反として嫌われています。マルチポストは行わないで下さい。
multiple postingさん
すみません、初心者なもので何も知らずに行っていました。
注意点もよく読んでいなかったということです。
ご指摘、ありがとうございます。
すみません、マルチポストを行っていたのでこちらは解決ということにします。
# 解決になってるけど、一応書いとくね。
> うまくいきません。
どこまでできてますか?
CStaticの文字列は表示できてる?
それと、CStaticはデフォルトでは、マウスイベントを拾えなかったはず。
で、CWnd::ModifyStyle(0, SS_NOTIFY)をどこかに追加する。
参考までに、ステータスバーのダブルクリックを拾う例
http://www.codeguru.com/Cpp/controls/statusbar/article.php/c2969/
# 本当に解決した時点で、自分が得た全ての情報をうまくまとめ、
# 全てのマルチポスト先に載せて下さい。
たいちうさん
色々とありがとうございます。
使いなれないもので、マナー違反や不手際があり申し訳なく思っています。
メインフレーム内でスタティックコントロールをクリエイトすることにより
CStaticの文字列は表示できている状態です。
このスタティックコントロールをステータスバークラスでクリエイトして
表示できるようにするところはできていません。
また、マウスイベントのことについても知りませんでした。
調べてみます。
ありがとうございます。
今まで、メインフレームでしかスタティックコントロールのCreateが
うまくいかないと書いていました。
元々は、
CStatusBarを派生したクラスMdeStatusBar内のコンストラクタで
CStaticを派生したクラスMdeStaticAngleをcreateしていました。
この方法だと、スタティックコントロールがステータスバー上に
表示されないということが問題でした。
しかし、MdeStatusBarのInit()関数内でMdeStaticAngleをCreate
したところ、表示ができました。
私の中では、ステータスバーのコンストラクタで全ての初期化は
できると思っていたのですが、それは間違っていたみたいです・・。
この点がまだ曖昧なのですが、当初の問題は解決しました。
皆様、いろいろとありがとうございました。
また、マルチポストをしてマナー違反行為を行っていたことも
お詫びいたします。
以後、気をつけます。すみませんでした。