#2
apull2020-12-30 11:19
|
程序代码:
#include<Windows.h>
#include<d2d1.h>
#include"dx.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
dx* graphic;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) {
HWND hwnd;
MSG msg = { 0 };
WNDCLASS wndclass;
TCHAR className[] = TEXT("HELLO WORLD !");
wndclass.hInstance = hInstance;
wndclass.lpszClassName = className;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.hCursor = nullptr;
wndclass.hIcon = nullptr;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = nullptr;
wndclass.lpszMenuName = NULL;
if (!RegisterClass(&wndclass)) {
MessageBox(NULL, TEXT("REGISTER ERROR"), className, MB_OK);
return 0;
}
hwnd = CreateWindow(
className,
TEXT("Hello World!"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
1280, 720,
NULL,
NULL,
hInstance,
NULL
);
if (hwnd == NULL) {
MessageBox(NULL, TEXT("Create Window Error"), className, MB_OK);
return 0;
}
graphic = new dx();
if (!graphic->Init(hwnd)) {
delete graphic;
return -1;
}
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
delete graphic;
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_PAINT:
graphic->renderTarget->BeginDraw();
graphic->renderTarget->Clear(D2D1::ColorF(rand()%100/100.0f, rand() % 100 / 100.0f, rand() % 100 / 100.0f));
graphic->renderTarget->EndDraw();
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}