Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

Нужен приличный пример на 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.59 MB
Время: 0.007 c
1-72720
LinkFly
2004-01-10 03:01
2004.01.23
Не работает AnsiStrUpper почему???


3-72692
СержК
2003-12-27 09:12
2004.01.23
Перехожу на MSSQL


3-72662
Skif
2003-12-25 19:02
2004.01.23
BDE+ODBC+MySQL - ошибка при выполнении запроса


1-72719
volser
2004-01-08 21:01
2004.01.23
popup menu in TWebBrowser


4-72985
_8989
2003-11-14 21:00
2004.01.23
Помогите зарегистрировать комбинацию клавишь или одну...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский