
VisualStudioでC++プロジェクトを作る際、
「コンソールアプリケーション、プロジェクト、空のプロジェクト、メイクファイルプロジェクト」
からプロジェクトの種類を選びますが、このとき
「コンソールアプリケーションを選び、「アプリケーションウィザードで「□空のプロジェクト」にチェックを入れて作った」プロジェクトと、
「空のプロジェクトを選択して作った」プロジェクトはどう違うのでしょうか?
先日プログラムを書いていたのですが、全く同じ文章であるにもかかわらず前者ではコンパイルエラーが起こり、後者は問題なく起動するということがありました。
プロジェクトの種類によってどのような動作をする際に差が出るのでしょうか?
よろしくお願いします。
なお、上記の「全く同じ文章であるにもかかわらず前者ではコンパイルエラーが起こり、後者は問題なく起動した」プログラムは以下のもので、「58行目と63行目のCLASS_NAMEにご完成がないとエラーが出ました」。
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
bool CreateMainWindow(HINSTANCE, int);
LRESULT WINAPI WinProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE hinst;
const char CLASS_NAME[] = "WinMain";
const char APP_TITLE[] = "Hello World";
const int WINDOW_WIDTH = 400;
const int WINDOW_HEIGHT = 400;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLinc, int nCmdShow)
{
MSG msg;
if (!CreateMainWindow(hInstance, nCmdShow)){ return false; }
int done = 0;
while (!done)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT){ done = 1; }
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
bool CreateMainWindow(HINSTANCE hInstance, int nCmdShow)
{
WNDCLASSEX wcx;
HWND hwnd;
wcx.cbSize = sizeof(wcx);
wcx.style = CS_HREDRAW | CS_VREDRAW;
wcx.lpfnWndProc = WinProc;
wcx.cbClsExtra = 0;
wcx.cbWndExtra = 0;
wcx.hInstance = hInstance;
wcx.hIcon = NULL;
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
wcx.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wcx.lpszMenuName = NULL;
wcx.lpszClassName = CLASS_NAME;
wcx.hIconSm = NULL;
if (RegisterClassEx(&wcx) == 0){ return false; }
hwnd = CreateWindow(CLASS_NAME, APP_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, (HWND)NULL, (HMENU)NULL, hInstance, (LPVOID)NULL);
if (!hwnd){ return false; }
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
return true;
}
No.2ベストアンサー
- 回答日時:
たぶんだけど、
片方はマルチバイト文字を既定に指定していて、
もう片方はUNICODEを既定にしているせいだと思うよ
tchar.hをインクルードして、文字列は全て_Tマクロでくくれば問題は解決すると思われます
const char CLASS_NAME[] = "WinMain";
から
LPCTSTR CLASS_NAME = _T("WinMain");
こんなかんじに全て書き直す
実践してみましたところ正しく動作させることができました。
文字コードについてもう一度よく調べてみます。
丁寧な回答ありがとうございました。
No.1
- 回答日時:
>VisualStudioでC++プロジェクトを作る際、
バージョンとかも明記した方がいいと思いますが……。
>const char CLASS_NAME[] = "WinMain";
>wcx.lpszClassName = CLASS_NAME;
で、
>CLASS_NAMEにご完成がないとエラーが
となると……
プロジェクトの文字コード辺りでしょうかね。
差異があるとしたら。
バージョンは2013です。
あと、互換性の感じが間違ってますね・・・
わかりにくい質問にもかかわらず早い回答をくださりありがとうございます。
プロジェクトの文字コードについて調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語です
-
プログラミングでエラーが出ま...
-
ウィンドウサイズを変更しても...
-
ボタンのアイコン表示
-
構造体の各メンバにfor文からア...
-
「Aに対するBの割合」と「Aに対...
-
C言語で%を使わない余りの出し方
-
基本的ですが・・・
-
複数のアドレスを関数から取得...
-
ランダムアクセスができない
-
C言語の初心者です。これを実行...
-
9-3の時の内部処理・・・
-
高(1)男子 初めてC言語でコー...
-
C++言語で、どうこのコード続け...
-
C言語を実行すると-infが出てき...
-
外部変数について
-
pを実数の定数とする。xの二次...
-
fprintfで微小な数値を書き込む...
-
for文の条件式について
-
C言語(高校1年の内容)について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エディットボックスの背景の色...
-
ダイアログプログラムでEnterキ...
-
エラー Run-Time Check Failur...
-
プログラミングでエラーが出ま...
-
ボタンの色(WINAPI)
-
Win32APIでウィンドウを中央に...
-
C言語win32api、エディットボッ...
-
C#のswitch文を簡略化したいの...
-
ウィンドウ非表示に時に表示し...
-
不明なエラー
-
COMPORTマルチスレッドで例外発生
-
WM_CREATE について
-
コンソールアプリケーションの...
-
別関数に渡す変数のポインタが...
-
作成プログラムを常にアクティ...
-
DialogBox
-
【Windowsアプリ】ファイルのド...
-
オーバーレイみたいな処理がしたい
-
ボタンのアイコン表示
-
ウィンドウのサイズ変更について
おすすめ情報