MFC第一个窗口,写,右键时间,左键坐标

来源:互联网 发布:淘宝网页模板免费下载 编辑:程序博客网 时间:2024/05/22 02:57
#include<windows.h>#include<stdio.h>LRESULT CALLBACK WinProc(// WinProc这个名字可以随便改的WindowProc HWND hwnd,      // handle to window UINT uMsg,      // message identifier WPARAM wParam,  // first message parameter LPARAM lParam   // second message parameter );int WINAPI WinMain(   HINSTANCE hInstance,  // handle to current instance   HINSTANCE hPrevInstance,  // handle to previous instance   LPSTR lpCmdLine,      // pointer to command line   int nCmdShow          // show state of window   ){//1.注册窗口类WNDCLASS wc;wc.cbClsExtra=0;wc.cbWndExtra=0;//wc.hbrBackground=::CreateSolidBrush(0X000000ff);//也可以这样写wc.hbrBackground=::CreateSolidBrush(RGB(255,0,0));//可以用CreateSolidBrush也可以用GetStockObjectwc.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);//里面的颜色是系统默认的一些值,BLACK_BRUSH也是其中一个wc.hCursor=::LoadCursor(NULL,IDC_ARROW);// 这里不可以用HINSTANCE hInstance, 主要是我们现在还没有做,所以就没有wc.hIcon=::LoadIcon(NULL,IDI_HAND) ;wc.hInstance= hInstance;wc.lpfnWndProc=WinProc;//指向命令行的指针wc.lpszClassName = "wuciqiu2015";wc.lpszMenuName = NULL;//菜单名为空wc.style = CS_HREDRAW | CS_VREDRAW |CS_DBLCLKS;//窗口在水平方向上发生变化时会发生同会ATOM wu= ::RegisterClass(&wc);if(0 == wu)//失败了{return 0;}//2.创建窗口类HWND hWnd = ::CreateWindow(wc.lpszClassName,"wuciqiu first win",WS_OVERLAPPEDWINDOW,10,10,800,600,NULL,NULL,hInstance,NULL);//会发送一个WM_CREATE消息到window procedureif(0 == hWnd) return 0;//3.显示窗口::ShowWindow(hWnd,SW_SHOW);//4.更新窗口::UpdateWindow(hWnd);//5.消息循环MSG msg;//这里的msg不要付初值,因为就是通过getmessage来获取信息的while(BOOL bok = ::GetMessage(&msg,NULL,0,0)){// BOOL bok = ::GetMessage(&msg,NULL,0,0);//第二个参数是指当前窗口的// if(bok == false)//WM_QUIT == false::DispatchMessage(&msg);}//MSG msg;//return msg.wParam;return 0;}LRESULT CALLBACK WinProc(// WinProc这个名字可以随便改的WindowProc HWND hWnd,      // handle to window UINT uMsg,      // message identifier WPARAM wParam,  // first message parameter LPARAM lParam   // second message parameter ){ switch(uMsg){case WM_CLOSE:{::DestroyWindow(hWnd);// 它运行完将发送WM_DESTROY信息//::SendMessage(hWnd,WM_QUIT,0,0);//思路是对的,要向信息队列里面发送信息,但是不能这样发对于WM_QUIT       // ::PostQuitMessage(0);//而是用它来退出,也可以用case WM_DESTROY:来完成退出}break;case WM_DESTROY:{::PostQuitMessage(0);}break;case WM_KEYDOWN:{char szMsg[10]={0};sprintf(szMsg,"%c",wParam);//字符串格式化HDC hdc = GetDC(hWnd);//写字绘图的三步曲::TextOut(hdc,10,10,szMsg,strlen(szMsg));::ReleaseDC(hWnd,hdc);}break;case WM_LBUTTONDOWN://左键{HDC hdc= GetDC(hWnd);//现在就是要找到x,y的坐标//MSG msg;//msg.wParam = UK_SHIFT//msg.lParam = MAKELONG(X,Y)char szMsg[] = {"1024,768"};sprintf(szMsg,"%d %d",LOWORD(lParam),HIWORD(lParam));::TextOut(hdc,LOWORD(lParam),HIWORD(lParam),szMsg,strlen(szMsg));::ReleaseDC(hWnd,hdc);}break;case WM_RBUTTONDOWN://右键,出现时间{HDC hdc= GetDC(hWnd);char szMsg[] = {"44:33:45"};SYSTEMTIME tm;::GetLocalTime(&tm);sprintf(szMsg,"%02d:%.2d:%.2d",tm.wHour,tm.wMinute,tm.wSecond);::TextOut(hdc,LOWORD(lParam),HIWORD(lParam),szMsg,strlen(szMsg));::ReleaseDC(hWnd,hdc);}break;default:return ::DefWindowProc(hWnd,uMsg,wParam,lParam);}return 0;}

0 0
原创粉丝点击