Я придерживался стандартного C/C++ в течение многих лет прежде, чем изучить API Win32 и быть довольно тупым, "изучение, что часть" API Win32 не является лучшим техническим опытом моей жизни.
В одном ручном API Win32 довольно прохладно. Это похоже на расширение стандартного API C (кому нужно fopen
, когда Вы можете иметь CreateFile
. Но я предполагаю, что UNIX/Linux/WhateverOS имеют те же функции штуковины. Так или иначе, в Unix/Linux, они имеют, "Все - файл". В Windows они имеют, "Все - a... Окно" (никакое ребячество! См. CreateWindow
!).
В другой руке, это - API прежней версии. Вы будете иметь дело с сырыми данными C и сырыми данными C безумие.
void *
указатель на некоторую функцию Win32. delete this ;
в методе класса). В последней руке ( три руки??? ), полагайте, что некоторые люди, работающие с API прежней версии, самостоятельно используют моделирование унаследованного кода. Момент, который Вы слышите" const
, для макетов " или" я не использую пространства имен, потому что они уменьшают скорость во время выполнения ", или еще лучше" Эй, кому нужен C++? Я кодирую в своем собственном бренде объектно-ориентированного C!!! " (Никакое ребячество... В профессиональной среде и результате был настоящий вид...), Вы будете чувствовать, что вид страха только осудил чувство перед гильотина .
Так... В целом, это интересно опыт.
После перечитывания этого сообщения, я вижу, что это могло рассматриваться как чрезмерно отрицательное. Это не.
иногда интересно (а также разбивающий) знать, как вещи работают под капотом. Вы поймете что, несмотря на огромный (невозможный?) ограничения, команда API Win32 сделала замечательную работу, чтобы быть уверенной, что все, от Вас "программа olde Win16" к Вашему "последнему Win64 чрезмерное приложение", может сотрудничать, в прошлом теперь, и в будущем.
вопрос: Вы действительно хотите?
, поскольку, проводя недели, чтобы сделать вещи, которые могли быть сделаны (и добиты большего успеха) в другом более высокоуровневом и/или объектно-ориентированном API может быть вполне de-motivational (реальный опыт: 3 недели для API Победы, против 4 часов на трех других языках и/или библиотеках).
Так или иначе, Вы найдете Блог Raymond Chen очень интересным из-за представления его инсайдера и о API Победы и о его эволюции в течение лет:
Вот решение, к которому я пришел. Чтобы сделать анимацию на основе данных в моей модели просмотра, я использовал DataTrigger. Ниже приведен мой стиль управления.
<Style TargetType="Grid" x:Key="DetailRotation" >
<Style.Triggers>
<DataTrigger Binding="{Binding Path=AnimationState}" Value="New">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="EndAnimation" />
<BeginStoryboard Name="NewAnimation">
<Storyboard>
<ThicknessAnimation Storyboard.TargetProperty="Margin" From="0,30,0,0" To="0,0,0,0" Duration="0:0:1" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
</DataTrigger.ExitActions>
</DataTrigger>
<DataTrigger Binding="{Binding Path=AnimationState}" Value="End">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="NewAnimation" />
<BeginStoryboard Name="EndAnimation">
<Storyboard>
<ThicknessAnimation Storyboard.TargetProperty="Margin" From="0,0,0,0" To="0,-20,0,0" Duration="0:0:1"/>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
Вы можете изучить, используя Attached Properties , чтобы подключить необходимую логику к раскадровке / анимации, которая вы желаете.
Это не обязательно избавит вас от необходимости писать код, но сохранит его отдельно от представления и позволит повторно использовать его в нескольких представлениях.