本程序用DEVC++5.0编译
#include <windows.h> //回调函数............................................................................. LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { HDC hdc; switch(uMsg) //消息选择 { //这里我添加一个左键按下的消息 case WM_LBUTTONDOWN: //MessageBox(hwnd, "请点击", "提示", MB_OK); return 0; case WM_DESTROY: //当前窗口被销毁时 PostQuitMessage(0); //发出退出程序的消息 return 0; //如果处理了该消息, 就返回 0 来告知 Windows case WM_CLOSE: //当用户点击窗口右上角的关闭按钮时 DestroyWindow(hwnd); //销毁窗口 return 0; case WM_PAINT: //当窗口需要重绘时 { HDC hdc; RECT rect; PAINTSTRUCT ps = {0}; //定义一个 数组存放字符串 hdc = BeginPaint(hwnd,&ps); //开始重绘 //DrawText(hdc,TEXT("ABCDEFG"),-1,&rect,DT_CENTER); //具体输出内容(无法显示,具体原因不知道) //TextOut(hdc,350,300,TEXT("ABCDEFG"),12); //具体输出内容 /******************************************核心程序代码区******************************************************************/ SetTextColor(hdc, RGB(255,0,0)); //设置字体颜色 int i,size,j,x=10,y=200,k; TextOut(hdc,350,100,TEXT("九九乘法表"),10); TCHAR szText[256]; //定义一个而缓冲区,szText for(i=1;i<=9;i++) for(j=1;j<=i;j++) { size = wsprintf(szText,TEXT("%d×%d=%2d"),j,i,i*j); //将变量S,I的值按照格式符号%s%d转换后存入缓冲区szText TextOut(hdc,x+j*80,y+i*25, szText,size); //通过变量值的调整实现依次显示和换行等功能 } TextOut(hdc,650,530,TEXT("小狗WINDOWS小程序"),17); /******************************************核心程序代码区******************************************************************/ EndPaint(hwnd,&ps); //结束重绘 return 0; } default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } } //主函数。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ WNDCLASSEX wzgwind = {0}; //窗口类结构, 为注册窗口类作准备 wzgwind.cbSize = sizeof(wzgwind); //WNDCLASSEX结构的大小 wzgwind.cbWndExtra = 0; //窗口额外内存, 没有, 设为0 wzgwind.hbrBackground = COLOR_WINDOW; //使用系统默认背景 //wzgwind.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); //窗口背景, 这里使用灰色背景(另一种表示法) wzgwind.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); //应用程序使用的鼠标类型 wzgwind.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION)); //光标类型 wzgwind.hIconSm = NULL; //应用程序程序的小光标, 不管, 设为 NULL wzgwind.hInstance = hInstance; //应用程序程序实例句柄, 由 WinMain 函数传递过来 wzgwind.lpfnWndProc = WndProc; //这个很重要, 就是当前窗口的消息处理函数, 传递 WndProc 的地址 wzgwind.lpszClassName = "wzgwind"; //创建类时使用的类名, 可以自定义 wzgwind.lpszMenuName = NULL; //菜单, 没有, 就使用 NULL wzgwind.style = CS_HREDRAW | CS_VREDRAW; //类的风格, 垂直重绘, 水平重绘 ATOM nAtom = RegisterClassEx(&wzgwind); if (!nAtom ) { MessageBox(NULL, "注册失败", "Infor", MB_OK); return 0; } HWND hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"wzgwind","win-gou",WS_VISIBLE|WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, /* x */ CW_USEDEFAULT, /* y */ 840, /* width */ 680, /* height */ NULL,NULL,hInstance,NULL); ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); MSG msg = { 0 }; //定义并初始化msg while( msg.message != WM_QUIT ) //使用while循环,如果消息不是WM_QUIT消息,就继续循环 { if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看应用程序消息队列,有消息时将队列中的消息派发出去。 { TranslateMessage( &msg ); //将虚拟键消息转换为字符消息 DispatchMessage( &msg ); //分发一个消息给窗口程序。 } } UnregisterClass("wzgwind", wzgwind.hInstance); return 0; }