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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

5563閲覧

visual studio 出力の文字化け

aglaia

総合スコア14

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/07/31 21:57

編集2017/08/01 00:56

###文字化けをなくしたいです
Visual studio 2017を使っています。
猫でもわかるプログラミングの通りにしていたら、下の写真のように文字化けしてしまいました。
宜しくお願いします。

イメージ説明
###発生している問題・エラーメッセージ

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 警告 C4133 '関数': 'LPCSTR' と 'LPCWSTR' の間で型に互換性がありません。 test c:\users\***\ドキュメント\visual studio 2017\projects\test\test\source.c 11 警告 C4133 '=': 'char *' と 'LPCWSTR' の間で型に互換性がありません。 test c:\users\***\ドキュメント\visual studio 2017\projects\test\test\source.c 34 警告 C4133 '関数': 'char [8]' と 'LPCWSTR' の間で型に互換性がありません。 test c:\users\***\ドキュメント\visual studio 2017\projects\test\test\source.c 51 警告 C4133 '関数': 'char [13]' と 'LPCWSTR' の間で型に互換性がありません。 test c:\users\***\ドキュメント\visual studio 2017\projects\test\test\source.c 51

###該当のソースコード

C

1#include <windows.h> 2 3LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 4char szClassNme[] = "windows"; 5 6void ShowMyText(HWND hWnd) { 7 HDC hdc; 8 PAINTSTRUCT paint; 9 char *str = "it is test"; 10 hdc = BeginPaint(hWnd, &paint); 11 TextOut(hdc, 10, 10, (LPCSTR)str, strlen(str)); 12 EndPaint(hWnd, &paint); 13 return; 14} 15 16 17int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, 18 LPSTR lpszCmdLine, int nCmdShow) 19{ 20 HWND hWnd; 21 MSG msg; 22 WNDCLASS myProg; 23 24 if (!hPreInst) { 25 myProg.style = CS_HREDRAW | CS_VREDRAW;//水平/垂直のサイズ変更があれば、全体を描きなおす 26 myProg.lpfnWndProc = WndProc;//メッセージの処理を専門に扱う関数 ~Procが一般的 27 myProg.cbClsExtra = 0;//メモリ領域の追加設定 28 myProg.cbWndExtra = 0;//同上 29 myProg.hInstance = hInstance;//インスタンスの登録 30 myProg.hIcon = NULL;//ウィンドウクラスにアイコン/カーソルを登録 31 myProg.hCursor = LoadCursor(NULL, IDC_ARROW); 32 myProg.hbrBackground = GetStockObject(WHITE_BRUSH);//背景を登録 33 myProg.lpszMenuName = NULL;//メニューの名前を登録 34 myProg.lpszClassName = szClassNme;//クラス名の登録 35 if (!RegisterClass(&myProg)) { 36 return FALSE; 37 } 38 } 39 hWnd = CreateWindow( 40 szClassNme,//クラス名 41 "windows test",//タイトルバーに表示 42 WS_OVERLAPPEDWINDOW,//WS_??? 43 CW_USEDEFAULT,//X座標 44 CW_USEDEFAULT,//Y座標 45 CW_USEDEFAULT,//ウィンドウの横幅 46 CW_USEDEFAULT,//ウィンドウの高さ 47 NULL,//親ウィンドウハンドル(親の場合はNULL) 48 NULL,//メニューハンドル、クラスメニューの時は、NULL 49 hInstance,//インスタンスハンドル 50 NULL//ウィンドウ作成データ 51 ); 52 /*hWnd ウィンドウハンドル 53 nCmdShow ウィンドウの状態を示す 54 ex.SW_SHOW 55 SW_SHOWMAXIMIZED 56 SE_SHOWMINIMIZED 57 SW_HIDE...*/ 58 ShowWindow(hWnd, nCmdShow); 59 UpdateWindow(hWnd);//ウィンドウを描きなおせ 60 while (GetMessage(&msg, NULL, 0, 0)) {//送られてくるメッセージを翻訳 61 TranslateMessage(&msg); 62 DispatchMessage(&msg); 63 } 64 return (msg.wParam); 65} 66 67LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 68{ 69 switch (msg) { 70 case WM_DESTROY: 71 PostQuitMessage(0); 72 break; 73 case WM_PAINT: 74 ShowMyText(hWnd); 75 break; 76 default: 77 return(DefWindowProc(hWnd, msg, wParam, lParam)); 78 } 79 return (0L); 80}

