Текущий архив: 2002.06.13;
Скачать: CL | DM;
Вниз
Как используя только WinApi, Создать на форме : Найти похожие ветки
← →
IronHawk (2002-04-30 16:01) [40]
> mad0max (30.04.02 15:41)
Это я Сразу сделал!
Ладно, я понял, фига с два тут помогут.
ОК!
Спасибо !
← →
Кулюкин Олег (2002-04-30 16:07) [41]2 IronHawk © (30.04.02 15:36)
> Так как Сабж сотворить на VCL?
См. ответ ZZ (29.04.02 17:30).
← →
mad0max (2002-04-30 16:19) [42]to IronHawk
Не надо обижать хороших людей, которые тусуются здесь! Мы тебе чем могли ответили-помогли!
Я же тебе писал
1. создавай окно (создание класса, регистрация класса)
2. переписывание оконной функции
3. Определение нового события (это правда просто, но все равно гемор)
итак строк 100 у меня времени нет писать, хотя направление я тебе указал думаю точно
← →
IronHawk (2002-04-30 16:51) [43]
> mad0max (30.04.02 16:19)
> итак строк 100 у меня времени нет писать, хотя направление
> я тебе указал думаю точно
АГА!
← →
Malder (2002-04-30 17:01) [44]Удалено модератором
← →
Jin (2002-04-30 17:59) [45]Знаете кого мне IronHawk напоминает ?
Мужика из стааааарого анекдота:
Цирк. Объявляют номер: Выступают клоуны!!!
Голос из зала: клоуны идиоты! пида%асы!
Объявляют следующий номер: Выступают акробаты!!!
Тот же голос из зала: акробаты идиоты!! пида%асы!
Объявляют следующий номер: А сейчас, дамы и господа, смертельный номер! Прижок из-под купола в кастрюлю с водой!!!
Голос из зала: Отпустите! Куда вы меня тащите?!? идиоты!! пида%асы!
← →
app (2002-04-30 18:12) [46]Jin (30.04.02 17:59)
Еще один враг
Орленое орленок последней гранатой
из ветки врагов отмело
Меня называли орленком в отряде
Враги называли ...
← →
фтщв (2002-04-30 21:19) [47]2IronHawk
Я так и не понял, может тебе надо в свойствах формы выставить
Width = 30
Height=150
BorderStyle = bsNone
?
← →
IronHawk (2002-04-30 23:51) [48]
> фтщв (30.04.02 21:19)
Это если, чётко через ВЦЛ.
А если у меня есть ....
...хотя это тема другой ветки.
← →
NA (2002-05-02 00:24) [49]А мне еще один анекдот вспомнился по прочтении темы:
- .... [skippppp]
- .... [skippppp]
- Вовочка, а кто у тебя дома есть?
- Никого. Пахан - алкаш - бомжует, мать - проститутка, сестра сидит - она фармазонщица.
- Вовочка, а что у тебя голос такой гнусавый?
- Сифилис.
- А кем ты, Вовочка, хочешь стать?
- КОСМОНАВТОМ !!!!!!
← →
Вадим (2002-05-02 00:38) [50]2IronHawk ©
Ты и вправду такой тупой?
← →
IronHawk (2002-05-02 00:47) [51]
> Вадим © (02.05.02 00:38)
> 2IronHawk ©
>
> Ты и вправду такой тупой?
Не груби .....
← →
Evgeny (2002-05-03 07:55) [52]>IronHawk
Твой вопрос по сути очень прост. И технически легко выполняется. Когда создаешь окно - не указывай параметр WS_BORDER, кнопку тебе придется отрисовывать вручную и отслеживать через WM_OWNERDRAW, таким образом ты сразу решишь все свои проблемы. Если хочешь подробнее, то пиши, отвечу на примере.
← →
IronHawk (2002-05-03 23:21) [53]
> Evgeny © (03.05.02 07:55)
> . Если хочешь подробнее, то пиши, отвечу на примере.
Ессно хочу.
А ваще это мысль - неотресовывать сразу бордер!
← →
Evgeny (2002-05-07 09:19) [54]Вот тебе небольшой набросок.
program noborder;
uses
Windows, Messages;
var
Wnd : HWND;
Msg : TMsg;
WndClass : TWndClass;
hBmp : HBITMAP;
Index : Integer;
const
BkColor : array[0..6] of TColorRef = ($FF0000, $00FF00, $0000FF,
$FFFF00, $FF00FF, $00FFFF,
$FFFFFF);
function WindowProc(Wnd: HWND; Msg: Integer;
wParam : Word; lParam: Longint): Integer; stdcall; export;
var
ps : TPaintStruct;
R : TRect;
Br : HBRUSH;
begin
WindowProc := 0;
case Msg of
WM_CREATE :
begin
// Здесь грузим картинку из ресурса
hBmp := LoadBitmap(hInstance, "test");
// и если нужно выводим на кнопку
SendMessage(GetDlgItem(Wnd, 100), BM_SETIMAGE, IMAGE_BITMAP, hBMP);
Index := 0;
end;
WM_PAINT :
begin
BeginPaint(Wnd, ps);
GetClientRect(Wnd, R);
br := CreateSolidBrush(BkColor[Index]);
FillRect(ps.hDC, R, Br);
DeleteObject(Br);
EndPaint(Wnd, ps);
end;
// Ну а это, чтобы было за что таскать окно.
// Таскаем за поверхность самого окна
WM_LBUTTONDOWN :
begin
ReleaseCapture;
SendMessage(Wnd, WM_SysCommand, $F012, 0);
end;
WM_COMMAND :
begin
case loWord(wParam) of
IDOK : SendMessage(Wnd, WM_CLOSE, 0, 0);
100 :
begin
InvalidateRect(Wnd, Nil, False);
inc(Index);
if Index > High(BkColor) then Index := 0;
end;
end;
end;
WM_DESTROY :
begin
DeleteObject(hBmp);
PostQuitMessage(0);
exit;
end;
end;
WindowProc := DefWindowProc(Wnd, Msg, WParam, LParam);
end;
begin
WndClass.style := CS_HREDRAW or CS_VREDRAW;
WndClass.lpfnWndProc := @WindowProc;
WndClass.cbClsExtra := 0;
WndClass.cbWndExtra := 0;
WndClass.hInstance := hInstance;
WndClass.hIcon := LoadIcon(0,idi_application);
WndClass.hCursor := LoadCursor(0, IDC_ARROW);
WndClass.hbrBackGround := GetStockObject(LTGRAY_BRUSH);
WndClass.lpszMenuName := "";
WndClass.lpszClassName := "noborder";
if RegisterClass(WndClass) = 0 then
Exit;
Wnd := CreateWindowEx(0,"noborder",
"noborder",
WS_SYSMENU or WS_POPUP,
100, 100, 300, 140, 0, 0,
hInstance, NIL);
CreateWindowEx(0, "BUTTON",
"", WS_CHILD or WS_VISIBLE or BS_BITMAP,
3, 3, 15, 15,
Wnd, 100,
hInstance, NIL);
CreateWindowEx(0, "BUTTON",
"Exit", BS_DEFPUSHBUTTON or WS_CHILD or WS_VISIBLE or WS_TABSTOP,
220, 100, 75, 24,
Wnd, IDOK,
hInstance, NIL);
ShowWindow(Wnd, CmdShow);
while(GetMessage(msg, 0, 0, 0)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
Halt(msg.wParam);
end.
← →
IronHawk (2002-05-07 10:23) [55]
> Evgeny © (07.05.02 09:19)
То что надо!
Никаких 2000 строк, никаких проблем с цветом формы, никаких проблем с размером формы и тем более самого *.ехе-шника!
Спасибо!
> Malder © (29.04.02 20:27)
Учитесь!
← →
Кулюкин Олег (2002-05-07 10:43) [56]2 IronHawk © (07.05.02 10:23)
Вы хотели "СпидБутон", а в примере кнопки не зеленые (1), без картинок (2).
Стандартные "Бутоны", а не "СпидБутоны".
Если довести пример до кондиции, получится если не 2000 строк, то 1000 точно.
← →
IronHawk (2002-05-07 11:04) [57]
> Кулюкин Олег © (07.05.02 10:43)
> 2 IronHawk © (07.05.02 10:23)
> Вы хотели "СпидБутон",
Снопку со свойствами СпидБутона!
а в примере кнопки не зеленые (1),
Несмешно!
> без картинок (2).
С картинками!
> Стандартные "Бутоны", а не "СпидБутоны".
см. выше.
> Если довести пример до кондиции, получится если не 2000
> строк, то 1000 точно.
До кондиции, надо больше строк!
← →
Evgeny (2002-05-08 10:06) [58]>Кулюкин Олег
Если сильно нужно, то как я уже говорил выше можно не создавать стандартную кнопку, а полностью отрисовать свою. При этом можно ее сделать зеленой, красной или синей в крапинку. Разницы нет. Код увеличится буквально на 20 строчек. Можно одновременно выводит картинку и текст - это тоже не трудно. И конечно же для такой простой задачи не потребуется код на 1000 строк. С таким количеством строк на WinAPI вполне реально написать серьезную рабочую программу. А если посмотреть исходные файлы на SpeedButton, то прекрасно видно, что данная кнопка полностью отрисовывается с нуля без создания класса. И размер исходного файла не заслуга VCL, а его беда. Ну не умеет он делать маленьких файлов и с каждым новым выпуском Delphi, у него это получается все хуже. Попробуйте ради интереса скомпилировать один и тот же проект под Delphi 2, а потом под 5. Разница, что и говорить, печальная.
← →
IronHawk (2002-05-08 12:58) [59]to ALL
Учитесь у Evgeny © человек новый, но корректно, красиво, по существу ответил на вопрос, лишних глупых переспросов и терминологических руганий небыло, нареканий и упрёков, и даже дал "тупой код"!
Таких людей надо по больше в форум!!!
to Evgeny ©
Спасибо ещё раз!
← →
Дремучий (2002-05-08 13:49) [60]2 IronHawk
>>Учитесь у Evgeny © человек новый
Login: Evgeny 14.08.01 09:04 (примерная дата ввода регистрации)
Login: IronHawk 26.12.01 10:19
насчет нового человека, это ты погорячился...
;)
← →
Подонок (2002-05-08 13:59) [61]Надо же мы с хавчиком в один день появились...вроде как. Ну класс.
← →
IronHawk (2002-05-08 14:05) [62]
> Дремучий © (08.05.02 13:49)
> 2 IronHawk
> >>Учитесь у Evgeny © человек новый
>
> Login: Evgeny 14.08.01 09:04 (примерная дата ввода регистрации)
> Login: IronHawk 26.12.01 10:19
>
> насчет нового человека, это ты погорячился...
> ;)
Дремучий ты, я не про регистрацию, а про посещение моих веток!!!
← →
SPeller (2002-05-08 14:05) [63]2Evgeny
Ой, ну пасибки, запустил ваш код... Ну хоть порадовался за размер ЕХЕ-шника из Дельфи шестой... Ну прям радость... :-)))
← →
Дремучий (2002-05-08 14:24) [64]2IronHawk © (08.05.02 14:05)
>>Дремучий ты, я не про регистрацию, а про посещениемоих
>>веток!!!
У тебя очень интересная точка отсчета. :))
Откуда ты знаешь, сколько он их посещает, ты можешь видеть, только, сколько он отвечает.
и еще,
2Evgeny
скоро похвала Хавка, будет хуже нагоняев модератора.
Так что задумайся...
;)
← →
Evgeny (2002-05-08 14:56) [65]Как сказал Panov, я ко всем стараюсь относится ровно, но не по должности, а просто тошно лаяться (жаль не всегда получается). И если я попал на форум, да еще знаю ответ, то стараюсь ответить.
← →
Дремучий (2002-05-08 17:06) [66]2 Evgeny ©
стараться как минимум нужно тогда, когда этот ответ нужен
этому человеку,а здесь Хавк решил в роли экзаменатора потусоваться, ты же видишь, что это ветка в ПОТРЕПАТЬСЯ и
относиться к ней нужно соответственно.
как говаривал дон Хуан,
БЕЗУПРЕЧНОСТЬ - есть ни что иное,
как адекватное распределение энергии
← →
IronHawk (2002-05-09 00:52) [67]
> Дремучий © (08.05.02 17:06)
> 2 Evgeny ©
> стараться как минимум нужно тогда, когда этот ответ нужен
>
> этому человеку,а здесь Хавк решил в роли экзаменатора потусоваться,
> ты же видишь, что это ветка в ПОТРЕПАТЬСЯ и
> относиться к ней нужно соответственно.
>
> как говаривал дон Хуан,
> БЕЗУПРЕЧНОСТЬ - есть ни что иное,
> как адекватное распределение энергии
Ты полностью соответствуешь своему нику.
Я никого в этой ветке не экзаменовал.
Страницы: 1 2 вся ветка
Текущий архив: 2002.06.13;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.006 c