.... // WM_LBUTTONDOWN
SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
Как создать свое окно? К примеру круглое.
Хочется нарисовать его в фотожопе и юзать.
rgn:HRGN;
rgn:=CreateEllipticRGN(0,0,100,100);
Отличный ответ. А по конкретней. Регионы юзать умею. Как спрятать стандартное окно и создать свое. Можно даже кодом в меня бросить. Я не обижусь.
создаешь регион, а затем присваиваешь окну этот регион SetWindowRGN
Создавать в WM_CREATE?
можно наверное и там, попробуй. А можно и до цикла обработки сообщений
Спасибо, что натолкнул. :) Сейчас буду мучать и еще задавать вопросы.
Та часть которая осталась - обрабатывается виндой. Кусок строки с названием окна и т.д. Как мне самостоятельно обработать все сообщния. Может я не очень выражаюсь. Я хочу к примеру, чтоб окно тягалось за любую его часть. Просто сейчас идет четкое разделение областей. А мне надо это побороть. (Ну и бред написал. Если не понятно - я постараюсь пояснить)
ну, в windows сообщениях я не очень, но попробуй послать сообщение вроде WM_SYSCOMMAND wparam или lparam $F012
Однако
что однако?
{100,15},{90,8},{80,3},{75,2},{70,1},{65,0},{55,0},{50,1},{35,5},{30,8},
{25,11},{20,15},{15,20},{11,25},{8,30},{5,35},{3,40},{2,45},{1,50},{0,55},
{0,65},{1,70},{2,75},{3,80},{6,85},{9,90},{12,95},{16,100},{20,105},{25,110},
{30,115},{35,120},{42,125},{49,130},{56,135},{64,140},{72,145},{80,150},{90,155},{100,160},
{100,160}, {110,155},{118,150},{127,145},{135,140},{143,135},{150,130},{157,125},{164,120},{170,115},
{175,110},{180,105},{184,100},{188,95},{191,90},{194,85},{196,80},{197,75},{198,70},{199,65},
{199,55},{198,50},{198,45},{197,40},{195,35},{192,30},{189,25},{185,20},{180,15},{175,11},
{170,8},{165,5},{150,1},{130,1},{125,2},{120,3},{110,8},{100,15},{100,15},{100,15}
};
POINT P[80];
for (unsigned short int i=0; i<80; i++)
{
P.x=arp[0];
P.y=arp[1];
}
HRGN hRgn = CreatePolygonRgn(P, 80, WINDING);
SetWindowRgn(hwnd,hRgn,true);
[COLOR="Gray"]блин, вот-вот, вместо правки того поста, случайно грохнул и все[/COLOR]
Хотя, это ещё что... Видел когда-то красЫвую формулу ("график конопли") прорисовки небезизвестного листка (с зубчиками, все как положено), вот это реально готично :D А может кто напомнит, как бы сердце по формуле отрисовать ("задницеобразное", а не "остромордое")?
Цитата: Mister_X
Отлично. Окно круглое. Теперь следующий вопрос.
Та часть которая осталась - обрабатывается виндой. Кусок строки с названием окна и т.д. Как мне самостоятельно обработать все сообщния. Может я не очень выражаюсь. Я хочу к примеру, чтоб окно тягалось за любую его часть. Просто сейчас идет четкое разделение областей. А мне надо это побороть. (Ну и бред написал. Если не понятно - я постараюсь пояснить)
Та часть которая осталась - обрабатывается виндой. Кусок строки с названием окна и т.д. Как мне самостоятельно обработать все сообщния. Может я не очень выражаюсь. Я хочу к примеру, чтоб окно тягалось за любую его часть. Просто сейчас идет четкое разделение областей. А мне надо это побороть. (Ну и бред написал. Если не понятно - я постараюсь пояснить)
Чтобы убрать заголовок, убери флаг стиля WS_CAPTION.
А чтобы перетаскивать за любое место - обрабатывай WM_LBUTTONDOWN
Код:
case WM_MOUSEMOVE:
x=LOWORD(wParam);
y=HIWORD(wParam);
.......
case WM_LBUTTONDOWN:
if("проверить не двигается ли мышь"......."не помню как;))))")
MoveWindow("не помню что)))",x,y);
можно конечно вложить это все только в case WM_LBUTTONDOWN:,
но мне опыта не хватает....впрочем его воще нет...я только учусь)))
а что бы клик на окне но не в регионе проскакивал на другую программу
case WM_NCHITTEST:
return(LRESULT) HTTRANSPARENT;
вроде бы так ...посмотри в мсдн про HTTRANSPARENT может там другие идендификаторы найдутся
Увидели лажу?киньте камнем))))
как сделать часть окна прозрачной?
покажите код...
никак не пому понять как присобачить ресурс (иконка и курсор)..
должно рисоваться иконка в раб.обасти и курсор меняется на свой.
..
wndclass.hIcon = LoadIcon(hInstance, szAppName);
wndclass.hCursor = LoadCursor(hInstance, szAppName);
...
case WM_CREATE :
hIcon = LoadIcon(hInst, szAppName); //не работает!!!
cxIcon = GetSystemMetrics(SM_CXICON);
cyIcon = GetSystemMetrics(SM_CYICON);
return 0;
case WM_PAINT :
hdc = BeginPaint(hwnd, &ps);
for(y = cyIcon; y <"экран по икс"; y += 2 * cyIcon)
for(x = cxIcon; x < "экран по игрек"; x += 2 * cxIcon)
DrawIcon(hdc, x, y, hIcon); //не рисуется зараза!!!
курсор остаётся последним при вхождении в раб.область..."часы" например при создании...
меняется только иконка в панели задач.
укажите правильную последовательность компиляции и линка к проекту(вдруг я не в том порядке делаю)...вылез какой то resourse.h в нём ничего не надо менять???
надеюсь понятно изъяснился)))
ZUG_CUG
вы знаете, вы влезли не в ту тему, создайте свою и там спрашивайте себе на здоровье
2
вы знаете, вы влезли не в ту тему, создайте свою и там спрашивайте себе на здоровье
case WM_MOUSEMOVE:
x=LOWORD(wParam);
y=HIWORD(wParam);
.......
case WM_LBUTTONDOWN:
if("проверить не двигается ли мышь"......."не помню как;))))")
MoveWindow("не помню что)))",x,y);[/QUOTE]
Зачем такое извращение?! Я же выше написал рабочий и удобный(!), как с точки зрения программера, так и системы, код!
[quote=ZUG_CUG]
а что бы клик на окне но не в регионе проскакивал на другую программу
case WM_NCHITTEST:
return(LRESULT) HTTRANSPARENT;[/quote]
При установке региона, оставшаяся область окна и так становится прозрачной (полностью)
то что предложил HexEdit это тоже небольшое насилие над природой. лучше обрабатывать WM_NCHITTEST и возвращать HTCAPTION на необходимой области
нда, спс... хоть и менее удобно, но лучше... респект... буду иметь ввиду
почему менее удобно?
Дольше... и кода больше... мне так показалось))) мож случано :)
Цитата: HexEdit
Дольше... и кода больше... мне так показалось))) мож случано :)
Код:
case WM_NCHITTEST:
{
LRESULT lr = DefWindowProc(hWnd, message, wParam, lParam);
if (HTCLIENT == lr)
return HTCAPTION;
else
return lr;
}
{
LRESULT lr = DefWindowProc(hWnd, message, wParam, lParam);
if (HTCLIENT == lr)
return HTCAPTION;
else
return lr;
}
Цитата:
Код:
.... // WM_LBUTTONDOWN
SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
будешь смеятся, но с таким кодом при щелчке мышью в клиентской области окна, оно закрывается :D
А по поводу твоего способа (который ты предложил) я не спорю, а наоборот поддерживаю. Удобно, а иногда бывает и необходимо))
соррри! лоханулся как последнейший ламерюга!
Код:
case WM_LBUTTONDOWN:
SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
case WM_DESTROY:
PostQuitMessage(0);
break;
SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
case WM_DESTROY:
PostQuitMessage(0);
break;
мне стыдно!
Да ладно... у кого не бывает:) сам иногда глупые ошибки делаю... бывает по часу разыскиваю, что не так, а оказывается что все дело в какой-то фигне))