zoukankan      html  css  js  c++  java
  • 让C语言告别简陋的黑框框,WIN32窗口显示九九乘法表(纯C代码)

    本程序用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;
    } 
    生命的意义在于学习,学习让生活变得精彩
  • 相关阅读:
    改动ScrollView的滑动速度和解决ScrollView与ViewPager的冲突
    SpringMVC 学习笔记(五) 基于RESTful的CRUD
    86/88汇编代码的执行调试
    HTML5+CSS3设计界面
    导入gradle项目
    Gradle安装 Gradle效率提升 eclipse安装gradle插件 【我】
    Eclipse集成Gradle 【Eclipse在线安装Gradle插件方法】
    gradle下载的依赖包位置 及 修改
    idea 普通 web项目配置启动【我】
    理解 IntelliJ IDEA 的项目配置和Web部署
  • 原文地址:https://www.cnblogs.com/gougouwang/p/11504075.html
Copyright © 2011-2022 走看看