让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;
} 

猜你喜欢

转载自www.cnblogs.com/gougouwang/p/11504075.html
今日推荐