Re: c# + winapi?
От: GarryIV  
Дата: 03.12.03 07:45
Оценка: 13 (2)
Здравствуйте, pus, Вы писали:

pus>Я начинающий программер C# и хотел бы получить ответ на такой вопрос: насколько целесообразно углубленно изучать WinApi для программирования на C#?

pus>У меня есть небольшой опыт использования WinApi-функций с помощью аттрибута dllimport. Главная проблема, на мой взгляд, — это отсутствие указателей в C#, а ведь большинство WinApi-функций используют указатели в качестве параметров. Проблемой, к примеру, был вызов CreateProcess, которой нужно примерно 10 параметров (просто не знал, что в .NET есть аналогичная функция Process.Start(), — с ней работать гораздо проще).
pus>Может быть, все-таки можно обойтись в подавляющем большинстве случаев библиотеками базовых классов .NET?

Лучше направь свои силы на изучение классов, неймспейсов NET. WinAPI редко когда требуется, в 99% можно без них обойтись. А когда уж понадобится тогда и прочитаешь пару конкретных страниц в МСДН.
... << RSDN@Home 1.1.0 stable >>
WBR, Igor Evgrafov
Re[4]: c# + winapi?
От: mihailik Украина  
Дата: 04.12.03 10:12
Оценка: 14 (1)
pus>Благодарю всех откликнувшихся — Вы оправдали мои надежды. Вот только вопросик: а что за указатели есть в C# (в MSDN я сам найду, подскажите ключевые слова)?

Указатели есть в режиме unsafe (это ключевое слово).

Использовать указатели можно не очень свободно. Во-первых, часто приходится "пиновать" или "фиксировать" указатели, чтобы очистка Garbage Collect не передвинула их. Во вторых, всё чисто только когда работаешь со структурами, а с объектами начинаются оговорки.


Ещё есть IntPtr, которые помянул Sergino1. Они, вообще говоря, совсем не имеют свойств указателей. Просто тип данных, в котором может быть записано численное значение указателя. Так сказать, указатели, одетые в наручники. Но методы класса Marshal позволяют по по этим "арестованным" указателям получать разные значения: все виды строк, массивы, целые числа разной длины и пр. IntPtr в сочетании с классом Marshal можно использовать и не в режиме unsafe.

Таким образом, рекомендованные темы:
unsafe, fixed, System.Runtime.InteropServices.Marshal

Можешь также поискать насчёт "verifiable" сборок. Это подробности, что стоит за словом unsafe. А если уж совсем разберёт жажда знаний, смотри System.Reflection.Pointer и System.TypedReference. Хотя это уже некоторый изврат.
... << RSDN@Home 1.1.0 stable >>
Re: c# + winapi?
От: Аноним  
Дата: 03.12.03 07:39
Оценка: 12 (1)
Здравствуйте, pus, Вы писали:

pus>Я начинающий программер C# и хотел бы получить ответ на такой вопрос: насколько целесообразно углубленно изучать WinApi для программирования на C#?


в идеале абсолютно нецелесообразно

pus>У меня есть небольшой опыт использования WinApi-функций с помощью аттрибута dllimport. Главная проблема, на мой взгляд, — это отсутствие указателей в C#, а ведь большинство WinApi-функций используют указатели в качестве параметров. Проблемой, к примеру, был вызов CreateProcess, которой нужно примерно 10 параметров (просто не знал, что в .NET есть аналогичная функция Process.Start(), — с ней работать гораздо проще).

pus>Может быть, все-таки можно обойтись в подавляющем большинстве случаев библиотеками базовых классов .NET? Извиняюсь за ламерские вопросы.

указатели в с# есть, а вот на счет остального ты прав, лучше пользоваться библиотекой базовых классов ...
Re[9]: c# + winapi?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.12.03 21:36
Оценка: 1 (1)
Здравствуйте, AndrewVK, Вы писали:

AVK>Будет. В Аэро. Которого пока нет.


Не. Уже. Просто они его хотят на D3D посадить. А пока он через GDI скорее всего работает. Но шустро.

AVK>Ну и в свинге тоже самое — все примитивы рисует не свинг, а AWT, который по большей части на JNI написан.


Здается мне что ты ошибаешся. Я вроде бы встречал инфрормацию, что AWT Свингу ненужна. Да и судя по дичайшим тормозам они все рисуют в память.

VD>>Ну, и качество значительно выше.


AVK>Качество чего?


Результата. Свинговый интерфейс всегда выдает кривота. Все почти как настоящее пока мышку не двинул.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: c# + winapi?
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.12.03 18:45
Оценка: 1 (1)
Здравствуйте, mihailik, Вы писали:

