Как перевести информацию о событии Microsoft ButtonBase.Click для C ++ / WinRT в объявление и определение прототипа?
blockquote>Не уверены, что вы подразумеваете под
prototype declaration and definition
с тех пор, как дали Сама информация является прототипом.На этой странице вы можете найти больше информации об обработке событий в C ++ / Winrt. Линк объясняет, как обрабатывать и отзывать события с делегатами, и приводит пример обработки события нажатия кнопки для
C++/WinRT
. Короче говоря, вам нужно иметь обработчик и зарегистрировать его через делегата.// function that handles event void MainPage::ClickHandler(IInspectable const& /* sender */, RoutedEventArgs const& /* args */) { Button().Content(box_value(L"Clicked")); } ... // register above function for event handler Button().Click({ this, &MainPage::ClickHandler });
UPD: Я пытался проверить на предмет ошибки
The document item has no code-behind file. Add a code-behind file and a class definition before adding event handlers
, когда пользователь пытается получить доступ к свойствам и обработчикам событий. Я мог бы легко воспроизвести эту проблему, создав пустое приложение (C ++ / Winrt) после установки расширения cppwinrt .Я проверил пример приложения для редактирования фотографий из ms github для дальнейшей отладки этой проблемы. В этом примере приложения мне не удалось загрузить режим разработки XAML. Сначала он попросил меня обновить версию Windows до 1809, но мне не удалось обновить. Поэтому я решил вернуться к этому идентификатору коммита, который не требует обновления Windows 1809.
После этого проект XAML завершился ошибкой
Some assembly references are missing. Building to restore the NuGet cache might resolve this issue.
. Исследования привели меня к этой проблеме , которая закрыта следующим комментариемЭто в настоящее время не поддерживается. Команда XAML в настоящее время работает над поддержкой дизайнера, поэтому вы должны увидеть это в будущем обновлении Windows SDK.
blockquote>После открытия проблемы в MS docs github я получил от них следующий ответ, и согласно странице документации MS была обновлена.
Я добавил следующую информацию в подраздел «Пустое приложение (C ++ / WinRT)» этой темы, поскольку это шаблон проекта, который использует XAML в качестве пользовательского интерфейса.
«Поддержка поверхности разработки Visual Studio XAML для C ++ / WinRT близка к паритету с C #. Единственным исключением является вкладка Events в окне Properties. В C # проекте вы можете использовать эту вкладку для добавления обработчиков событий; в C ++ / Проект WinRT, такого средства нет. Но посмотрите, как обрабатывать события, используя делегаты в C ++ / WinRT, чтобы получить информацию о том, как добавить обработчики событий в ваш код. "
Это изменение должно скоро появиться. Пожалуйста, дайте мне знать, если я могу добавить что-нибудь еще.
blockquote>
Щелкните правой кнопкой по файлу в Проводнике Решения, выберите "Open With...", выберите Редактора До-диеза и нажмите кнопку "Set as Default".
Щелкните правой кнопкой по файлу формы и нажмите "Open With...". Выберите своего желаемого разработчика, чтобы открыться как значение по умолчанию (в этом случае "Редактор До-диеза" или "Редактор Microsoft Visual Basic") и нажать "Set as Default". Вуаля.
с этим атрибутом myClass откроется в редакторе кода а не разработчике:
[System.ComponentModel.DesignerCategory("")]
public class myClass : Form
{
}