Windows 8 Store Applicationプログラミング(応用編) 14

ロジックコードを記述する

次にソリューションエクスプローラー内のFacebookInfoPage.xamlを展開して表示される、FacebookInfoPage.xaml.vbをダブルクリックしてリスト4のコードを記述します。

ロジックコードを記述する

リスト4 (FacebookInfoPage.xaml.vb)

Option Strict On
Imports Facebook

MessageDialogを表示するのに必要なWindows.UI.Popups名前空間をインポートします。

Imports Windows.UI.Popups

Public NotInheritable Class FacebookInfoPage
  Inherits Page

  Dim myText As String
  Dim flag As Boolean

ページがアクティブになった時の処理

FacebookLoginPage.xamlから送られた「投稿内容」を取得して、メンバ変数myTextに格納します。

モジュール内で宣言したPublic変数accessTokenで初期化された新しいFacebookClientのインスタンスを作成します。

AddHandlerメソッドでFacebookへのPOSTが完了した時に発生する、PostCompletedイベントにイベントハンドラを指定します。イベントハンドラ内では以下の処理を行います。

エラーが発生した場合には「アップロード失敗」のメッセージダイアログを表示します。
ブール型メンバ変数flagをFalseで初期化します。
それ以外はflagをTrueで初期化します。

キーと値のコレクションを表す、Dictionaryクラスのインスタンス、myParamオブジェクトを作成します。
myParamの”message”に投稿内容を格納しているメンバ変数myTextを指定します。

PostTaskAsyncメソッドで、パスに "/me/feed"、パラメーターにmyParamを指定して、Facebookサーバーに非同期処理のPOSTリクエストを送信します。

ブール型メンバ変数flagがTrueなら「TwitterとFacebookに投稿しました。」と表示します。

非同期処理で行われるため、メソッドの先頭にAsyncを追加します。Asyncが追加されていると、その処理が非同期で行われることを意味します。

  Protected Overrides Async Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
    myText = CStr(e.Parameter)
    myFB = New FacebookClient(accessToken)
    AddHandlermyFB.PostCompleted, Async Sub(mySender As Object, myArgs As FacebookApiEventArgs)
                   If myArgs.Error Is Nothing = False Then
                       Dim myDialog As MessageDialog = New MessageDialog("アップロード失敗")
  
                       Await myDialog.ShowAsync()
                       flag = False
                     Else
                      flag = True
                     End If
                   End Sub
    Dim myParam As New Dictionary(Of String, Object)
    myParam("message") = myText
    Await myFB.PostTaskAsync("/me/feed", myParam)
 
    If flag = True Then
      messageTextBlock.Text = "TwitterとFacebookに投稿しました。"
    Else
      messageTextBlock.Text = "投稿失敗"
    End If
  End Sub
End Class
サンプルの解像度について

今回の応用編では、筆者の解像度1920×1080で作成したサンプルが多かったのですが、この方法は好ましい方法ではありません。

1920×1080を指定して作成すると、Windows 8のハードウエア認定を受けることのできる1366×768の解像度では画面が途切れてしまいます。

そこで筆者は下記のコードを使用して解像度を取得し、画面の表示を変更しています。

Dim myWidth = CInt(Window.Current.CoreWindow.Bounds.Width)
  Dim myHeight = CInt(Window.Current.CoreWindow.Bounds.Height)
  If myWidth = 1920 AndAlso myHeight = 1080 Then
    ~解像度が1920×1080の場合の画面の表示処理~
  ElseIf myWidth = 1366 AndAlso myHeight = 768 Then
    ~解像度が1366×768の場合の画面の表示処理
  End If

上記のコードによって解像度による画面の表示サイズの変更を行います。皆さんも一度お試しください。

今回で、応用編は終わりです。基本編と応用編合わせていろいろなサンプルを見てきましたが、いかがだったでしょうか。この連載が、皆様のWindows ストアアプリ挑戦への足がかりになっていただければ、筆者としてはうれしい限りです。是非、挑戦していただきたいと思います。どうも、ありがとうございました。

薬師寺国安

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る