微软不支持C开发Win32原因剖析,及C语言在系统开发中的优势

张开发
2026/4/14 2:40:02 15 分钟阅读

分享文章

微软不支持C开发Win32原因剖析,及C语言在系统开发中的优势
微软不支持用C来开发Win32的原因简单来说有3点1、C并不是应用开发语言2、微软有C类库MFC3、微软甚至也不支持普通用户C下面我们分条阐述。你静下心来认真细密地去观察就能够发觉Windows的系统开发接口也就是API它是由来采用C语言予以提供的。为什么会这样不光是WindowsLinux有着相同作为MacOS也是这般行径因为都是如此做法。几乎所有当下的操作系统其首选是C语言。一方面C语言对内存分配能够实施极为精细的控制进而可以确保系统速度。另一方面C语言与汇编指令相混合搭配能直接对硬件进行操作。单单以系统接口这一角度而言C 所展现出来的接口于进行链接期间绝对可以确保不会出现改变的情况并且其展现良好的的兼容性是处于最佳状态的。在Windows刚开始发布的那段时期微软所采取的做法是让人们运用C语言的那种方式去编写程序。很快人们发现了一个问题。输出“Hello World”这个简单内容的GUI窗口类程序所需的程序行数在50至80行之间是这样的情况。大概如下#include LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 1. 注册窗口类 WNDCLASS wc {0}; wc.lpfnWndProc WndProc; wc.hInstance hInstance; wc.hbrBackground (HBRUSH)(COLOR_WINDOW 1); wc.lpszClassName LHelloClass; RegisterClass(wc); // 2. 创建窗口 HWND hwnd CreateWindow( LHelloClass, // 窗口类名 LHello World, // 窗口标题 WS_OVERLAPPEDWINDOW, // 窗口样式 CW_USEDEFAULT, // X位置 CW_USEDEFAULT, // Y位置 400, // 宽度 300, // 高度 NULL, // 父窗口 NULL, // 菜单 hInstance, // 实例句柄 NULL); // 附加参数 if (!hwnd) return -1; // 3. 显示窗口 ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // 4. 消息循环 MSG msg; while (GetMessage(msg, NULL, 0, 0)) { TranslateMessage(msg); DispatchMessage(msg); } return msg.wParam; }于上述程序之内存在着数量众多的重复性代码然而这是Windows所需要的其中涵盖了1、注册窗口类2、创建窗口3、显示窗口4、窗口消息处理5、窗口退出函数没错这个也要写即便是这样讲虽说Windows这款系统对于使用者而言极为便利仅需轻点鼠标便可开展运用属于那种“友好”的系统然而Windows编程却并非是一件轻松的事反而是要撰写数量众多的代码才能够将Windows编程妥善完成。在编程人员群体当中尤其是在Windows早期的时候众多Dos编程人员恰是在这个特定阶段选择了告别编程工作原因在于当时编程实在是太过复杂了而微软对于编程人员这种“断崖式”的告别行为是完全缺乏准备的。那段期间Windows尽管在用户群体里热度极高然而其开发工作却致使从事Windows开发的人员陷入极度困扰之中开展工作异常艰难那怎么办呢微软所选路径乃是简化代码要借当时最为流行的C达成这一目标。于是乎微软推出了MFC进而提供了大量的类库以及VC这个堪称开发大杀器的工具于是原本简单的一个hello World摇身一变成为了这般模样#include class CMyFrame : public CFrameWnd { public: CMyFrame() { Create(NULL, _T(Hello MFC), WS_OVERLAPPEDWINDOW, CRect(100, 100, 500, 400)); } }; class CMyApp : public CWinApp { public: BOOL InitInstance() { m_pMainWnd new CMyFrame(); m_pMainWnd-ShowWindow(m_nCmdShow); return TRUE; } }; CMyApp theApp;那一刻清爽之感增添了许多并且由于App与Framework这两个类的添入代码变得极为清新另外VC IDE当中加入了App Wizzard以及Class Wizzard还有Resource、Dialog这些具备可视化特性的“资源”工具使得Windows编程的门槛快速降低此次稳住了Windows开发的整体局势。即便这样然而C并非是那种称得上“容易”的语言对专业开发人员来讲依旧颇为艰难。哪怕到现在C程序员也不是很多。为求改变当下状况微软借由收购这一方式购进了一家供应“所见即所得”技术的公司之后据此开发出了Visual Basic。这种开发方式就是提供一个界面当处于这个界面之中时我们能够看到在一侧存在着一些于Windows里较为常用的控件诸如按钮也就是Button还有ListBox即列表以及ComboBox这样的下拉框啊用户能够借助鼠标径直将它们拖动至处于中间位置的空白Windows之上如此一来便能够创建形成界面了要是想要对按钮也就是Button的标题予以修改仅仅只需要使用“属性”窗口便可以达成了用户进行双击按钮的操作其目的在于去编写那样一个命名为“Button_Clik”的函数乃是为其去撰写与之相对应的功能的哟。这般的界面着实特别地契合“直觉”一下子使得使用的难度降低了九成致使一个平常的用户也能够迅速地学会Windows开发了。于是微软就作出了分级。普通用户用Visual Basic来编程。拥有高级功能像是编写用户控件就要运用原来的Visual C交由高级用户去达成与此同时存在一些系统级别的功能是以ActiveX、COM组件的形式予以提供这同样能够让高级用户来完成。经过这种“高加上低”的搭配方式Windows的开发格局就这样被确定了下来。确实在Java被研发出来以后微软推出了C#取代了VB所占的地位。当下Windows平台所进行的开发似乎略带有几分“日薄西山”这样的意味了更多的情形是借助Web技术经由Electronic这种具备跨平台特性的技术加以编写。想想过去那些Windows开发的岁月让我想起了一首词。它源自明代才华出众的杨慎所创作的《临江仙·滚滚长江东逝水》其所述内容如下。滚滚长江东逝水 浪花淘尽英雄。 是非成败转头空。 青山依旧在 几度夕阳红。 白发渔樵江渚上 惯看秋月春风。 一壶浊酒喜相逢。 古今多少事 都付笑谈中。IT的江水滚滚向前那里面有多少人的青春岁月啊我是明月一个互联网IT人

更多文章