アプリ版:「スタンプのみでお礼する」機能のリリースについて

五目並べのプログラムを作っているのですが、
下記2のサブルーチンを出る時に
下記1のようなランタイムエラーが
どうしても出てしまいます。
原因が分からなく自分の力ではどうにもできないので、
どなたかアドバイスよろしくお願い致します。

       記1
Run-Time Check Failure #2 - Stack around the variable 'ps' was corrupted.
       記2
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
int id, x, y;
static int nTe = 0;
PAINTSTRUCT ps;
HDC hdc;
char szBuf[64], szSashite[16];
static HMENU hMenu;

switch (msg) {
case WM_CREATE:
hMenu = GetMenu(hWnd);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
MyMakeBan(hdc);
MyStoneDraw(hdc);
if (bSente)
strcpy_s(szSashite, "先手●");
else
strcpy_s(szSashite, "後手○");
wsprintf((LPWSTR)szBuf, TEXT("差し手 = %s"), szSashite);
TextOut(hdc, 30, SHUI + KANKAKU * 14 + 30, (LPCWSTR)szBuf, strlen(szBuf));
wsprintf((LPWSTR)szBuf, TEXT("第 %02d 手終了 現在 %02d 手目待ち"), nTe, nTe + 1);
TextOut(hdc, 30, SHUI + KANKAKU * 14 + 50, (LPCWSTR)szBuf, strlen(szBuf));
EndPaint(hWnd, &ps);
break;

A 回答 (3件)

wsprintf()のどちらかでバッファオーバーフローして、


めでたくpsを破壊されたようです。
デバッグ版でよかったですね…。

リリース版にすればランタイムチェックは走らないでしょう。
# 鼻から悪魔が出てきても文句言えませんが。

現実的な解決策は既に出ていますので。
    • good
    • 0

文字列の種類を


char
wchar_t
TCHAR
のどれかに統一したほうがいいでしょう
char szBuf[64], szSashite[16];

TCHAR szBuf[64], szSashite[16];

strcpy_s

_tcscpy_s

strlen

_tcslen
など
    • good
    • 0

エラーが無くなればいいと思ってる程度のキャストはやめなさい



参考URL:http://www.google.co.jp/search?q=tchar.h
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!