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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2010, 18:09   #1
Crudelis
Пользователь
 
Аватар для Crudelis
 
Регистрация: 05.04.2010
Сообщений: 56
По умолчанию Получить дескриптор дочернего окна

Суть программы такова, есть диалоговое окно, реализовать такую функциональность, зажимаем левую кнопку мыши, тянем её, отпускаем и получаем static text в окне где нажатие левой кнопки это начальные координаты(х,у) а отпускание это конечные координаты(назовем их ширина и высота). Данное действие я реализовал:

Код:
#include<windows.h>
#include<tchar.h>
#include"resource.h"
HWND hCreate[200];
HINSTANCE hInst;
int uIndex=0,x,y,width,height;
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrev,LPSTR lpCmdLine,int nShowCmd){
	HINSTANCE hInst = hInstance;
	return DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc);

}
BOOL CALLBACK DlgProc(HWND hWnd,UINT uMess,WPARAM wParam,LPARAM lParam)
{
	switch(uMess){
		case WM_CLOSE:
			EndDialog(hWnd,0);
			return TRUE;
		case WM_LBUTTONDOWN:
				x = LOWORD(lParam);
				y = HIWORD(lParam);
				return 1;
		case WM_LBUTTONUP:
			{
				TCHAR str[30]={};
				width = (LOWORD(lParam));
				height = (HIWORD(lParam));
				if(x!=width&&y!=height){
				width -=x;
				height -=y;
				if(height>=10&&width>=10){
				wsprintf(str,TEXT("Порядковый №: %d"),uIndex+1);
				hCreate[uIndex] = CreateWindowEx(0,
                                                        TEXT("STATIC"),str,WS_CHILD|WS_VISIBLE|WS_BORDER|
                                                         SS_CENTER|CS_DBLCLKS|WS_EX_CLIENTEDGE,
					x,y,width,height,
                                                        hWnd,0,hInst,0);
				SetWindowText(hCreate[uIndex],str);
				uIndex++;
				x=y=width=height=0;
				}
				else
					MessageBox(hWnd,TEXT("Минимальный размер 10х10"),TEXT("Error"),MB_OK|MB_ICONHAND);
				}
			}
			return TRUE;
		case WM_LBUTTONDBLCLK:

		case WM_RBUTTONDOWN: 
			...................
			return 1;



	}
	return 0;
}
Я не могу справиться со вторым функционалом, а именно при нажатии на правую кнопку внутри созданного static text нужно вывести в MessageBox его Название, ширину и координаты, как получить дескриптор static окна при нажатии правой кнопки я не могу разобраться.
сout<<"Изучаю программирование" точка с запятой

Последний раз редактировалось rpy3uH; 18.10.2010 в 12:18.
Crudelis вне форума Ответить с цитированием
Старый 15.10.2010, 21:45   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

WindowFromPoint
counter вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WM_KYEDOWN у дочернего окна. MSga Win Api 9 02.01.2010 18:09
API определение дочернего окна senia Win Api 6 25.12.2009 01:23
Получить дескриптор окна другого приложения и сделать его активным Delphi 7 AndersX Помощь студентам 4 18.10.2009 09:32
Дескриптор окна DeFace Win Api 10 11.10.2009 16:52
Получить Handle TEdit'a, зная дескриптор родительского окна Cold_Night Win Api 2 13.02.2009 16:47