#include <WINDOWS.H>
#include <STDIO.H>
#include <IOSTREAM.H>
PAINTSTRUCT ps;
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam)
{
static int l[256];
switch(msg)
{
case WM_CREATE:
{
unsigned char* image=new unsigned char[512*512];
FILE* fp=fopen("D:\\new.bmp","rb");
int end=sizeof(BITMAPINFOHEADER)+sizeof(BITMAPFILEHEADER)+sizeof(RGBQUAD)*256;
unsigned char buffer;
for(int i=0;i<end;i++)
fread(&buffer,1,1,fp);
fread(image,1,512*512,fp);
fclose(fp);
ZeroMemory(l,256*4);
unsigned char* pstart=image;
unsigned char* pend=pstart+512*512;
//
//对于while/for循环,要保证其操作数据的正确性
//1,首次运行正确
//2,结束状态正确
//3,递推过程正确
//
while(pstart<pend)
l[(int)*pstart++]++;
return 0;
}
case WM_PAINT:
{
HDC hdc=BeginPaint(hWnd,&ps);
SelectObject(hdc,CreatePen(PS_SOLID,3,0));//CreatePen():自定义画笔的类型
MoveToEx(hdc,200,300,NULL);
LineTo(hdc,200,160);
MoveToEx(hdc,200,300,NULL);
LineTo(hdc,456,300);
SelectObject(hdc,GetStockObject(BLACK_PEN));
for(int i=0;i<256;i++)
{
MoveToEx(hdc,200+i,300,NULL);
LineTo(hdc,200+i,300-l[i]/20);
}
EndPaint(hWnd,&ps);
return 0;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
WNDCLASSEX wc;
wc.cbClsExtra=0;
wc.cbSize=sizeof(WNDCLASSEX);
wc.cbWndExtra=NULL;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=NULL;
wc.hIconSm=NULL;
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName="HIST";
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW|CS_VREDRAW;
RegisterClassEx(&wc);
HWND hWnd=CreateWindow("HIST","hist graph",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,640,480,NULL,NULL,hInstance,NULL);
if(!hWnd) return 0;
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 1;
}
Hist
最新推荐文章于 2024-02-20 09:53:00 发布