Главная страница
    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.59 MB
Время: 0.006 c
7-40195
maks_200.
2002-03-18 21:38
2002.06.13
сидюк


8-40112
DenKop
2002-01-28 22:01
2002.06.13
DirectSound


1-40066
Arkan
2002-06-01 21:34
2002.06.13
Сортировка


1-40072
Korona
2002-06-01 19:37
2002.06.13
Убрать все кнопки кроме Close в MDIChild


6-40136
Aleksandr
2002-04-05 12:49
2002.06.13
Как узнать, является указанный путь сетевым или локальным?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский