戻る 第12章 コントロールの使用
(ラベル)
次へ

ソース 実行ファイル
sdk12.cpp sdk12.exe

今回はラベルです。
VBを知っている人ならこの名前を聞いただけでどのようなものかわかると思いますけど
ラベルとはテキストのフィールドです。
テキストボックスと違ってこちらから入力は出来ません。
それじゃぁ表示するだけ??
と思うかもしれませんがこれはこれで色々と使い道があります。
とりあえずは普通に表示させて見ましょう。
変わった使い方はそのうち載せますね(^^;

さすがに字を表示させるだけじゃつまらないので
真中に寄せたり左右に寄せたりして見ました。
これはエディットボックスでも同じように出来ますので
やってみてください。

#include <windows.h>
HWND	label[3];
HWND	btn[2];
int style[3]={SS_CENTER,SS_LEFT,SS_RIGHT};
char *caption[]={"真中","左寄せ","右寄せ"};
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg,WPARAM wP, LPARAM lP)
{
	HDC	hdc;
	PAINTSTRUCT ps;
	char str[40];
	switch(msg){
		case WM_CREATE:
			for(i=0;i<3;i++){
				edit=CreateWindowEx(0, 
					"STATIC", //スタティックコントロールクラスを指定 
					caption[i],//最初に表示させるテキストを入力する
					WS_CHILD|WS_BORDER|SS_SUNKEN|style[i],//子Window指定
					16, 8+i*32,128, 24,//スタティックコントロールのサイズ
					hwnd,
					NULL,//IDはいらない
					(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
					NULL);//プロシージャ
				ShowWindow(label[i],SW_SHOW);//スタティックコントロールを表示
			}
			//表示・削除のボタンを描画
			btn[0]=CreateWindowEx(0,"BUTTON","表示",WS_CHILD,
					164, 8,64, 32,hwnd,(HMENU)ID_BTN1,
					(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),NULL);
			ShowWindow(btn[0],SW_SHOW);
			btn[1]=CreateWindowEx(0,"BUTTON","削除",WS_CHILD,
					164, 40,64, 32,hwnd,(HMENU)ID_BTN2,
					(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),NULL);
			ShowWindow(btn[1],SW_SHOW);
			break;
		case WM_COMMAND:
			switch ( LOWORD ( wP ) )
			{
				case ID_BTN1://現在入力されている内容を表示する
					GetWindowText(label[0],str,40);
					MessageBox(hwnd,str,"EDIT",MB_OK);
					break;
				case ID_BTN2://現在入力されている内容を削除する
					SetWindowText(label[0],"");
					break;
			}
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
		return DefWindowProc(hwnd, msg, wP, lP);
	}
	return 0;
}
今回の原理もエディットボックスとほとんど一緒です。
色々なWindowスタイルで試してみましょう。