WindowsAPI画画程序|根本停不下来|By:虾米|Future团队:261256583
c吧
全部回复
仅看楼主
level 4
虾米_游戏 楼主
图片演示:
源码:
#include <stdio.h>
#include <windows.h>
LRESULT CALLBACK wndback
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShwoCmd
)
{
WNDCLASS wnd;
HWND hw;
wnd.cbClsExtra=0;
wnd.cbWndExtra=0;
wnd.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.hCursor=LoadCursor(hInstance,IDC_ARROW);
wnd.hIcon=LoadIcon(hInstance,IDI_WINLOGO);
wnd.hInstance=hInstance;
wnd.lpfnWndProc=&wndback;
wnd.lpszClassName="draw";
wnd.lpszMenuName=NULL;
wnd.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wnd);
hw=CreateWindow("draw","画画工具|虾米制作",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,800,600,NULL,NULL,hInstance,NULL);
ShowWindow(hw,SW_SHOWNORMAL);
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
bool dr=false,startup=false,xy=true;
HDC hdc;
COLORREF rec=RGB(0,0,0);
CHOOSECOLOR cc;
COLORREF ccd[16]={0};
HPEN dp;
LRESULT CALLBACK wndback
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
if (!startup)
{
hdc=GetDC(hwnd);
startup=true;
}
switch (uMsg)
{
case WM_LBUTTONDOWN:
dr=true;
xy=true;
break;
case WM_LBUTTONUP:
dr=false;
break;
case WM_MOUSEMOVE:
if (dr)
{
if (xy)
{
MoveToEx(hdc,LOWORD(lParam),HIWORD(lParam),NULL);
xy=false;
}
else
{
LineTo(hdc,LOWORD(lParam),HIWORD(lParam));
}
}
break;
case WM_RBUTTONDOWN:
cc.lStructSize=sizeof(CHOOSECOLOR);
cc.lpCustColors=ccd;
cc.Flags=CC_FULLOPEN;
ChooseColor(&cc);
dp=CreatePen(PS_SOLID,1,cc.rgbResult);
SelectObject(hdc,dp);
break;
case WM_MBUTTONDOWN:
ShowWindow(hwnd,SW_HIDE);
ShowWindow(hwnd,SW_SHOWNORMAL);
break;
case WM_DESTROY:
ReleaseDC(hwnd,hdc);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
使用方法:左键画画 | 右键设置颜色 | 中键删除
------------------------------------------------------------------
虾米制造~~
Future团队:261256583
2014年07月20日 08点07分 1
level 1
如果是调用这个API的话,C语言有没有可能写出海龟绘图?[疑问][疑问][疑问]
2021年10月11日 12点10分 2
1