Winapi FillRect-won';我什么也不画
我试图在Win32中创建一个简单的窗口,并在其中绘制一个矩形,但由于某些原因,FillRect不适合我。以下是我的消息来源:Winapi FillRect-won';我什么也不画,winapi,Winapi,我试图在Win32中创建一个简单的窗口,并在其中绘制一个矩形,但由于某些原因,FillRect不适合我。以下是我的消息来源: #include <windows.h> #include "resource.h" RECT rect; LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { static PAINTSTRUCT ps; static HDC hDC;
#include <windows.h>
#include "resource.h"
RECT rect;
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static PAINTSTRUCT ps;
static HDC hDC;
switch(msg)
{
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
FillRect(hDC, &rect, (HBRUSH)(COLOR_WINDOW+1));
EndPaint(hWnd, &ps);
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hWnd;
MSG msg;
rect.left = 0;
rect.right = 0;
rect.top = 100;
rect.bottom = 100;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_ACTIVEBORDER+1);
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN_MENU);
wc.lpszClassName = "Main";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
hWnd = CreateWindowEx(NULL, "Main", "Main", WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 240, 360, NULL, NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
#包括
#包括“resource.h”
RECT-RECT;
LRESULT回调WndProc(HWND HWND,UINT msg,WPARAM WPARAM,LPARAM LPARAM)
{
静态PAINTSTRUCT-ps;
静态HDC-HDC;
开关(msg)
{
案例WM_油漆:
hDC=开始喷漆(hWnd和ps);
FillRect(hDC,&rect,(HBRUSH)(颜色窗口+1));
端漆(hWnd和ps);
打破
案例WM_结束:
窗口(hWnd);
打破
案例WM_销毁:
PostQuitMessage(0);
打破
违约:
返回DefWindowProc(hWnd、msg、wParam、lParam);
}
返回0;
}
int WINAPI WinMain(HINSTANCE HINSTANCE、HINSTANCE HPPreInstance、LPSTR lpCmdLine、int nCmdShow)
{
WNDCLASSEX wc;
HWND-HWND;
味精;
rect.left=0;
rect.right=0;
rect.top=100;
rect.bottom=100;
wc.cbSize=sizeof(WNDCLASSEX);
wc.style=0;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(空,IDI_应用程序);
wc.hCursor=LoadCursor(空,IDC_箭头);
wc.hbrBackground=(HBRUSH)(颜色+活动边框+1);
wc.lpszMenuName=MAKEINTRESOURCE(IDR_主菜单);
wc.lpszClassName=“Main”;
wc.hIconSm=LoadIcon(空,IDI_应用程序);
注册类别(&wc);
hWnd=CreateWindowEx(NULL,“Main”,“Main”,WS_系统菜单| WS_最小化框,CW_USEDEFAULT,CW_USEDEFAULT,240,360,NULL,NULL,NULL,hInstance,NULL);
显示窗口(hWnd、nCmdShow);
更新窗口(hWnd);
while(GetMessage(&msg,NULL,0,0)>0)
{
翻译信息(&msg);
发送消息(&msg);
}
返回msg.wParam;
}
我的代码中是否有遗漏或做错的地方?提前感谢您的代码很好。问题是你有 rect.left=0和rect.right=0,rect.top和rect.bottom也相同。所以你的直肠大小是0 试试这个
rect.left = 0;
rect.right = 100;
rect.top = 0;
rect.bottom = 100;