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语言数字图像处理之直方图均衡化

    C语言数字图像处理之直方图均衡化

    这篇文章主要为大家详细介绍了C语言数字图像处理之直方图均衡化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • EasyC++静态持续变量

    EasyC++静态持续变量

    这篇文章主要介绍了EasyC++静态持续变量,除了自动存储变量之后,C++当中还有静态持续变量。关于静态持续变量的定义C++和C语言是一样的,它拥有三种链接性,即外部链接性、内部连接性和无链接性,下面一起进入文章了解更具体内容吧
    2021-12-12
  • C语言中的5种简单排序算法(适合小白)

    C语言中的5种简单排序算法(适合小白)

    在编程练习时我们经常会遇到一些将一串乱序的数字排列成有序的数列(递增,递减)的问题,以此起到解决问题的效果,下面这篇文章主要给大家介绍了关于C语言中的5种简单排序算法的相关资料,需要的朋友可以参考下
    2023-03-03
  • C语言接口与实现方法实例详解

    C语言接口与实现方法实例详解

    这篇文章主要介绍了C语言接口与实现方法,包括接口的概念、实现方法及抽象数据类型等,并配合实例予以说明,需要的朋友可以参考下
    2014-09-09
  • C++深入探索内联函数inline与auto关键字的使用

    C++深入探索内联函数inline与auto关键字的使用

    本篇文章主要包括内联函数和auto关键字。其中,内敛函数包括概念,特性等;auto关键字的使用规则,使用场景等,接下来让我们深入了解
    2022-05-05
  • C++实现LeetCode(126.词语阶梯之二)

    C++实现LeetCode(126.词语阶梯之二)

    这篇文章主要介绍了C++实现LeetCode(126.词语阶梯之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++实现简单通讯录管理系统

    C++实现简单通讯录管理系统

    这篇文章主要为大家详细介绍了C++实现简单通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++软件添加dump调试打印日志(推荐)

    C++软件添加dump调试打印日志(推荐)

    下面小编就为大家带来一篇C++软件添加dump调试打印日志(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • C++链表倒序实现方法

    C++链表倒序实现方法

    这篇文章主要介绍了C++链表倒序实现方法,是一个很经典的C++链表操作实例,需要的朋友可以参考下
    2014-08-08
  • VC小技巧汇总之5则实用小技巧

    VC小技巧汇总之5则实用小技巧

    这篇文章主要介绍了VC小技巧汇总之5则实用小技巧,需要的朋友可以参考下
    2014-07-07

最新评论