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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

3972閲覧

wsprintf うまくコピーできない 文字型の指定がわからない

mercurian-teto

総合スコア75

C

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

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/10/13 17:59

#環境
windows 10 , visual studio2017
#試したこと
下のコードをご覧ください。
このサイトにあったコードをそのまま動かそうとしたらエラーが起きました。
(初期化するところは_Tマクロに変更しています。)

*/ #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { CHAR chStr[128]; wsprintf(chStr, _T("インスタンスハンドル : %d"), hInstance); //エラー 型 "CHAR *" の引数は型 "LPWSTR" のパラメーターと互換性がありません MessageBox(NULL, chStr, TEXT("Kitty on your lap"), MB_OK); //エラー 型 "CHAR *" の引数は型 "LPWSTR" のパラメーターと互換性がありません return 0; }

UNICODEで設定していました。
wsprintf(LPTSTR a, LPCTSTR b ・・・)
LPTSTRはunicode設定時はLPWSTRで、上のコードの第一引数にあたるchStr
はワイド文字列ではないので
ついでにCHAR chStr[128];をLPTSTR chStr;に変更したところ

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { LPTSTR chStr; wsprintf(chStr, _T("インスタンスハンドル : %d"), hInstance); MessageBox(NULL, chStr, TEXT("Test wsprintf"), MB_OK); return 0; } //エラー 初期化されていないchStrが使用されます。

第一引数は初期化されていないのが前提だと思うのですが、違うのでしょうか。上のエラーがさっぱりわかりません。

間違いがどこら辺にあるか指摘してくださいませんか。回答お願いします。

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

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

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

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

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

guest

回答2

0

//エラー 型 "CHAR *" の引数は型 "LPWSTR" のパラメーターと互換性がありません

については、CHAR chStr[128];WCHAR chStr[128];もしくはTCHAR chStr[128];である必要があります。

//エラー 初期化されていないchStrが使用されます。

については、LPTSTR chStr;ではwchar_t* chStr;と同じで何を指しているかわからないポインタとなり
実体が必要になります。

投稿2018/10/13 18:18

asm

総合スコア15147

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

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

0

wsprintfの第一引数は文字列バッファでなければならない。例えば、TCHAR szText[128];。

投稿2018/11/28 09:22

katahiromz

総合スコア186

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問