C语言+win32api写窗体应用程序

 更新时间:2016年02月16日 09:53:52   作者:自来也  
本文给大家分享的是个人使用纯C语言结合win32api制作窗体应用程序的代码,非常的简单,给需要的小伙伴参考下。

昨晚看了一下win32api编程的知识,我在网上搜索了许多教程,一个美化版的windows编程,代码错漏百出,缺字,翻译难懂生硬,术语不专业,一个windows.c编程,模糊,而且用的是VC++6.0,由于我的电脑装不上vc++6.0,只能用vs2008,许多操作和函数都不太一样了。在网上找到一篇博客园的win32api编程的文章,照抄下来,结果编译下来几十个错误……晕死了。

后来还是参照以下四个步骤,自己查MSDN用C语言写出来了,晕死,英文不好,话说,金山词霸对MSDN的整句翻译很专业啊。

步骤:
1、注册窗口类;
2、创建窗体;
3、消息循环;
4、编写窗口消息处理函数。

代码:

#include <windows.h>
#include<tchar.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR szCmdLine, int nCmdShow)
{
    WNDCLASS wc;
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject();
    wc.lpszMenuName = NULL;
    wc.lpszClassName = _T("MyWindowClass");
    if (!RegisterClass(&wc))
    {
        MessageBox (NULL, _T("无法注册窗口类"), _T("错误"), MB_OK);
        return 0 ;
    }
    HWND newWindow = CreateWindow(
                                        _T("MyWindowClass"), 
                                        _T("我的第一个winapi程序"), 
                                        WS_OVERLAPPEDWINDOW, 
                                        0, 
                                        0, 
                                        CW_USEDEFAULT, 
                                        CW_USEDEFAULT, 
                                        NULL, 
                                        NULL, 
                                        hInstance, 
                                        NULL
                                    );
    if (NULL == newWindow)
    {
        MessageBox (NULL, _T("无法创建窗体"), _T("错误"), MB_OK);
        return 0;
    }
    ShowWindow(newWindow, nCmdShow);
    UpdateWindow(newWindow);
    MSG msg;
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)
        {
            case WM_DESTROY:
            {
                PostQuitMessage(0);
                break;
            }
            default :
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
        return 0;
    }

就是一个只有标题栏、关闭按钮、最小化按钮、最大化/还原按钮、显示区域的窗体。

用纯C写的,郁闷死了,好长啊,win32api超级多宏的,又爱又恨,烦死了

相关文章

  • 详解C++ sort函数的cmp参数

    详解C++ sort函数的cmp参数

    这篇文章主要介绍了C++ sort函数的cmp参数,以升降排序个结构体的排序展开的话题,感兴趣的小伙伴可以参考下面文章内容
    2021-09-09
  • C语言中函数栈帧的创建和销毁的深层分析

    C语言中函数栈帧的创建和销毁的深层分析

    在C语言中,每一个正在运行的函数都有一个栈帧与其对应,栈帧中存储的是该函数的返回地址和局部变量。从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等
    2022-04-04
  • c++多线程为何要使用条件变量详解

    c++多线程为何要使用条件变量详解

    多线程是多任务处理的一种特殊形式,下面这篇文章主要给大家介绍了关于c++多线程为何要使用条件变量的相关资料,需要的朋友可以参考下
    2021-06-06
  • C语言多组输入使用方法

    C语言多组输入使用方法

    这篇文章主要给大家介绍了关于C语言多组输入使用的相关资料,在 C语言中可以使用循环语句来实现多组输入,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • C++定时器Timer在项目中的使用方法

    C++定时器Timer在项目中的使用方法

    这篇文章主要给大家介绍了关于C++定时器Timer在项目中的基本使用方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • C++面试基础之static关键字详解

    C++面试基础之static关键字详解

    这篇文章主要给大家介绍了关于C++面试基础之static关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • C语言文字艺术之数据输入输出

    C语言文字艺术之数据输入输出

    这篇文章主要介绍了C语言文字艺术之数据输入输出,C语言的语句用来向计算机系统发出操作指令。一条语句编写完成经过编译后产生若干条机器指
    2022-07-07
  • C语言二叉树的遍历示例介绍

    C语言二叉树的遍历示例介绍

    大家好,本篇文章主要讲的是C语言二叉树的遍历示例介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 基于C++实现俄罗斯方块游戏的示例代码

    基于C++实现俄罗斯方块游戏的示例代码

    俄罗斯方块(Tetris)是一款风靡全球的经典益智游戏,自1984年首次发布以来,便吸引了无数玩家,在这篇博文中,我们将深入探讨如何用 C++ 编写一个简单的俄罗斯方块游戏,我们将从游戏的基本概念和设计入手,逐步实现游戏的各个功能模块,感兴趣小伙伴快来看看吧
    2024-11-11
  • C++编程异常处理中try和throw以及catch语句的用法

    C++编程异常处理中try和throw以及catch语句的用法

    这篇文章主要介绍了C++编程异常处理中try和throw以及catch语句的用法,包括对Catch块的计算方式的介绍,需要的朋友可以参考下
    2016-01-01

最新评论