Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.61 MB
Время: 0.014 c
1-39992
ЗЛ
2002-06-03 14:29
2002.06.13
И еще один вопрос (не в тему, но очень нужно) вынужден был постав


1-40080
indigo
2002-06-02 19:13
2002.06.13
forms


14-40150
demon-777
2002-05-08 22:43
2002.06.13
С праздником, уважаемые программисты !


4-40209
KoLega
2002-04-11 23:09
2002.06.13
А как програмно удалить файл, чтобы он не попадал в корзину?


3-39942
com6
2002-05-19 09:55
2002.06.13
Мастера, помогите выбрать БД