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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 12:56   #1
x_Alex_x
Пользователь
 
Регистрация: 13.01.2013
Сообщений: 94
По умолчанию Затиание дочерних окон

Здравствуйте! Столкнулся с такой проблемой: создал новый C++ Win32 проект в 2010 студии с уже готовым шаблоном приложения. В главном окне есть кнопка и эдит поле; по нажатии на кнопку создаётся дочернее окно с другим полем редактирования текста, в котором, в отличее от поля на главном окне, нельзя писать. К тому же, дочернее окно затирается элементами главного окна и такими же дочерними окнами:


Я думал, что не могу писать в полях дочерних окон т.к. на окнах нет "фокуса". Пытался его ставить вручную (SetFocus), но это не помогло. (

вот код главного окна:

Код:
case WM_CREATE:
		//кнопка
		button1 = CreateWindow(L"button", L"Дави", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			120, 10, 121, 30, hWnd, (HMENU)BUTTON1, hInst, NULL);
		//Поле ввода текста
		Edit2=CreateWindow(L"edit", L"Текст", WS_CHILD|WS_BORDER|WS_VISIBLE|WS_CLIPSIBLINGS|
				WS_VSCROLL|             // Окну добавляется горизонтальная полоса прокрутки
				WS_HSCROLL|             // Окну добавляется горизонтальная полоса прокрутки
				ES_LEFT|                // Текст выровненный по левому краю окна
				ES_AUTOHSCROLL|         // Возможность выхода текста за границу окна и автоматической горизонтальной прокрутки
				ES_MULTILINE,
				10,130,100,80,hWnd,(HMENU)EDIT2, hInst, NULL);
	break;
...

case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
		// Parse the menu selections:
		switch (wmId)
		{
		case BUTTON1://Если нажал кнопку
			WNDCLASS w;
			memset(&w,0,sizeof(WNDCLASS));

				w.lpfnWndProc = ChildProc;
				w.hInstance = hInst;
				w.hbrBackground = GetStockBrush(WHITE_BRUSH);
				w.lpszClassName = L"ChildWClass";
				w.hCursor=LoadCursor(NULL,IDC_CROSS); 
				RegisterClass(&w);
				HWND child;

				child=CreateWindowEx(0,L"ChildWClass",(LPCTSTR) L"Дочернее",
					WS_CHILD |WS_OVERLAPPEDWINDOW| WS_BORDER | WS_VISIBLE ,250,50,
					400,300,hWnd,(HMENU) 1,hInst,NULL);
				ShowWindow(child,SW_NORMAL);
				UpdateWindow(child);
				SetFocus(child);//////////////////////////////////////////////////////////////UpdateWindow(child);
			break;
...
вот дочернего:
Код:
case WM_CREATE:
			Edit1=CreateWindow(L"edit", L"Текст", WS_CHILD|WS_BORDER|WS_VISIBLE|WS_CLIPSIBLINGS|
				WS_VSCROLL|             // Окну добавляется горизонтальная полоса прокрутки
				WS_HSCROLL|             // Окну добавляется горизонтальная полоса прокрутки
				ES_LEFT|                // Текст выровненный по левому краю окна
				ES_AUTOHSCROLL|         // Возможность выхода текста за границу окна и автоматической горизонтальной прокрутки
				ES_MULTILINE,
				10,10,300,80,hWnd,(HMENU)EDIT1, hInst, NULL);
		break;
...
x_Alex_x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI - исключение дочерних окон из перехода по ctrl+tab andrew_jr20 C# (си шарп) 0 12.01.2012 22:52
Посоветуйте компонент сохранения положения и размера дочерних окон delphicoding Компоненты Delphi 3 27.07.2011 20:28
Закрытие и открытие дочерних MDI окон приложения chandrasecar Общие вопросы Delphi 4 16.05.2011 13:41
Поведение дочерних окон maryan.vetrov C# (си шарп) 9 27.02.2011 18:09
SetWindowPos для дочерних окон и битмапов. Alex Cones Общие вопросы Delphi 4 02.02.2011 13:49