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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 23:56   #1
Qwe1
Пользователь
 
Регистрация: 15.05.2009
Сообщений: 29
По умолчанию Control в чужое окно

Как можно встроить Control (например, StaticText или EditBox) в чужое окно? С помощью FindWindow() я нашел нужное мне окно, а с помощью CreateWindow() создал контрол, но как встроить - не знаю.
Код:
hWndApp = FindWindow(NULL, "Калькулятор");
hWndCntrl = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE, 15, 15, 50, 50, hWndApp, NULL, NULL, NULL);
Qwe1 вне форума Ответить с цитированием
Старый 24.12.2010, 15:35   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

SetParent(hWndCntrl, hWndApp);
пыщь
JTG вне форума Ответить с цитированием
Старый 24.12.2010, 16:06   #3
Qwe1
Пользователь
 
Регистрация: 15.05.2009
Сообщений: 29
По умолчанию

Не получается у меня ( Хэндлы не нулевые, но контрол в окне приложения (в данном случае - калькуляторе) не появляется...

Код:
#include <windows.h>
#include <iostream>

using namespace std;

int main(void)
{
	HWND hWndApp, hWndCntrl;

	hWndApp = FindWindow(NULL, "Калькулятор");
	if(hWndApp)
	{
		hWndCntrl = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE, 15, 15, 50, 50, hWndApp, NULL, NULL, NULL);
		SetParent(hWndCntrl, hWndApp);
		cout << hWndApp << endl << hWndCntrl << endl;
	}

	return 0;
}
Qwe1 вне форума Ответить с цитированием
Старый 24.12.2010, 16:37   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но контрол в окне приложения (в данном случае - калькуляторе) не появляется...
Извиняюсь, а его обработчик оконный где описан?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2010, 16:53   #5
Qwe1
Пользователь
 
Регистрация: 15.05.2009
Сообщений: 29
По умолчанию

Когда есть главное окно - мне понятно как делать: я в структуру для регистрации класса окна писал что-нибудь типа "wc.lpfnWndProc = (WNDPROC) WndProc;", а в данном случае - как быть?
Qwe1 вне форума Ответить с цитированием
Старый 25.12.2010, 00:27   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

- Подгрузить в адресное пространство чужого приложения библиотеку, содержащую NewWndProc
- При инициализации библиотеки (DLL_PROCESS_ATTACH) вставить свой контрол, вызвать GetWindowLong c флагом GWL_WNDPROC, сохранить указатель на старую оконную процедуру OldWndProc
- Через SetWindowLong назначить свою оконную процедуру, в которой обрабатывать события от контрола и передавать управление обратно через СallWindowProc(OldWndProc, Wnd, Msg, wParam, lParam);
пыщь
JTG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[?] Послать клавишу в чужое окно, не выводя окно на передний план. Moriarty Win Api 4 21.02.2011 05:11
Вывести чужое окно на передний план TwiX Общие вопросы Delphi 10 12.10.2009 20:54
Показать\Скрыть чужое окно с меняющимся заголовком Vol666 Общие вопросы Delphi 17 23.09.2009 17:08
Скрыть чужое окно ЧИЖ Win Api 8 12.06.2008 00:55