#include <tchar.h>
#include <Windows.h>
const TCHAR szWndClass[] = _T("Program343class");
LRESULT CALLBACK WndProc(
HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR lpCmdLine,
int nCmdShow) {
HWND hWnd;
WNDCLASS wc;
MSG msg;
BOOL bRet;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbWndExtra = 0;
wc.cbClsExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szWndClass;
if (!RegisterClass(&wc)) { return -1; }
hWnd = CreateWindow(
szWndClass,
_T("Program343のウィンドウ"),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if (hWnd == NULL) { return -1; }
while (bRet = GetMessage(&msg, NULL, 0, 0)) {
if (bRet == -1) { return FALSE; }
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(
HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT rctDimension;
static BOOL blRight = TRUE;
static int x = 0;
static BOOL blBottom = TRUE;
static int y = 0;
int dx = 5;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CREATE:
SetTimer(hWnd, 1, 1, NULL);
break;
case WM_TIMER:
GetClientRect(hWnd, &rctDimension);
if (x + 50 >= rctDimension.right) { blRight = FALSE; }
else if (x <= 0) { blRight = TRUE; }
if (y + 50 >= rctDimension.bottom) { blBottom = FALSE; }
else if (y <= 0) { blBottom = TRUE; }
if (blRight) { x += dx; }
else { x -= dx; }
if (blBottom) { y += dx; }
else { y -= dx; }
InvalidateRect(hWnd, NULL, TRUE);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
SelectObject(hdc, GetStockObject(LTGRAY_BRUSH));
Ellipse(hdc, x, 100, x + 50, 150);
EndPaint(hWnd, &ps);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
I2luY2x1ZGUgPHRjaGFyLmg+CiNpbmNsdWRlIDxXaW5kb3dzLmg+Cgpjb25zdCBUQ0hBUiBzelduZENsYXNzW10gPSBfVCgiUHJvZ3JhbTM0M2NsYXNzIik7CgpMUkVTVUxUIENBTExCQUNLIFduZFByb2MoCglIV05EIGhXbmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKTsKCmludCBXSU5BUEkgV2luTWFpbigKCUhJTlNUQU5DRSBoSW5zdGFuY2UsCglISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwKCVBTVFIgbHBDbWRMaW5lLAoJaW50IG5DbWRTaG93KSB7CglIV05EIGhXbmQ7CglXTkRDTEFTUyB3YzsKCU1TRyBtc2c7CglCT09MIGJSZXQ7CgoJd2Muc3R5bGUgPSBDU19IUkVEUkFXIHwgQ1NfVlJFRFJBVzsKCXdjLmxwZm5XbmRQcm9jID0gV25kUHJvYzsKCXdjLmNiV25kRXh0cmEgPSAwOwoJd2MuY2JDbHNFeHRyYSA9IDA7Cgl3Yy5oSW5zdGFuY2UgPSBoSW5zdGFuY2U7Cgl3Yy5oSWNvbiA9IExvYWRJY29uKE5VTEwsIElESV9BUFBMSUNBVElPTik7Cgl3Yy5oQ3Vyc29yID0gTG9hZEN1cnNvcihOVUxMLCBJRENfQVJST1cpOwoJd2MuaGJyQmFja2dyb3VuZCA9IChIQlJVU0gpR2V0U3RvY2tPYmplY3QoV0hJVEVfQlJVU0gpOwoJd2MubHBzek1lbnVOYW1lID0gTlVMTDsKCXdjLmxwc3pDbGFzc05hbWUgPSBzelduZENsYXNzOwoKCWlmICghUmVnaXN0ZXJDbGFzcygmd2MpKSB7IHJldHVybiAtMTsgfQoKCWhXbmQgPSBDcmVhdGVXaW5kb3coCgkJc3pXbmRDbGFzcywKCQlfVCgiUHJvZ3JhbTM0M+OBruOCpuOCo+ODs+ODieOCpiIpLAoJCVdTX09WRVJMQVBQRURXSU5ET1cgfCBXU19WSVNJQkxFLAoJCUNXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsCgkJQ1dfVVNFREVGQVVMVCwgQ1dfVVNFREVGQVVMVCwKCQlOVUxMLAoJCU5VTEwsCgkJaEluc3RhbmNlLAoJCU5VTEwpOwoKCWlmIChoV25kID09IE5VTEwpIHsgcmV0dXJuIC0xOyB9CgoJd2hpbGUgKGJSZXQgPSBHZXRNZXNzYWdlKCZtc2csIE5VTEwsIDAsIDApKSB7CgkJaWYgKGJSZXQgPT0gLTEpIHsgcmV0dXJuIEZBTFNFOyB9CgkJVHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKCQlEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7Cgl9CgoJcmV0dXJuIChpbnQpbXNnLndQYXJhbTsKfQoKTFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKAoJSFdORCBoV25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkgewoJSERDIGhkYzsKCVBBSU5UU1RSVUNUIHBzOwoJUkVDVCByY3REaW1lbnNpb247CgoJc3RhdGljIEJPT0wgYmxSaWdodCA9IFRSVUU7CglzdGF0aWMgaW50IHggPSAwOwoJc3RhdGljIEJPT0wgYmxCb3R0b20gPSBUUlVFOwoJc3RhdGljIGludCB5ID0gMDsKCWludCBkeCA9IDU7CgoJc3dpdGNoIChtc2cpIHsKCWNhc2UgV01fREVTVFJPWToKCQlQb3N0UXVpdE1lc3NhZ2UoMCk7CgkJYnJlYWs7CgljYXNlIFdNX0NSRUFURToKCQlTZXRUaW1lcihoV25kLCAxLCAxLCBOVUxMKTsKCQlicmVhazsKCWNhc2UgV01fVElNRVI6CgkJR2V0Q2xpZW50UmVjdChoV25kLCAmcmN0RGltZW5zaW9uKTsKCQlpZiAoeCArIDUwID49IHJjdERpbWVuc2lvbi5yaWdodCkgeyBibFJpZ2h0ID0gRkFMU0U7IH0KCQllbHNlIGlmICh4IDw9IDApIHsgYmxSaWdodCA9IFRSVUU7IH0KCgkJaWYgKHkgKyA1MCA+PSByY3REaW1lbnNpb24uYm90dG9tKSB7IGJsQm90dG9tID0gRkFMU0U7IH0KCQllbHNlIGlmICh5IDw9IDApIHsgYmxCb3R0b20gPSBUUlVFOyB9CgoJCWlmIChibFJpZ2h0KSB7IHggKz0gZHg7IH0KCQllbHNlIHsgeCAtPSBkeDsgfQoKCQlpZiAoYmxCb3R0b20pIHsgeSArPSBkeDsgfQoJCWVsc2UgeyB5IC09IGR4OyB9CgoJCUludmFsaWRhdGVSZWN0KGhXbmQsIE5VTEwsIFRSVUUpOwoJCWJyZWFrOwoJY2FzZSBXTV9QQUlOVDoKCQloZGMgPSBCZWdpblBhaW50KGhXbmQsICZwcyk7CgkJU2VsZWN0T2JqZWN0KGhkYywgR2V0U3RvY2tPYmplY3QoTFRHUkFZX0JSVVNIKSk7CgkJRWxsaXBzZShoZGMsIHgsIDEwMCwgeCArIDUwLCAxNTApOwoJCUVuZFBhaW50KGhXbmQsICZwcyk7CgkJYnJlYWs7Cgl9CglyZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtc2csIHdQYXJhbSwgbFBhcmFtKTsKfQo=