Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.100.210] |
|
Сообщ.
#1
,
|
|
|
Решил сделать гаджет-песочные часы. Вставил на форму Image1, в нём Bitmap с изображением песочных часов. Те области часов, которые должны быть прозрачными, я залил красным цветом. Далее задал свойства формы:
//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Form1->Color=255; Form1->TransparentColor=true; Form1->TransparentColorValue=255; } //--------------------------------------------------------------------------- Пока всё хорошо. Далее вставил найденный в Интернете код, позволяющий убрать системные кнопки окна, значок моего приложения в панеле задач, сделать так, чтобы моё окно не сворачивалсоь и его можно было перемещать левой мышкой: //--------------------------------------------------------------------------- bool SetToDesktop() { HWND listViewhwnd = FindWindowA("Progman", NULL); if(listViewhwnd) { listViewhwnd = FindWindowExA(listViewhwnd, NULL, "SHELLDLL_DefView", NULL); if(listViewhwnd) { listViewhwnd = FindWindowExA(listViewhwnd, NULL, "SysListView32", NULL); if(listViewhwnd) { Form1->BorderStyle = bsNone; ::SetParent(Form1->Handle, listViewhwnd); return true; } } } return false; } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { if(!SetToDesktop())ShowMessage("Ошибка SetToDesktop"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { long SC_DRAGMOVE = 0xF012; if(Button == mbLeft) { ReleaseCapture(); SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0); } } //--------------------------------------------------------------------------- Теперь мой гаджет стал красным, прозрачность исчезла, т.е. свойство Form1->TransparentColor=true не работает. Тогда я задал свойство TransparentColor=true в инспекторе объектов в свойствах формы. При запуске приложения форму вообще перестало быть видно. Строка, из-за которой перестала работать прозрачность формы: ::SetParent(Form1->Handle, listViewhwnd); Язык C++Builder 2009. Операционная система Windows Vista. Какими мыслями поделитесь, в каком направлении мне рыть? Попробую в других операционных системах и других версиях C++Builder. |