Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2012, 22:53   #1
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
Вопрос Только чтение в элементе edit

Недавно начал учить WinAPI . Дошёл до органов управления. Появился вопрос.
Код:
#include <windows.h>
#include <tchar.h>
#define UNICODE
#define ID_EDIT 0xF


BOOL RegClass(WNDPROC,LPCTSTR,UINT);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HINSTANCE hInstApp;
TCHAR szClassName[]=_T("WNDCLASSAPP");
TCHAR szTitle[]=_T("Упражнение 2 7 1");

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
				   LPSTR szCmdLine, int szShow)
{
	hInstApp=hInst;
	MSG msg; HWND hwnd;
	if (!RegClass(WndProc,szClassName,COLOR_WINDOW))
		return 0;
	hwnd=CreateWindow(szClassName,szTitle,WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_THICKFRAME|WS_VISIBLE,400,300,500,400,0,0,hInstApp,NULL);
	while (GetMessage(&msg,0,0,0))
	{
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

BOOL RegClass(WNDPROC Proc,LPCTSTR Name,UINT bcColor)
{
	WNDCLASS wc;
	wc.style=wc.cbClsExtra=wc.cbWndExtra=0;
	wc.hbrBackground=(HBRUSH)bcColor;
	wc.hCursor=LoadCursor(NULL,IDI_APPLICATION);
	wc.hIcon=LoadIcon(NULL,IDC_ARROW);
	wc.hInstance=hInstApp;
	wc.lpfnWndProc=Proc;
	wc.lpszClassName=Name;
	wc.lpszMenuName=NULL;
	return RegisterClass(&wc);
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	static HWND hEdit;
	switch (msg)
	{
		case WM_CREATE:
			hEdit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_WANTRETURN,
								0,0,500,400,hwnd,(HMENU)ID_EDIT,hInstApp,NULL);
			return 0;
		break;
		case WM_SIZE:
			MoveWindow(hEdit,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
			SetFocus(hEdit);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		break;
	}
	return DefWindowProc(hwnd,msg,wParam,lParam);
}
Edit появляется, но вопрос в том, что я ничего не могу в него вписать. Пробовал сразу после его создания добавить
Код:
SendMessage(hEdit,EM_SETREADONLY,(WPARAM)0,0);
но не помогло. Повторяю, WinAPI только начал учить.
Пишу в Visual Studio 2012. C++
EnterFix вне форума Ответить с цитированием
Старый 30.12.2012, 23:27   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
TranslateMessage(&msg);
DispatchMessage(&msg);
EUGY вне форума Ответить с цитированием
Старый 31.12.2012, 01:43   #3
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
По умолчанию

EUGY, в точку. спасибо!
EnterFix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод - сделать так, чтобы в Edit можно было вводить только цифры, или на оборот, только буквы BastAngel Общие вопросы Delphi 7 27.04.2012 01:15
Оставить только название файла в Edit-е misher Общие вопросы Delphi 2 02.01.2011 18:11
StringGrid только чтение KLOP Общие вопросы Delphi 2 20.04.2010 23:39
Как в Edit вводить только цифры subsonic Общие вопросы Delphi 5 29.03.2010 23:39
Ввести в Edit только числа и удалять их Bacspase'ом. Alar Компоненты Delphi 1 01.11.2006 03:10