wsprintf( ) でポインタに代入
wsprintf(p, "%d" , i);
を書いたせいで、i の値が変わります。
wsprintf(p, "%d" , i);
によってどんなことが起こっているのか詳しく知りたいです。
ポインタのことがまだよく分かってないんです。
#include <windows.h>
LPCSTR szStr = "\n char c[255];\n char *p = \"\\0\";\n int i = 12345;\n\n switch (msg){\n case WM_LBUTTONDOWN:\n wsprintf(c, \"%d\" , i);\n wsprintf(p, \"%d\" , i);\n MessageBox(hWnd , c , \"\" , MB_OK);\n break;";
LRESULT CALLBACK WndProc(HWND , UINT , WPARAM , LPARAM);
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE , LPSTR , int){
省略
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wParam , LPARAM lParam){
HDC hDC;
PAINTSTRUCT ps;
RECT rt;
char c[255];
char *p = "\0";
int i = 12345;
switch (msg){
case WM_LBUTTONDOWN:
wsprintf(c, "%d" , i);
wsprintf(p, "%d" , i);
MessageBox(hWnd , c , "" , MB_OK);
break;
case WM_PAINT:
GetClientRect(hWnd, &rt);
hDC = BeginPaint(hWnd, &ps);
DrawText(hDC, szStr, lstrlen(szStr), &rt, DT_WORDBREAK);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd , msg , wParam , lParam));
}
return (0L);
}
お礼
回答ありがとうございます。 そういう事ではないようです。 修正しましたので、ソース乗せて起きます。 http://onegaisimasune.web.fc2.com/main2.txt