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

Вниз

Нужен приличный пример на Win API...   Найти похожие ветки 

 
Knight ©   (2004-01-01 02:42) [0]

Чтоб не гольное окно, как в большинстве простейших... а более менее рабочее приложение с кнопками, едитами, лэйблами, меню и т.п. но без использования KOL.


 
Ihor Osov'yak ©   (2004-01-01 02:47) [1]

хм.. Имхо, Вы или перепили, или недопили.. Приходи завтра, может что и где кто отыщет..


 
Игорь Шевченко ©   (2004-01-01 02:50) [2]

Ты эта...заказ напиши, что требуется-то :)) А то примеров много :)))

По сабжу: вместе с Platform SDK поставляется много-много демок, они и с меню и с кнопками и с прочими контролами. Переводишь с С и счастья тебе сразу будет даром.


 
Knight ©   (2004-01-01 02:52) [3]

>> Ihor Osov"yak © (01.01.04 02:47) [1]
> хм.. Имхо, Вы или перепили, или недопили..
Скорее второе чем первое... не пьюший я %)

>> Приходи завтра, может что и где кто отыщет...
Так я и не говорил, что нужно прямо щас... просто закинул вопрос, раз уж зашёл, т.к. завтра (в смысле сегодня :) появлюсь тут только после обеда. Ничего особо навороченного не надо, просто посмотреть, как грамотно оформляется код в таких приложениях и обрабатываются события.


 
Knight ©   (2004-01-01 02:54) [4]

И не на Си, а на Делфи... :)


 
Nous Mellon ©   (2004-01-01 09:58) [5]

Кстати меня тоже жутко беспокоит этот вопрос. Мне даже на С сойдет.
Пошел смотреть SDK


 
Sergey_Masloff   (2004-01-01 10:10) [6]

Knight © (01.01.04 02:54) [4]
>И не на Си, а на Делфи... :)
Знаешь, WinAPI он что в Це что в Делфи что в Вижуал Басике - одна фигня.


 
Думкин ©   (2004-01-01 10:10) [7]

Можно скачать Петзольда вместе с примерами и переводить потихому с Си - весьма полезная вещь.


 
Nous Mellon ©   (2004-01-01 10:51) [8]


> Можно скачать Петзольда вместе с примерами и переводить
> потихому с Си - весьма полезная вещь.

Линк плиз.
ЗЫ Про Яндекс знаю.


 
Knight ©   (2004-01-01 16:00) [9]

Мастаки, неужели никто ничего на АПИ не пишет?


 
Sergey_Masloff   (2004-01-01 17:29) [10]

Knight ©
>Мастаки, неужели никто ничего на АПИ не пишет?
1) Иди, минералочки попей. Отпустит.
Потом (завтра) если зуд не пройдет - открываешь примеры из SDK и переписываешь. Благо они-то переписываются один в один.
2) На API действительно никто не пишет. По крайней мере все что касается UI. И уже давно. Для тебя это новость?


 
Nick Dnery   (2004-01-01 17:29) [11]

2>Автор ветки.

Ну != мастера мне пока не дали =! ( жаль :-)), а вот примерчики есть, в польне приличные, но длинные очень и код местами без оформления...
Так что либо мылом, либо здесь, но за длинность кода прошу не ругаться....

Жду ответа.


 
Knight ©   (2004-01-01 17:38) [12]

>> Nick Dnery (01.01.04 17:29) [11]
Если код не измеряется метрами, то мыло в анкете... :)


 
Rouse_ ©   (2004-01-01 17:42) [13]

Весь VCL довольно хороший пример использования WinAPI...


 
Nick Dnery   (2004-01-01 17:49) [14]

2>Rouse_
:-)))))))))))))))))))))))))))))))

2>Knight ну не метрами, но наверно метром...
Вобщем буду отправлять килов по 300...
Там арзберешся.
И есче. В оригинальном виде - не для коммерческого использования.
И снова есче. АПИ но МАСМ32 примеры нужны?


 
SergP ©   (2004-01-01 18:08) [15]

