Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.21;
Скачать: CL | DM;

Вниз

Форма форм :)   Найти похожие ветки 

 
Val ©   (2002-02-05 12:23) [0]

Многие приложения, предназначенные для решения задач в узкой,специфической области, используют довольно интересный интерфейс, основанный на изображении главной формы в виде обьекта деятельности(магнитофон, радио, видео, паровой котел :) и т.д.). Хотелось бы узнать мнение людей, работавших в данном направлении, какими способами реализуется неправильная форма главной Form, какие предпочтительней. Поскольку, я, пока что, вижу один выход - в использовании регионов и их комбинирования, но, зачастую, нужна очень сложная форма Form :( быть может кто-то подскажет полезные ссылки...Заранее благодарен.


 
Val ©   (2002-02-05 16:26) [1]

Нашел тут, кое-что, вернее функцию получения региона из .bmp-файла, но сам все перевести не могу, поскольку в синтаксисе VC++ не силен :(( Быть может кто-нибудь переведет?


HRGN CreateRgn(LPTSTR szFileName, LPPOINT pPoint)
{
HBITMAP hBmp = (HBITMAP)LoadImage( NULL, szFileName,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
if ( !hBmp ) return NULL;

BITMAP bi;
BYTE bpp;
DWORD e;
DWORD f, t;
INT i, j;
bool b = false;
HRGN Rgn, ResRgn = CreateRectRgn( 0, 0, 0, 0 );

GetObject( hBmp, sizeof( BITMAP ), &bi );

bpp = bi.bmBitsPixel >> 3;

BYTE *pBits = new BYTE[ bi.bmWidth * bi.bmHeight * bpp ];

int p = GetBitmapBits( hBmp, bi.bmWidth * bi.bmHeight * bpp,
pBits );

if ( pPoint == NULL || pPoint->x >= bi.bmWidth ||
pPoint->y >= bi.bmHeight )
e = *(DWORD*)pBits;
else
e = *(DWORD*)(pBits + (pPoint->y * bi.bmWidth + pPoint->x) * bpp );

e <<= 32 - bi.bmBitsPixel;

for ( i = 0; i < bi.bmHeight; i++ )
for ( j = 0; j < bi.bmWidth; j++ )
{
t = *(DWORD*)(pBits + (i * bi.bmWidth +
j) * bpp) << (32 - bi.bmBitsPixel);

if ( t == e )
{
if ( !b )
{
f = j;
b = true;
} else if ( j == (bi.bmWidth - 1) )
{
Rgn = CreateRectRgn( f, i, j, i + 1 );
CombineRgn( ResRgn, ResRgn, Rgn, RGN_OR );
b = false;
}
} else if ( b )
{
Rgn = CreateRectRgn( f, i, j, i + 1 );
CombineRgn( ResRgn, ResRgn, Rgn, RGN_OR );
b = false;
}
}

delete pBits;

return ResRgn;
}


 
BlankAlex ©   (2002-02-05 16:34) [2]

На www.woll2woll.com есть библиотека 1st Class. Они реализовали построение любой формы на основе BMP. На хакеских серверах есть кряки для библиотеки


 
Val ©   (2002-02-05 16:45) [3]

URL http://www.programme.ru/download/exotica.zip
программка под Excel для создания регионов


 
Nikolay ©   (2002-02-05 17:27) [4]

2 Val

Вот достаточно не сложный код он обрисовывает любую форму!

Var
X1,X,Y: Integer;
begin
X1 := -1;
R := CreateRectRgn(0,0,0,0);

ImageFormMain.Picture.LoadFromFile("11.bmp");
FormMain.BorderStyle := bsNone;
FormMain.Height := ImageFormMain.Picture.Bitmap.Height;
FormMain.Width := ImageFormMain.Picture.Bitmap.Width;

With ImageFormMain.Picture.Bitmap Do
For Y := 0 To Height-1 Do
For X := 0 To Width-1 Do
If Canvas.Pixels[X,Y] <> Canvas.Pixels[0,0] Then
Begin If X1=-1 Then X1 := X; End
Else
If X1>-1 Then
Begin
CombineRgn(R,R,CreateRectRgn(X1,Y,X-1,Y+1),RGN_OR);
X1 := -1;
End;
SetWindowRgn(Handle, R, True);
// SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_LAYERED);
end;



Страницы: 1 вся ветка

Текущий архив: 2002.02.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
4-66706
masha
2001-12-23 01:18
2002.02.21
WIN API


4-66709
vector^
2001-12-22 12:37
2002.02.21
Как найти чужое окно.Смотрел FAQ , но ни чего не понял :-(


6-66641
Саша.Ру
2001-11-29 19:01
2002.02.21
Подскажите (умираю!) как задать Proxy server в реестре?


1-66535
Brand
2002-02-04 22:57
2002.02.21
DLL, не завершается основная программа.


3-66466
Matvey
2002-01-29 01:02
2002.02.21
Удаление записи в ACCESS!!!