別関数に渡す変数のポインタが難しい
構造体初心者で、ポインタもよく分かっていません。
12, 8
と表示するつもりのソースだけど、実行結果は違っていました。
直してください。
ソースは長いけど、スケルトンに構造体とTextOutを付けたぐらいのものです。
#include <windows.h>
struct MYOBJ
{
int a;
int b;
};
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
MSG msg;
WNDCLASS wc;
投稿できなかったからここを消しました。
wc.lpszClassName = "x";
if(RegisterClass(&wc) == 0)return 0;
HWND hWnd = CreateWindow("x","",WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,320,240,NULL,NULL,hInst,NULL);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
void myfunc(struct MYOBJ *obj)//ここが違うかもしれません。
{
obj->a += 2;
obj->b -= 2;
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
char buf[30];
switch(uMsg)
{
case WM_CREATE:
struct MYOBJ myobj;
myobj.a = 10;
myobj.b = 10;
myfunc(&myobj);//ここが違うかもしれません。
return 0;
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
wsprintf(buf, "%d, %d", myobj.a, myobj.b);
TextOut(hDC, 0, 0, buf, strlen(buf));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return 0;
}
お礼
この文を読んでまだまだ勉強不足ということがわかりました。出直します。回答ありがとうございました。