2 Knight ©

Если что-нить добудешь, кинь мне плиз... на любое мыло (они оба рабочие).

А то я когда-то просил на форуме, но либо вообще ответа не получал, либо "гиганты мысли" ограничивались сообщениями подобными тем что в этой ветке..


 
Nick Dnery   (2004-01-01 18:27) [16]

2>Sergp
нЕ бузи

2>Knight
Готово, см. почту.
В присланном примере : (WinApi, винапее некуда):
========================================================
1.Создание окон различных виндовых стилей.
2. Работа с ownerdraw menu.
3. работа с Tray icon.
4. Работа с MCI.
5. Работа с реестром.
6. Суперклассинг.
7. Сабклассинг.
8. CommControls.
9. Timers.

и много чего еще. Повторяю. в оригинально виде не для коммерческог использования.
================================================================
Благодарности вем мастерам этого сайта, особенно
Игорю Шевченко.
Анатолию П.
panov.
song. (его пример работы с треем был использован -!)
oolokin"у и k@rt"y за моральную поддержку.


 
Knight ©   (2004-01-01 18:48) [17]

>> Nick Dnery (01.01.04 18:27) [16]
Спасибо, щас проверю, посмотрю... :)


 
Nick Denry ©   (2004-01-01 18:53) [18]

Всмысле Nick Denry (c). А то опечался я.


 
Knight ©   (2004-01-01 19:28) [19]

>> Nick Denry © (01.01.04 18:53) [18]
То что надо! Есть все моменты которые требовались. ОГРОМНОЕ СПАСИБО :)


 
Думкин ©   (2004-01-01 19:32) [20]


> [8] Nous Mellon © (01.01.04 10:51)

http://podgoretsky.com
Там и лежит, текст книги и примеры. Петзольд - Windows 95.


 
Nous Mellon ©   (2004-01-01 22:03) [21]


> [20] Думкин © (01.01.04 19:32)

Спасибо.

ЗЫ ИМХО tnx - пошло


 
Номолос   (2004-01-01 22:23) [22]

А мож в кладовочке выложите?


 
Knight ©   (2004-01-02 01:07) [23]

Во всех, даже простейших примерах окон на АПИ есть такой кусок:

wm_destroy :
Begin
postquitmessage(0); exit;
Result:=0;
End


Объясните, последовательность exit; Result:=0;
В чем его смысл?


 
Nick Denry ©   (2004-01-02 01:42) [24]

2>Knight.
1.На здоровье
2. WM_DESTROY:

Return Values
If an application processes this message, it should return zero.

Т.е. приложение олжно возвращать 0.

3.The PostQuitMessage function indicates to Windows that a thread has made a request to terminate (quit). It is typically used in response to a WM_DESTROY message.

VOID PostQuitMessage(

int nExitCode // exit code
);

Т.е. уведомляем винду, что мы выходим и дескриптор нафиг уже не нужен. Заодно и говорим код, с которым вышли. как errollevel в DOS , хотя наверное не совсем.


 
Knight ©   (2004-01-02 02:31) [25]

Я имел ввиду последовательность... разве Result будет выполняется после Exit?

Может надо так?


wm_destroy :
Begin
postquitmessage(0);
Result:=0;
exit;
End


 
Ske4er ©   (2004-01-02 03:25) [26]

http://delphi.mtu-net.ru/zip/createwnd.zip


 
Думкин ©   (2004-01-02 06:39) [27]

> [25] Knight © (02.01.04 02:31)

Честно сказать, я весьма удивлен
> Во всех, даже простейших примерах
я, как раз, везде вижу ваш второй вариант.


 
Rouse_ ©   (2004-01-02 13:26) [28]

> [25] Knight © (02.01.04 02:31)
По логике на WM_DESTROY Result не нужен... так как там не Send а Post
Если он тебе мешает, можешь удалить эту строку...


 
SergP ©   (2004-01-02 15:53) [29]