###補足情報(言語/FW/ツール等のバージョンなど)
C言語を使っています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hotta

2017/07/31 23:39

画像の添付に失敗しているようですよ。
aglaia

2017/08/01 00:55

ありがとうございます。変えておきます。
guest

回答1

0

ベストアンサー

おそらく参考にしている環境が古いので、現在の環境では手直しする必要があります。

  1. char型をwchar_t 型に変更
  2. (HBRUSH)GetStockObjectのようにキャストする

VS 2010ですが、下記の環境で動きました。

c

1#include <windows.h> 2 3LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 4wchar_t szClassNme[] = L"windows"; 5 6void ShowMyText(HWND hWnd) { 7 HDC hdc; 8 PAINTSTRUCT paint; 9 wchar_t *str = L"it is test"; 10 hdc = BeginPaint(hWnd, &paint); 11 TextOut(hdc, 10, 10, (LPCWSTR)str, wcslen(str)); 12 EndPaint(hWnd, &paint); 13 return; 14} 15 16 17int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, 18 LPSTR lpszCmdLine, int nCmdShow) 19{ 20 HWND hWnd; 21 MSG msg; 22 WNDCLASS myProg; 23 24 if (!hPreInst) { 25 myProg.style = CS_HREDRAW | CS_VREDRAW;//水平/垂直のサイズ変更があれば、全体を描きなおす 26 myProg.lpfnWndProc = WndProc;//メッセージの処理を専門に扱う関数 ~Procが一般的 27 myProg.cbClsExtra = 0;//メモリ領域の追加設定 28 myProg.cbWndExtra = 0;//同上 29 myProg.hInstance = hInstance;//インスタンスの登録 30 myProg.hIcon = NULL;//ウィンドウクラスにアイコン/カーソルを登録 31 myProg.hCursor = LoadCursor(NULL, IDC_ARROW); 32 myProg.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景を登録 33 myProg.lpszMenuName = NULL;//メニューの名前を登録 34 myProg.lpszClassName = szClassNme;//クラス名の登録 35 if (!RegisterClass(&myProg)) { 36 return FALSE; 37 } 38 } 39 hWnd = CreateWindow( 40 szClassNme,//クラス名 41 L"windows test",//タイトルバーに表示 42 WS_OVERLAPPEDWINDOW,//WS_??? 43 CW_USEDEFAULT,//X座標 44 CW_USEDEFAULT,//Y座標 45 CW_USEDEFAULT,//ウィンドウの横幅 46 CW_USEDEFAULT,//ウィンドウの高さ 47 NULL,//親ウィンドウハンドル(親の場合はNULL) 48 NULL,//メニューハンドル、クラスメニューの時は、NULL 49 hInstance,//インスタンスハンドル 50 NULL//ウィンドウ作成データ 51 ); 52 /*hWnd ウィンドウハンドル 53 nCmdShow ウィンドウの状態を示す 54 ex.SW_SHOW 55 SW_SHOWMAXIMIZED 56 SE_SHOWMINIMIZED 57 SW_HIDE...*/ 58 ShowWindow(hWnd, nCmdShow); 59 UpdateWindow(hWnd);//ウィンドウを描きなおせ 60 while (GetMessage(&msg, NULL, 0, 0)) {//送られてくるメッセージを翻訳 61 TranslateMessage(&msg); 62 DispatchMessage(&msg); 63 } 64 return (msg.wParam); 65} 66 67LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 68{ 69 switch (msg) { 70 case WM_DESTROY: 71 PostQuitMessage(0); 72 break; 73 case WM_PAINT: 74 ShowMyText(hWnd); 75 break; 76 default: 77 return(DefWindowProc(hWnd, msg, wParam, lParam)); 78 } 79 return (0L); 80} 81

投稿2017/07/31 23:54

soma62jp

総合スコア141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aglaia

2017/08/01 00:48

プログラムはうまくいきました! ありがとうございます。 プログラム初心者で少し質問なのですが、L"test"で、Lを付けると何が変わるのでしょうか? 宜しくお願いします
aglaia

2017/08/01 00:56

了解です。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問