###前提・実現したいこと
ウィンドウに描画した円(Ellipse関数を用いた。円の直径をSとして)がある時間間隔で(SetTimer関数を用いた。)大きくなったり小さくなったりするプログラムを作りたいです。
###発生している問題・エラーメッセージ
ビルドは成功するが実行しても大きくなったり小さくなったりしません。Sの初期値がウィンドウに描画されるだけです。
エラーメッセージ
###該当のソースコード
ウィンドウプロシージャのソースコードを記述しておきます。使用言語は、C++で、環境はVisual Studioです。
#include "kobayashi.h" #include "time.h" #define ID_MYTIMER 100 LRESULT CALLBACK WndProc2( HWND hWnd2, UINT msg, WPARAM wp, LPARAM lp ) { PAINTSTRUCT ps; HDC hdc; HPEN hPen,h01dPen; HBRUSH hBrush, h01dBrush; RECT rect; S = 0.00000147; speed = 0.000001; switch (msg) { case WM_CREATE: //ウインドウが生成されたときに1度だけ通過 //時間割り込みの発生タイミングを設定 SetTimer(hWnd2, ID_MYTIMER, 2000, NULL); break; case WM_TIMER: if (wp != ID_MYTIMER) return (DefWindowProc(hWnd2, msg, wp, lp)); // タイマー割り込み処理 S += speed; if((S > 0.000004) || (S < 0.000001)) speed = -speed; InvalidateRect(hWnd2, NULL, TRUE); UpdateWindow(hWnd2); break; case WM_PAINT: hdc = BeginPaint(hWnd2, &ps); Ellipse(hdc, 292.5-(S*1000000/4*226.5+0.5), 181-(S*1000000/4*226.5+0.5), 292.5+(S*1000000/4*226.5+0.5), 181+(S*1000000/4*226.5+0.5)); hPen = CreatePen(PS_DOT, 0, RGB(255, 0, 0)); h01dPen = (HPEN)SelectObject(hdc, hPen); hBrush = (HBRUSH)GetStockObject(NULL_BRUSH); h01dBrush = (HBRUSH)SelectObject(hdc, hBrush); DeleteObject(hPen); SelectObject(hdc, h01dPen); SelectObject(hdc, h01dBrush); EndPaint(hWnd2, &ps); break; case WM_DESTROY: KillTimer(hWnd2, ID_MYTIMER); PostQuitMessage(0); break; default: return (DefWindowProc(hWnd2, msg, wp, lp)); } return 0; }
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/17 09:05
2017/05/17 09:13
2017/05/17 09:15
2017/05/17 09:22
2017/05/17 09:23
2017/05/17 09:25
2017/05/17 09:30 編集
2017/05/17 09:31
2017/05/17 09:34
2017/05/17 09:35
2017/05/17 09:38 編集
2017/05/17 09:38
2017/05/17 09:43
2017/05/17 09:57