> Nick Dnery (01.01.04 18:27) [16]
> 2>Sergp
> нЕ бузи


Неужели я сказал что-то обидное? Если да, то дико извиняюсь.

А вообще кто-нить, плиз пришлите мне копию этого... Или в кладовку выложите, если это вас не затруднит.


 
Nick Denry ©   (2004-01-02 16:22) [30]

Да, в строчке явно очепятка. Последовательность скореее всего действительно надо изменить.

Вопрос ко всем : есть у меня несколько действительно веселых наработок на АПИ на дельфи и на МАСМе, хотелось бы их действительно где -нибудь в нете выложить. С исходниками есс-но. Но как это сделать?


 
Rouse_ ©   (2004-01-02 16:45) [31]

> [30] Nick Denry © (02.01.04 16:22)
Если веселые... вышли мне, я их выложу на сайте...


 
Nick Denry ©   (2004-01-02 16:50) [32]

Не rouse, твой сайт я знаю, это круто. Я имел ввиду под словом веселые - сложность кода. Это там где он вылизан до запятой и размер исходника килобайт на 20-30 (иногода меньше) превышает размер екзешника. А для воего сайта подойдет только
Поздравлялка Универсальная (с). С цветочками, для девушек. На днях вышлю, посмотришь.


 
Knight ©   (2004-01-02 17:20) [33]

>> Думкин © (02.01.04 06:39) [27]
Ну не знаю... а у меня сколько примеров и везде одно, даже в русском хелпе по WinAPI, в примере как создать минимально окно, следующее...


function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult;
stdcall;
Begin
case msg of
wm_destroy :
Begin
postquitmessage(0); exit;
Result:=0;
End
else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
End;


Ну да ладно... не суть важно.
Ещё вопрос. Искал как создать подобие панели получился такой вариант:


Panel1:= CreateWindow("STATIC",PChar(""), WS_DLGFRAME or WS_CHILD or WS_VISIBLE or SS_NOTIFY,97,12,100,100, MainWnd,0,hInstance,nil);


Так она делается?


 
Knight ©   (2004-01-02 17:51) [34]

И ещё... почему кнопка созданная на главном окне нажимается, а на моей панели - нет?


 
SPeller ©   (2004-01-02 18:03) [35]

2 Knight
Перешли, пожалуйста, мне тот этот архивчик. Интересно некоторые вещи посмотреть, авось чего-то не знаю :-) Особенно супер/субклассинг и MCI.


 
SPeller ©   (2004-01-02 18:06) [36]


> почему кнопка созданная на главном окне нажимается, а на
> моей панели - нет?

Попробуй панели указать стили WS_CLIPCHILDREN и WS_CLIPSIBLINGS, а кнопке обязательно WS_CHAILD.


 
Knight ©   (2004-01-02 18:50) [37]

>> SPeller © (02.01.04 18:03) [35]
> Перешли, пожалуйста, мне тот архивчик.
Только если Nick Denry добро даст... :)


 
Nick Denry ©   (2004-01-02 19:23) [38]

2>Knight ©

Даю добро. :-)))))))))))))))))))))

А то мой траффик скоро накроется.

И еще : выдержка из Iczelion:

Windows 95 принесла несколько новых элементов пользовательского интерфейса, сделавших GUI более разнообразным. Hекоторые из них широко использовались и в Windows 3.1, но программисты должны были программировать их самостоятельно. Теперь Микрософт включил их в Windows 9x и NT. Мы изучим их в этом туториале.

Вот список новых контролов:

Toolbar
Tooltip
Status bar
property sheet
property page
Tree view
List view
Animation
Drag list
Header
Hot-key
Image list
progress bar
Right edit
Tab
Trackbar
Up-down

Тебе для полного счастья нужен toolbar. Сам туториал ищи на www.wasm.ru, если не найдешь, то тогда конечно могу переслать.

