MyDocument Text Read

MyDocument から TEXT FILE(utf8.txt) を入力します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. Windows Store では、クライアントが知らないうちにファイルにアクセスされるのを防ぐために、自由にアクセス出来るフォルダーは限られているようです。
    Local Folder はアプリケーション間で相互に参照することは出来ませんが、Document Folder は参照が可能です。
    今回は MyPicture に格納されている TEXT FILE(utf8.txt) を入力して OutputDebugString() で出力ウインドウに印字します。
    プログラムの実行に先立って、ウインドウ・エクスプローラなどを使って PC\ピクチャ\(OneDrive\ピクチャ\) に utf8.txt を格納して下さい。
  2. Store Application の C++ Windows プロジェクト UWP(Universal Windows Platform) を作成します。
    プロジェクトの作成は XAML で図形を描画 を参照して下さい。
  3. MainPage.xaml.h に TextRead(); 関数を宣言します。
        private:
            void TextRead();
        };
    
  4. MainPage.xaml.cpp を修正して utf8.txt を入力して印字します。
    OutputDebugString を使うので windows.h をインクルードして下さい。
    using namespace concurrency; と using namespace Windows::Storage; を追加して下さい。
    Constructor から TextRead(); 関数を呼び出します。
    TextRead(); 関数では入力したテキストを OutputDebugString(str->Data()); で印字します。
    #include <windows.h>    // OutputDebugString
    
    using namespace concurrency;
    using namespace Windows::Storage;
    
    MainPage::MainPage()
    {
        InitializeComponent();
        TextRead();
    }
    
    void MainPage::TextRead()
    {
        //StorageFolder^ folder = KnownFolders::DocumentsLibrary;
        StorageFolder^ folder = KnownFolders::PicturesLibrary;
        create_task(folder->GetFileAsync(L"utf8.txt")).then([this](StorageFile^ file)
        {
            return FileIO::ReadTextAsync(file);
        }).then([this](task<String^> previousTask) 
        {
            try
            {
                String^ str = previousTask.get();
                OutputDebugString(str->Data());
            }
            catch (...)
            {
                OutputDebugString(L"Text Data: <not found>");
            }
        });
    }
    
  5. MyDocument にアクセスする為には manifest の設定が必要です。
    Package.appxmanifest をダブルクリックして、設定画面を表示します。
    機能タグから「ピクチャ ライブラリ」をチェックして下さい。
    本来なら「ドキュメントライブラリ」を使うべきなのでしょうが、設定画面にありません。

  6. 2019/03/17 VS-2019-00435 で作成すると MainPage.xaml.cpp の [this] から赤の下線が消えません。
    Windows8 & Visual Studio Express 2012 のときは、エラーは無かったと思うのですが? (^_^;)
    ビルドすると正常にコンパイル出来たようなので、実行してみると問題なく動作しました。

[MyDoc Write ↓] MyDoc Write

超初心者のプログラム入門(C/C++)