К релизу в ЛХ должно войти Аэтро — это 3D-акселерированная реализация отрисовки. Обещают, что будет не просто полупрозрачность, но даже полупрозрачные авишники на фоне. Да собственно не обещают, а показывают. На CD к 5-ому номеру нашего журнала лежит 100-метровый авишник гже Дон Бокс с еще кем-то демонстрирует подобную фичу.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: c# + winapi?
От: Аноним  
Дата: 03.12.03 12:12
Оценка: -1
M>А уж когда понадобится, глядишь и Windows Longhorn выйдет, можно будет окончательно забить

Не смешно.... ; (
c# + winapi?
От: pus  
Дата: 03.12.03 07:30
Оценка:
Я начинающий программер C# и хотел бы получить ответ на такой вопрос: насколько целесообразно углубленно изучать WinApi для программирования на C#?
У меня есть небольшой опыт использования WinApi-функций с помощью аттрибута dllimport. Главная проблема, на мой взгляд, — это отсутствие указателей в C#, а ведь большинство WinApi-функций используют указатели в качестве параметров. Проблемой, к примеру, был вызов CreateProcess, которой нужно примерно 10 параметров (просто не знал, что в .NET есть аналогичная функция Process.Start(), — с ней работать гораздо проще).
Может быть, все-таки можно обойтись в подавляющем большинстве случаев библиотеками базовых классов .NET? Извиняюсь за ламерские вопросы.
Re[2]: c# + winapi?
От: mihailik Украина  
Дата: 03.12.03 12:05
Оценка:
GIV>Лучше направь свои силы на изучение классов, неймспейсов NET. WinAPI редко когда требуется, в 99% можно без них обойтись. А когда уж понадобится тогда и прочитаешь пару конкретных страниц в МСДН.

А уж когда понадобится, глядишь и Windows Longhorn выйдет, можно будет окончательно забить
... << RSDN@Home 1.1.0 stable >>
Re[3]: c# + winapi?
От: pus  
Дата: 03.12.03 16:54
Оценка:
Благодарю всех откликнувшихся — Вы оправдали мои надежды. Вот только вопросик: а что за указатели есть в C# (в MSDN я сам найду, подскажите ключевые слова)?
Re[4]: c# + winapi?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.12.03 17:19
Оценка:
Здравствуйте, pus, Вы писали:

pus>Благодарю всех откликнувшихся — Вы оправдали мои надежды. Вот только вопросик: а что за указатели есть в C# (в MSDN я сам найду, подскажите ключевые слова)?


IntPtr
http://www.rsdn.ru/article/dotnet/netTocom.xml
Автор(ы): Алифанов Андрей
Дата: 15.02.2002
В статье рассматриваются вопросы взаимодействия программ, написанных на CLR-совместимых языках с неуправляемым кодом: с функциями Win32 API и COM-серверами.
и солнце б утром не вставало, когда бы не было меня
Re[5]: c# + winapi?
От: Mika Soukhov Stock#
Дата: 03.12.03 18:49
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>http://www.rsdn.ru/article/dotnet/netTocom.xml
Автор(ы): Алифанов Андрей
Дата: 15.02.2002
В статье рассматриваются вопросы взаимодействия программ, написанных на CLR-совместимых языках с неуправляемым кодом: с функциями Win32 API и COM-серверами.


Жаль, что там ничего нет про IntPtr
Re[3]: c# + winapi?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.12.03 19:07
Оценка:
Здравствуйте, mihailik, Вы писали:

M>А уж когда понадобится, глядишь и Windows Longhorn выйдет, можно будет окончательно забить


Думаю еще лет 10 забыть нельзя будет. Лонгхорн все равно будет в основании АПИ-шные вещи иметь. То что его не будут развивать еще не значит, что его не будет вообще.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: c# + winapi?
От: mihailik Украина  
Дата: 04.12.03 08:07
Оценка:
M>>А уж когда понадобится, глядишь и Windows Longhorn выйдет, можно будет окончательно забить

VD>Думаю еще лет 10 забыть нельзя будет.


Эхо войны

Вообще-то я говорил "забить", а не "забыть".

VD>Лонгхорн все равно будет в основании АПИ-шные вещи иметь. То что его не будут развивать еще не значит, что его не будет вообще.


Я надеюсь, WinAPI будет затухать в своей узкой нише, а начинающие программисты смогут его благополучно игнорировать. Примерно как сейчас субклассирование окон или расширенные функции вывода на консоль.
... << RSDN@Home 1.1.0 stable >>
Re[4]: c# + winapi?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.12.03 09:25
Оценка:
Здравствуйте, pus, Вы писали:

pus>Благодарю всех откликнувшихся — Вы оправдали мои надежды. Вот только вопросик: а что за указатели есть в C# (в MSDN я сам найду, подскажите ключевые слова)?


unsafe и fixed
... << RSDN@Home 1.1.2 beta 1 >>
AVK Blog
Re[5]: c# + winapi?
От: mihailik Украина  
Дата: 04.12.03 10:12
Оценка:
pus>>а что за указатели есть в C# (в MSDN я сам найду, подскажите ключевые слова)?

S>IntPtr


В C# есть и собственно указатели, не только IntPtr.
... << RSDN@Home 1.1.0 stable >>
Re[5]: c# + winapi?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.12.03 15:38
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Я надеюсь, WinAPI будет затухать в своей узкой нише, а начинающие программисты смогут его благополучно игнорировать. Примерно как сейчас субклассирование окон или расширенные функции вывода на консоль.


Авалоновское окно — это обычное Win32-окно. И оно даже позволяет хостить Win32-контролы. Вот родные авалоновские конролы те уже рисуются сами, но опять же вся их отрисовка попадает в общее авалоновское окно. Т.е. реально все топлевел-окна обычные Win32. И вряд ли к релизу это исправится.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: c# + winapi?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.12.03 10:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Авалоновское окно — это обычное Win32-окно. И оно даже позволяет хостить Win32-контролы. Вот родные авалоновские конролы те уже рисуются сами, но опять же вся их отрисовка попадает в общее авалоновское окно. Т.е. реально все топлевел-окна обычные Win32.


Короче тот же свинг
... << RSDN@Home 1.1.2 beta 1 >>
AVK Blog
Re[7]: c# + winapi?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.12.03 16:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Короче тот же свинг


Не совсем. Апи рисования реализовано аппоратно. Когда доходишь до рисования примитивов, все уходит в интернал-вызовы. Ну, и качество значительно выше.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: c# + winapi?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.12.03 21:13
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Короче тот же свинг


VD>Не совсем. Апи рисования реализовано аппоратно.


Будет. В Аэро. Которого пока нет.

VD>Когда доходишь до рисования примитивов, все уходит в интернал-вызовы.


Ну и в свинге тоже самое — все примитивы рисует не свинг, а AWT, который по большей части на JNI написан.

VD>Ну, и качество значительно выше.


Качество чего?
... << RSDN@Home 1.1.2 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[10]: c# + winapi?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.12.03 21:41
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Ну и в свинге тоже самое — все примитивы рисует не свинг, а AWT, который по большей части на JNI написан.


VD>Здается мне что ты ошибаешся. Я вроде бы встречал инфрормацию, что AWT Свингу ненужна.


Агашазблин.

VD>Да и судя по дичайшим тормозам они все рисуют в память.


У них dblbuffer по умолчанию включен.
... << RSDN@Home 1.1.2 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[6]: c# + winapi?
От: mihailik Украина  
Дата: 08.12.03 14:44
Оценка:
M>>Я надеюсь, WinAPI будет затухать в своей узкой нише, а начинающие программисты смогут его благополучно игнорировать. Примерно как сейчас субклассирование окон или расширенные функции вывода на консоль.

VD>Авалоновское окно — это обычное Win32-окно. И оно даже позволяет хостить Win32-контролы. Вот родные авалоновские конролы те уже рисуются сами, но опять же вся их отрисовка попадает в общее авалоновское окно. Т.е. реально все топлевел-окна обычные Win32. И вряд ли к релизу это исправится.


Интерестные данные

А если форме указать BackBrush, или как там оно называется, с нерегулярной полупрозрачностью. К примеру, текстурка с полупрозрачными "дырами". Потянет оно с виндовыми контролами такой изврат?

Сейчас вот в Win2K/XP я не видал ни разу нерегулярной полупрозрачности. Разве что в тенях хинтов и менюшек края более прозрачные, чем середина. Но как такое в своих окнах реализовать — не знаю.
... << RSDN@Home 1.1.0 stable >>
Re[8]: c# + winapi?
От: mihailik Украина  
Дата: 10.12.03 08:01
Оценка:
VD>К релизу в ЛХ должно войти Аэтро — это 3D-акселерированная реализация отрисовки. Обещают, что будет не просто полупрозрачность, но даже полупрозрачные авишники на фоне.

Интерестно, да.

Но это не совсем ответ на мой вопрос. Полупрозрачные авишники могут иметь постоянное значение альфа-канала (прозрачности) на всем BoundRect. Вопрос в том, есть ли возможность произвольного изменения прозрачности в любой точке?
... << RSDN@Home 1.1.0 stable >>
Re[9]: c# + winapi?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.12.03 19:12
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Но это не совсем ответ на мой вопрос. Полупрозрачные авишники могут иметь постоянное значение альфа-канала (прозрачности) на всем BoundRect. Вопрос в том, есть ли возможность произвольного изменения прозрачности в любой точке?


Как я понимаю там будет хоть черт лысый.

Конкретно ответ нужно искать в документации к ЛХ СДК.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.