И снова еще :-)))))))))))))

Часто, очень часто хорошие (точнеее профессиональные)примеры использования АПИ встречаются как раз в МАСМовских прмерах.


 
Nick Denry ©   (2004-01-02 19:45) [39]

Прочитал еще раз твой вопрос про кнопку:
Походу, ты создаешь кнопку на статие со стилем WS_CHILD, и он является родительским окном для твоей кнопки, он и мессагу wm_command получает.

Копай в сторону toolbar.

выдержка оттуда же:

Class Name Common Control

Имя класса Common Control"ы

ToolbarWindow32 Toolbar

tooltips_class32 Tooltip

msctls_statusbar32 Status bar

SysTreeView32 Tree view

SysListView32 List view

SysAnimate32 Animation

SysHeader32 Header

msctls_hotkey32 Hot-key

msctls_progress32 progress bar

RICHEDIT Rich edit

msctls_updown32 Up-down

SysTabControl32 Tab


 
Knight ©   (2004-01-02 19:48) [40]

С кнопкой я разобрался... просто скопировал создание окна с лэйбла и не изменил координаты, поэтому хоть кнопка и выводилась поверх неё, но почему-то события уходили на текст, а кнопка оставалясь в пролёте. Закоментировал Label и кнопка заработала :)


 
Knight ©   (2004-01-02 20:28) [41]

SPeller © (02.01.04 18:03) [35]
Отправил


 
SergP ©   (2004-01-02 21:01) [42]


> Knight © (02.01.04 18:50) [37]
> >> SPeller © (02.01.04 18:03) [35]
> > Перешли, пожалуйста, мне тот архивчик.
> Только если Nick Denry добро даст... :)


> Knight © (02.01.04 20:28) [41]
> SPeller © (02.01.04 18:03) [35]
> Отправил


Насколько я понял - в отношении меня добро не было дано. Ну что ж, несколько примеров я уже сам нашел среди всего того что когда-то качал из кладовки, и кроме того посмотрел
Ske4er © (02.01.04 03:25) [26]

Кстати вопрос: Почему при компиляции этого примера [26] в Д5 получаем экзешник размером около 15 Кб, а при компиляции в Д6 размер экзешника около 10 Кб ?


 
Nick Denry ©   (2004-01-02 21:55) [43]

Блин. Да шлите вы хоть обошлитесь все. Меня в этом отношении интересует только одна весчь. Чтоб ее не продавали, а если кто и сумеет, то просьба присылать процентов 20, хотябы.

:-)))

Я не жадный. Давно хочу их куда - нибудь выложить, даже сайт сотворил, но никак хост не найду. А выкладываеть есть что. Может кто чем поможет?


 
konstantinov ©   (2004-01-03 01:10) [44]

К стати... Заморочился в одно время с ScreenSaver там желательно размер ехешника сделать минимальным. Писал по шаблону найденному на этом форуме с использованием диалога настройки помещенного в файл ресурсов. Стало интересно начал рыться в ресурсах чужих программ. В WinAmp например все мыслимые н немыслимые диалоги вынесены в ресурсы. Подозреваю, что так поступают, когда хотят сделать приложение максимально гибким, интенациональным и не требующем перекомпиляции при переводе на другой язык. Следовательно - вынос всех диалоговых окон, меню и пр. в ресурсы - правило хорошего тона в программировании. Прав я или нет?


 
Nick Denry ©   (2004-01-03 01:40) [45]

2>konstantinov ©
(Это мое личное ИМХО, сколько с этим сталкиваюсь 1,5 года на АПИ)
================================================================
Фактически это так, если дело не касается чего-либо динамического как раз. В этих случаях (хотя и не всегда, принято ползоваться окнами). А диалоги ресурсы меню и т.д. действительно удобнее: во-первых визуальность (при использовании хорошего редактора), во - вторых "интернациональность", а так же гибкость и отсутсвие кода для большинства операции.

