// データ型とデータ構造の定義は、所望のアプリケーションが含まれWINDOWS.Hファイル の#include <windows.hに> する#include <stdlib.h>に含ま する#include <TIME.H> 書式#include <math.h>の LRESULTをWndProcメソッドCALLBACK(HWND、UINT、WPARAM、LPARAM); // ウィンドウ関数の説明 // ---------次の初期化ウィンドウクラス-------------- INT WINAPI WinMain関数( HINSTANCE、HINSTANCE hPrevInst、lpszCmdLine LPSTR、HINSTANCE 値int nCmdShow) { ; HWND HWND MSGメッセージ、 WNDCLASS WNDCLASS; CHAR、lpszClassName [] = " ウィンドウ" ; // ウィンドウクラス名 チャー lpszTitle [] = "My_Windows " ; // ウィンドウタイトル名 // ウィンドウクラス定義 wndclass.style = CS_HREDRAW | CS_VREDRAW; // ウィンドウタイプは、デフォルトのタイプである 。wndclass.lpfnWndProc = WndProcメソッド // WndProcメソッドのためのウィンドウハンドラ wndclass.cbClsExtra = 0 ; // 無膨張ウィンドウクラス wndclass.cbWndExtra = 0 ; // ウィンドウのインスタンスのない拡張 wndclass.hInstance = hInstanceは; // このインスタンスハンドル wndclass.hIcon = LoadIcon(NULL、IDI_APPLICATION); // 最小化アイコンデフォルトアイコンにウィンドウの WNDCLASS。 = LoadCursor hCursor(NULL、IDC_ARROW); //カーソルの矢印使用してウィンドウ wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSHを); // ウィンドウの背景は白です wndclass.lpszMenuName = NULL; // ウィンドウなしメニュー wndclass.lpszClassName =、lpszClassName; // という名前のウィンドウクラス"サンプルウィンドウ" // -----------レジスタウィンドウクラスを IF(RegisterClass(&WNDCLASS)!)// 登録は、アラーム音ガオ音に失敗した場合 { のMessageBeep(0 ); 戻り値FALSEを; } // 作成します。ウィンドウ HWND = のcreateWindow( lpszClassName、// ウィンドウクラス名 lpszTitle、 //タイトル名ウィンドウインスタンス WS_OVERLAPPEDWINDOW、// ウィンドウスタイル CW_USEDEFAULT、 CW_USEDEFAULT、 // デフォルト値にウィンドウ座標の左上隅 CW_USEDEFAULT、 CW_USEDEFAULT、 // ガオの窓と全体のデフォルト値に NULL、 // ウィンドウなし親ウィンドウの NULL、 // メインメニューのないこのウィンドウ hInstanceは、 // 現在扱うアプリケーションのウィンドウを作成 NULLを // この値を使用しないでください ); のShowWindow(HWND、nCmdShow); // 表示窓 UpdateWindow(HWND); //は、ユーザ領域を描き ながら(のGetMessage(&メッセージ、NULL、0、0))// メッセージループ { TranslateMessage( &; MSG) DispatchMessageを(&MSG); } 戻り msg.wParamと、 // システムにプログラム終了情報バック } #defineする LR(+ rect.left rect.right) #defineする TDを(rect.bottom + rect.top) の#define R&LT 50 の#define PI ACOS(-1)// ウィンドウ関数 LRESULT CALLBACK WndProcメソッド(HWNDのhWnd、UINTメッセージ、WPARAM wParamに、LPARAM lParamに) { HDCのhDC。 HBRUSH HBRUSH; RECTのRECT。 HPEN HPEN; PAINTSTRUCT PtStr; 点P、追加します。 静的 int型のX、Y。 静的 INT VX = 3、VY = 4 。 静的 INT R = 5 。 静的 int型 uddis = 1 ; 静的 int型 lrdis = 1 ; 静的な int型のトン。 int型nextx、nexty。 COLORREF色[ 7 ] = {RGB(255、0、0)、RGB(255、165、0)、RGB(255、255、0)、RGB(0、255、0)、RGB(0、255、255)、RGB(0、0、255)、RGB(139、0、255 )}。 スイッチ(メッセージ) { ケースWM_CREATE: srand関数(時間(NULL))。 X =ランド()%千 + 10 。 Y =ランド()%千 + 10 。 VX =ランド()%50 。 VY =ランド()%50 。 R =ランド()%50 。 T = ランド()。 もし(tは%2 ) VX = - VX。 T = ランド()。 もし(T%2 ) VY = - VY。 リターン 0 ; 場合WM_PAINT: GetClientRect(hWndは、&RECT)。 たhDC = BeginPaint関数(hWndは、&PtStr)。 HPEN = CreatePen(PS_SOLID、3色[ 0 ])。 HBRUSH = CreateHatchBrush(HS_BDIAGONAL、色[ 0 ])。 SelectObject(HDC、HPEN)。 SelectObject(HDC、HBRUSH)。 楕円(HDC、X -r、年、X + R、Y +のR) nextx = X + lrdis * VX。 nexty = Y + uddis * VY。 もし(nextx <rect.left +R) { nextx = rect.left + R。 lrdis = - lrdis。 } であれば(nexty <rect.top + R) { nexty = rect.top + R。 uddis = - uddis。 } であれば(nextx> rect.right - R) { nextx > rect.right - R。 lrdis = - lrdis。 } であれば(nexty> rect.bottom - R) { nexty = rect.bottom -R; uddis = - uddis。 } 、X = nextx。 Y = nexty。 DeleteObjectの(HPEN)。 DeleteObjectの(HBRUSH)。 睡眠(50 )。 InvalidateRect(hWndは、NULL、1 )。 EndPaint(hWndを、&PtStr)。 リターン 0 ; ケースWM_DESTROY: PostQuitMessage(0)。 // 调用PostQuitMessage发出WM_QUIT消息 リターン 0 ; デフォルト: リターンDefWindowProc関数(hWndは、メッセージ、wParamに、lParamに); // デフォルト・メッセージ・システムのデフォルトハンドラを使用します } }