質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.80%

このコードのどこにint main()をいれるのでしょうか

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,372

score 82

こんにちは

Visual Studio C++ではじめ、いきなりこのようなコードがでてくるではありませんか、

//
// App.xaml.cpp
// App クラスの実装。
//

#include "pch.h"
#include "MainPage.xaml.h"

using namespace App1;

using namespace Platform;
using namespace Windows::ApplicationModel;
using namespace Windows::ApplicationModel::Activation;
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::Interop;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;

/// <summary>
/// 単一アプリケーション オブジェクトを初期化します。これは、実行される作成したコードの
///最初の行であるため、main() または WinMain() と論理的に等価です。
/// </summary>
App::App()
{
    InitializeComponent();
    Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending);
}

/// <summary>
/// アプリケーションがエンド ユーザーによって正常に起動されたときに呼び出されます。    他のエントリ ポイントは、
/// アプリケーションが特定のファイルを開くために起動されたときなどに使用されます。
/// </summary>
/// <param name="e">起動の要求とプロセスの詳細を表示します。</param>
void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e)
{

#if _DEBUG
        // デバッグ中にグラフィックスのプロファイル情報を表示します。
        if (IsDebuggerPresent())
        {
            // 現在のフレーム レート カウンターを表示します
             DebugSettings->EnableFrameRateCounter = true;
        }
#endif

    auto rootFrame = dynamic_cast<Frame^>(Window::Current->Content);

    // ウィンドウに既にコンテンツが表示されている場合は、アプリケーションの初期化を繰り返さずに、
    // ウィンドウがアクティブであることだけを確認してください
    if (rootFrame == nullptr)
    {
        // ナビゲーション コンテキストとして動作するフレームを作成し、
        // SuspensionManager キーに関連付けます
        rootFrame = ref new Frame();

        rootFrame->NavigationFailed += ref new Windows::UI::Xaml::Navigation::NavigationFailedEventHandler(this, &App::OnNavigationFailed);

        if (e->PreviousExecutionState == ApplicationExecutionState::Terminated)
        {
            // TODO: 必要な場合のみ、保存されたセッション状態を復元し、
            // 復元完了後に最後の起動手順をスケジュールします

        }

        if (rootFrame->Content == nullptr)
        {
            // ナビゲーション スタックが復元されない場合は、最初のページに移動します。
            // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを
            // 作成します
            rootFrame->Navigate(TypeName(MainPage::typeid), e->Arguments);
        }
        // フレームを現在のウィンドウに配置します
        Window::Current->Content = rootFrame;
        // 現在のウィンドウがアクティブであることを確認します
        Window::Current->Activate();
    }
    else
    {
        if (rootFrame->Content == nullptr)
        {
            // ナビゲーション スタックが復元されない場合は、最初のページに移動します。
            // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを
            // 構成します
            rootFrame->Navigate(TypeName(MainPage::typeid), e->Arguments);
        }
        // 現在のウィンドウがアクティブであることを確認します
        Window::Current->Activate();
    }
}

/// <summary>
/// アプリケーションの実行が中断されたときに呼び出されます。    
/// アプリケーションが終了されるか、メモリの内容がそのままで再開されるかに
/// かかわらず、アプリケーションの状態が保存されます。
/// </summary>
/// <param name="sender">中断要求の送信元。</param>
/// <param name="e">中断要求の詳細。</param>
void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e)
{
    (void) sender;    // 未使用のパラメーター
    (void) e;    // 未使用のパラメーター

    //TODO: アプリケーションの状態を保存してバックグラウンドの動作があれば停止します
}

/// <summary>
/// 特定のページへの移動が失敗したときに呼び出されます
/// </summary>
/// <param name="sender">移動に失敗したフレーム</param>
/// <param name="e">ナビゲーション エラーの詳細</param>
void App::OnNavigationFailed(Platform::Object ^sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^e)
{
    throw ref new FailureException("Failed to load Page " + e->SourcePageType.Name);
}

一体どこにint main()をいれて始めて行けばよいのでしょうか・・・
どうか回答を頂けることを願います。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

main()はどこかに既に生成されているはずです。
そのmain()内でApp系をいい感じに呼び出して初期動作をやってくれてます。


さて、恐らくあなたがやりたいことは一からコード書いて
コマンドラインアプリケーションを作ることだと思います。
その場合は
これはGUIアプリケーションを作成するためのプロジェクト構成になってしまっているので、
新しいプロジェクト作成時に
全般>空のプロジェクトを選択しましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/20 00:57

    回答有り難うございます!

    >>さて、恐らくあなたがやりたいことは一からコード書いて

    コマンドラインアプリケーションを作ることだと思います。

    はい!その通りですよくわかりましたね!
    いろいろと感ずいてくださり、また、分かりやすくおしえてくださり有り難うございます

    そしてとても落ち着く文面です


    有り難うございました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る