Пример из диалога:
CONTROL "HEAD", 2131, "STATIC", SS_BITMAP | SS_NOTIFY | WS_GROUP, 1, 0, 180, 21, WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE, 2131

Это статик, с именем битмапа "HEAD", в ресурсе. При показе диалога сразу рисует битмап.


 
Юрий Зотов ©   (2004-01-03 01:41) [46]

> konstantinov © (03.01.04 01:10) [44]

> вынос всех диалоговых окон, меню и пр. в ресурсы - правило
> хорошего тона в программировании

Это даже не правило хорошего тона, а просто правило. До появления RAD-систем именно так и делалось (собственно, других способов и не было). Да и RAD-системы делают практически то же самое, только уже без нашего участия.

> и не требующем перекомпиляции при переводе на другой язык.

Если просто вынести в ресурсы EXE, то перекомпиляция все же потребуется. А вот если вынести в ресурсы DLL, то в EXE будет достаточно просто загрузить нужную DLL, и все.


 
Nick Denry ©   (2004-01-03 01:45) [47]

2>Юрий Зотов ©
ИМХО имеется ввиду перекомпиляция не ресурсов. Как раз имеется ввиду, что не нужно что-то делать с файлом ресурсов .rc / .res / .obj Что бы в экзешнике стались те же диалоги.


 
konstantinov ©   (2004-01-03 02:24) [48]

Я не правильно выразился. Конечно перекомпиляция необходима, но
с помощью Restorator простой пользователь запросто сможет изменить любые надписи меню и прочее на угодные ему не имея ни малейшего понятия как и что в этом приложении работает.( лично я так и сделал ) и даже немножко побезобразничал на работе добавив в WinAmp надписи типа "Сидоров! Кончай маеться дурью! Работай!".:))


 
Nick Denry ©   (2004-01-03 02:28) [49]

И это тоже.


 
SergP ©   (2004-01-03 03:33) [50]

2 Knight ©
Получил. Спасибо...


 
kkk1 ©   (2004-01-03 05:37) [51]

Удалено модератором


 
vidiv ©   (2004-01-03 06:31) [52]

А как сделать полупрозрачное окно?


 
Nick Denry ©   (2004-01-03 15:21) [53]

2>vidiv
patches или Alph...(не помню) короче MSDN RTFM


 
Nous Mellon ©   (2004-01-04 20:11) [54]

Сорри за глупый вопрос но хотелось бы узнать где конкретно смотреть Platform SDK
Если в дире где стоит Visual Studio .NET то там их штуки три причем во всех немного примеров. А тут говорили что их там куча. Может я не там смотрю?


 
Игорь Шевченко ©   (2004-01-04 21:11) [55]

Nous Mellon © (04.01.04 20:11)

Platfrom SDK скачивается или устанавливается с www.microsoft.com
или покупается на компакт-диске. Примеров там 12987 файлов в 1548 каталогах общим объемом в 146 мегабайт с хвостиком. (PSDK OCT 2002)


 
Nous Mellon ©   (2004-01-04 21:18) [56]


> Platfrom SDK скачивается или устанавливается с www.microsoft.com

Спасибо, а нельзя ли его на каких-нибудь еще дисках взять? Может с МСДН?


 
Игорь Шевченко ©   (2004-01-04 22:17) [57]

Два Platform SDK выходили на компактах к журналу RSDN :)



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

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

Наверх




Память: 0.62 MB
Время: 0.02 c
3-72655
Алекса
2003-12-26 07:51
2004.01.23
Создание индексов в таблицах Dbase


14-72901
Volkov
2003-12-30 18:18
2004.01.23
Как быстрее копировать файл?


1-72791
RDen
2004-01-13 09:00
2004.01.23
Добавить в Excel страницы


1-72775
alexnmsk
2004-01-13 13:18
2004.01.23
Изменение формы рисунка


6-72854
Alex_DM
2003-11-13 13:55
2004.01.23
Как организовать обмен данными посредством GPRS?