読者です 読者をやめる 読者になる 読者になる

CStatic

MFC Sample

CStaticは、スタティックテキストやピクチャーコントロールなどのスタティックコントロールを扱うクラス・・・。

CStatic クラス

今回は、スタティックテキストの文字列変更と、ピクチャーコントロールのビットマップ表示をしてみる・・・。

MFCアプリケーションでCStaticプロジェクトを作成・・・。

f:id:BG1:20160126123204p:plain

もともと配置されているスタティックテキスト("TODO: ダイアログ~")を下に移動し、その下にボタンを配置、上にはピクチャーコントロールを配置・・・。

f:id:BG1:20160126123454p:plain

ビットマップとアイコンを用意し、リソース追加する・・・。

スタティックテキストとピクチャコントロールのIDが両方とも、IDC_STATICになっていたので、

f:id:BG1:20160126123722p:plain

スタティックテキストのIDをIDC_STATICから、IDC_STATIC1に変更・・・。

f:id:BG1:20160126123955p:plain

ピクチャーコントロールのIDは、IDC_STATIC2に変更・・・。
(どちらもNameがIDC_STATIC11や、IDC_STATIC22となっているが、この部分は気にしない・・・。(VisualStudioのバグ?))

また、

f:id:BG1:20160126124520p:plain

ピクチャーコントロールの[Type]は[フレーム]だと、ビットマップが表示されないので、[ビットマップ]に変更・・・。

そうすると、

f:id:BG1:20160126124739p:plain

黒い枠線(フレーム)が消えて、小さなアイコンになった・・・。
ビットマップスタイルだというアイコン・・・。

さて、これでCStatic.rcは、

IDC_STATIC1は、"TODO: ダイアログのコントロールをここに配置"というテキストのセットされたCTEXT・・・。
IDC_STATIC2は、SS_BITMAPオプションの付いた"Static"なCONTROL・・・。

となった・・・。

OnInitDialogは、

Button1のハンドラは、

まず、pStatic1->SetWindowTextでIDC_STATIC1に、"Hello, world!"をセット・・・。
続いて、pStatic2->SetBitmapでIDC_STATIC2に、ロードしておいたIDB_BITMAP1(bitmap1.bmp)をセットする・・・。

f:id:BG1:20160126130544p:plain

最初はこう・・・。でもButton1を押すと、

f:id:BG1:20160126130603p:plain

こうなる・・・。
下のテキストも変わったし、ビットマップも表示された・・・。
(スタティックテキストの背景がグレーのままだったり、ビットマップがはみ出てるのは、気にしない・・・。これらの問題の解決についてはいずれ取り扱う・・・。)

Sample/CStatic.h at master · bg1bgst333/Sample · GitHub
Sample/CStatic.cpp at master · bg1bgst333/Sample · GitHub
Sample/CStaticDlg.h at master · bg1bgst333/Sample · GitHub
Sample/CStaticDlg.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/CStatic.rc at master · bg1bgst333/Sample · GitHub
Sample/stdafx.h at master · bg1bgst333/Sample · GitHub
Sample/stdafx.cpp at master · bg1bgst333/Sample · GitHub