Picker TEXT

Picker を使って TEXT FILE を入力します。

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

プログラムの説明

  1. Picker を使って TEXT FILE を選択して、入力したデータを OutputDebugString で印字します。
    Visual Studio for Windows 8 を起動して、Blank App(XAML)を作成して下さい。
    MainPage.xaml をダブルクリックしてレイアウトウインドウを表示します。
    ツールボックスからウインドウの上部に Button を貼り付けます。
    ボタンクリックの Event Handler("Button_Click") を設定して下さい。
    入力したデータは OutputDebugString で印字するので、これだけでOKです。
    詳しい説明は Windows8 C++(Store App) を参照して下さい。
  2. MainPage.xaml.cpp の #include と using の設定です。
    #include "pch.h"
    #include "MainPage.xaml.h"
    #include <ppltasks.h>
    
    using namespace App1;
    
    using namespace Platform;
    using namespace Windows::Foundation;
    using namespace Windows::Foundation::Collections;
    using namespace Windows::UI::Xaml;
    using namespace Windows::UI::Xaml::Controls;
    using namespace Windows::UI::Xaml::Controls::Primitives;
    using namespace Windows::UI::Xaml::Data;
    using namespace Windows::UI::Xaml::Input;
    using namespace Windows::UI::Xaml::Media;
    using namespace Windows::UI::Xaml::Navigation;
    
    using namespace Windows::Storage::Pickers;
    using namespace Windows::Storage;
    using namespace Windows::Storage::Streams;
    using namespace concurrency;
    
  3. MainPage.xaml.cpp の Button_Click に TEXT FILE を入力して OutputDebugString で印字するコードを書きます。
    FileOpenPicker() を生成して、Desktop から TEXT FILE を検索します。
    C: ドライブの全てのフォルダを検索することが出来ます。
    選択された StorageFile^ file からデータを入力して OutputDebugString で印字します。
    void App1::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
    {
        auto open = ref new FileOpenPicker();
        open->SuggestedStartLocation = PickerLocationId::Desktop;
        
        // Filter to include a sample subset of file types
        open->FileTypeFilter->Clear();
        open->FileTypeFilter->Append(".txt");
        
        // Open a stream for the selected file
        create_task(open->PickSingleFileAsync()).then([this](StorageFile^ file)
        {
            return FileIO::ReadTextAsync(file);
        }).then([this](task<String^> previousTask) 
        {
            try
            {
                String^ str = previousTask.get();
                OutputDebugString(str->Data());
            }
            catch (...)
            {
                OutputDebugString(L"X-FILE not found");
            }
        });
    }
    
  4. 事前にテキスト形式のファイル(拡張子 .txt)を、適当なフォルダに格納しておいて下さい。
    プログラムをコンパイル&実行して下さい。
    ボタンをクリックするとウインドウエクスプローラと同様にフォルダツリーからファイルを選択することが出来ます。
    OutputDebugString で出力した文字列は、出力画面に印字されます。
    出力画面には沢山のメッセージが印字されているので、その中から探して下さい。
    Picker を使うと全てのフォルダにアクセスが可能なようです。
    DirectXWin8 でも同様のプログラムを作成しています。
    Auto2D Picker,  Text Picker を参照して下さい。

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