そろそろ新学期ということで、かわいいかわいい後輩も入ってくるそうです。
放課後にプログラムの部活みたいなのをやれればいいねーみたいな話になったので、そのときちょこっとだけ教えられるようにとWIN32API周りを復習しております。
何度やっても初期化のあたりは忘れるので、今超適当に組んだコードを保存しておく。今後はこいつのコピペで済ませよう…。
07 | const TCHAR * APPNAME = _T( "01CreateWindow" ); |
08 | const int APP_W = 400; |
09 | const int APP_H = 300; |
13 | LRESULT CALLBACK MyWndProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) |
21 | return DefWindowProc(hWnd, msg, wp, lp); |
25 | int WINAPI _tWinMain( HINSTANCE hInst, HINSTANCE , TCHAR *, int ) |
29 | memset (&wc, 0, sizeof (wc)); |
30 | wc.hbrBackground = ( HBRUSH )GetStockObject(WHITE_BRUSH); |
31 | wc.hCursor = ( HCURSOR )LoadCursor(NULL, IDC_ARROW); |
32 | wc.hIcon = ( HICON )LoadIcon(NULL, IDI_APPLICATION); |
33 | wc.lpfnWndProc = MyWndProc; |
35 | wc.lpszClassName = APPNAME; |
38 | if (!RegisterClass(&wc)) |
46 | SetRect(&r, 0, 0, APP_W, APP_H); |
47 | AdjustWindowRect(&r, WS_OVERLAPPEDWINDOW, FALSE); |
50 | HWND hWnd = CreateWindow(APPNAME, APPNAME, |
51 | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, |
52 | r.right - r.left, r.bottom - r.top, |
53 | NULL, NULL, hInst, NULL); |
63 | ShowWindow(hWnd, SW_SHOW); |
70 | while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) |
72 | DispatchMessage(&msg); |
75 | if (msg.message == WM_QUIT) break ; |
こんなのが出ます。
PeekMessageを使っているのは、今後このスケルトンをゲーム用に拡張していくため。GetMessageとかは使わないです。ポーリングも自前でできればいいけど、面倒なときはメインループの末端にSleep(1)とか入れとけばいい。次回はDirect3D9の初期化でもやるか。
0 件のコメント:
コメントを投稿