多年来,我一直隐藏在 MFC 的岩石之下,因此我可以坚持使用标准 C++,但仍然可以编写 Windows 桌面应用程序。使用 C++/WinRT 和 WinUI 3.0,我似乎终于有机会对我的代码进行现代化改造。问题是我对 XAML 或 Windows API 一无所知。为了解决这个问题,我正在尝试通过 Petzold 的“Programming Windows, 6th ed.”,用 C++/WinRT 替换 C# 代码。当我所要做的就是编写 XAML 时,一切都是徒劳的。但是,当我到达 p。24,我应该在代码中调整 TextBlock 属性。这是C#:
TextBlock tb = new TextBlock();
tb.Text = "Hello, Windows 8!";
tb.FontFamily = new FontFamily("Times New Roman");
tb.FontSize = 96;
tb.FontStyle = FontStyle.Italic;
...
这是我的替换尝试:
TextBlock tb;
tb.Text(L"Hello, Windows 8!");
tb.FontFamily(FontFamily(L"Times New Roman"));
tb.FontSize(96);
tb.FontStyle(FontStyle::Italic);
...
一切顺利,直到最后一行。无法识别“FontStyle::Italic”。我对 Color 和 HorizontalAlignment 的枚举也有类似的问题。访问这些枚举的正确方法是什么?我是否忘记了包含或“使用”?这是我目前拥有的:
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.ApplicationModel.Activation.h>
#include <winrt/Microsoft.UI.Composition.h>
#include <winrt/Microsoft.UI.Text.h>
#include <winrt/Microsoft.UI.Xaml.h>
#include <winrt/Microsoft.UI.Xaml.Controls.h>
#include <winrt/Microsoft.UI.Xaml.Controls.Primitives.h>
#include <winrt/Microsoft.UI.Xaml.Data.h>
#include <winrt/Microsoft.UI.Xaml.Interop.h>
#include <winrt/Microsoft.UI.Xaml.Markup.h>
#include <winrt/Microsoft.UI.Xaml.Media.h>
#include <winrt/Microsoft.UI.Xaml.Navigation.h>
#include <winrt/Microsoft.UI.Xaml.Shapes.h>
和
using namespace winrt;
using namespace Microsoft::UI::Text;
using namespace Microsoft::UI::Xaml::Controls;
using namespace Microsoft::UI::Xaml::Controls::Primitives;
using namespace Microsoft::UI::Xaml::Media;
我希望我的长问题有一个简短的答案。