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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2010, 16:11   #1
Pirotexnik
Форумчанин
 
Аватар для Pirotexnik
 
Регистрация: 22.03.2009
Сообщений: 110
По умолчанию Обрисовывани окошка рамкой

Вобщем пишу програмку, которая по выбору мышкой окошка, будет его скрывать (sw_hide), но перед тем как выбрать окошко - нужно обрисовать, что выбераем.

Код:
#include <windows.h>
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS w;
memset(&w,0,sizeof(WNDCLASS));
w.style = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc = WndProc;
w.hInstance = hInstance;
w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
w.lpszClassName = L"SPY";
RegisterClass(&w);
hwnd = CreateWindow(L"SPY", L"SPY", WS_OVERLAPPEDWINDOW,
300, 200, 200, 180, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
HWND a;
LPRECT j;

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lParam)
{
switch (Message){
	case WM_DESTROY: 
		{
			PostQuitMessage(0);
			break;
		}
	case WM_LBUTTONDOWN: 
		{
			SetCapture(hwnd);
			

			break;
		}
	case WM_LBUTTONUP: 
		{	
			ReleaseCapture();			//завершаем захвват
			POINT p;					//обьявляем переменную для поинта
			p.x=LOWORD(lParam);			//получаем х
			p.y=HIWORD(lParam);			//получаем у
			ClientToScreen(hwnd,&p);	//получаем хандл
			HWND h=WindowFromPoint(p);	//запоминаем хандл
			a=h;						//вводим хэндл в глобальную переменную
			break;
		}
	case WM_RBUTTONDOWN:
		{
			ShowWindow(a,SW_HIDE);
			break;
		}
	case WM_KEYDOWN:
		{
			ShowWindow(a,SW_SHOW);
			break;
		}
	default:
		return DefWindowProc(hwnd, Message, wparam, lParam);
		}
return 0;
}
Вот тут, мы жмем левой кнопочкой по форме программы(моей), и перетаскуем курсор на окошко, которое следует скрыть. Потом, по отжиму л.кнопки мы получаем хандл скрываемого окошка, и по нажатию п.кнопки мышки по окошку моей программы - скрываем, по нажатию эни кей - показуем.

Так вот, выбирать окошко немного трудно, т.к. не видем над чем отжимаем кнопочку,(точнее видем, но не знаем это ли нам нужно). Теперь вопрос, КАК обрисовать выбираемое окошко, изначально не зная его хандла?)) Ведь хандл мы получаем по отжатию)))
Pirotexnik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод картинки с рамкой Syltan PHP 6 10.03.2010 02:18
Ввод текста в окошка квипа KoBRaAndrey Общие вопросы Delphi 6 27.11.2009 14:01
Определить размеры окошка Alex Cones Общие вопросы Delphi 7 06.11.2009 19:17
создание окошка и кнопочки в нем Olejik Общие вопросы C/C++ 13 30.09.2009 18:21
Проблема с рамкой =( dragwas HTML и CSS 3 03.02.2009 01:44