戻る 第11章 コントロールの使用
(エディットコントロール)
次へ

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

今回はエディットコントロールです。
文字列を受け取りたい時には必ずといっていいほど出てくる事と思います。
複数行の文字列の入力や受け取りも可能です。

ここでは普通に文字列を受け取るだけの方法を説明します。


#include <windows.h>

LRESULT CALLBACK WinProc(HWND hwnd, UINT msg,WPARAM wP, LPARAM lP)
{
	HDC	hdc;
	PAINTSTRUCT ps;
	char str[40];
	switch(msg){
		case WM_CREATE:
			
			edit=CreateWindowEx(0, 
					"EDIT", //エディットコントロールクラスを指定 
					"ここに入力",//最初に表示させるテキストを入力する
					WS_CHILD|WS_BORDER|//子Window指定・メッセージ取得指定
					24, 8,128, 24,//エディットコントロールのサイズ
					hwnd,
					NULL,//IDはいらない
					(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
					NULL);//プロシージャ
			ShowWindow(edit,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(edit,str,40);
					MessageBox(hwnd,str,"EDIT",MB_OK);
					break;
				case ID_BTN2://現在入力されている内容を削除する
					SetWindowText(edit,"");
					break;
			}
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
		return DefWindowProc(hwnd, msg, wP, lP);
	}
	return 0;
}

エディットコントロールに表示されている文字はエディットコントロールの
キャプションでもあります。
ですから表示する文字を変更する場合はSetWindowText関数を使い,
表示されている文字を取得する場合はGetWindowText関数を使います。

今回も簡単ですね。(^^)