ステータスバーにスタティックコントロールを配置してテキストを表示させたい – プログラミング – Home

ステータスバーにスタティックコントロー...
 
通知
すべてクリア

[解決済] ステータスバーにスタティックコントロールを配置してテキストを表示させたい


わかめ
 わかめ
(@わかめ)
ゲスト
結合: 20年前
投稿: 10
Topic starter  

初めてこちらの質問掲示板を利用させていただきます。

さっそくですが、
現在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 );

}

何か問題点があれが、ご指摘を願います。


引用未解決
トピックタグ
multiple posting
 multiple posting
(@multiple posting)
ゲスト
結合: 20年前
投稿: 4
 

> 何か問題点があれが、ご指摘を願います。

http://www.mtakahashi.com/cgi.cgi?13809

Did you read?
> 発言される前に「使用上の注意」を必ずお読み下さい。

> ■ マルチポストについて
>
>  マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」で
す。この行為は
>  マナー違反として嫌われています。マルチポストは行わないで下さい。


返信引用
わかめ
 わかめ
(@わかめ)
ゲスト
結合: 20年前
投稿: 10
Topic starter  

multiple postingさん

すみません、初心者なもので何も知らずに行っていました。
注意点もよく読んでいなかったということです。

ご指摘、ありがとうございます。


返信引用
わかめ
 わかめ
(@わかめ)
ゲスト
結合: 20年前
投稿: 10
Topic starter  

すみません、マルチポストを行っていたのでこちらは解決ということにします。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

# 解決になってるけど、一応書いとくね。

> うまくいきません。

どこまでできてますか?
CStaticの文字列は表示できてる?

それと、CStaticはデフォルトでは、マウスイベントを拾えなかったはず。
で、CWnd::ModifyStyle(0, SS_NOTIFY)をどこかに追加する。

参考までに、ステータスバーのダブルクリックを拾う例
http://www.codeguru.com/Cpp/controls/statusbar/article.php/c2969/

# 本当に解決した時点で、自分が得た全ての情報をうまくまとめ、
# 全てのマルチポスト先に載せて下さい。


返信引用
わかめ
 わかめ
(@わかめ)
ゲスト
結合: 20年前
投稿: 10
Topic starter  

たいちうさん

色々とありがとうございます。
使いなれないもので、マナー違反や不手際があり申し訳なく思っています。

メインフレーム内でスタティックコントロールをクリエイトすることにより
CStaticの文字列は表示できている状態です。
このスタティックコントロールをステータスバークラスでクリエイトして
表示できるようにするところはできていません。

また、マウスイベントのことについても知りませんでした。
調べてみます。
ありがとうございます。


返信引用
わかめ
 わかめ
(@わかめ)
ゲスト
結合: 20年前
投稿: 10
Topic starter  

今まで、メインフレームでしかスタティックコントロールのCreateが
うまくいかないと書いていました。

元々は、
CStatusBarを派生したクラスMdeStatusBar内のコンストラクタで
CStaticを派生したクラスMdeStaticAngleをcreateしていました。
この方法だと、スタティックコントロールがステータスバー上に
表示されないということが問題でした。
しかし、MdeStatusBarのInit()関数内でMdeStaticAngleをCreate
したところ、表示ができました。

私の中では、ステータスバーのコンストラクタで全ての初期化は
できると思っていたのですが、それは間違っていたみたいです・・。
この点がまだ曖昧なのですが、当初の問題は解決しました。

皆様、いろいろとありがとうございました。

また、マルチポストをしてマナー違反行為を行っていたことも
お詫びいたします。
以後、気をつけます。すみませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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