C语言怎么只能编写控制台应用程序,怎么编写WINDOWS 应用程序?

 我来答
糖糖寳寳
2015-09-09 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3954万
展开全部
  需要些SDK的知识,windows的实现中基本上都是用的C语言,其各种接口基本上都是原生C语言函数,具体比如SDK用的windows API。
使用纯C语言编写windows程序,工作量将会相当大,下面是一个小例子:
  /*
  * This is a simple windows program, it does nothing but draw an ellipse.
  * Windows SDK, Win32 API ,Pure C, (Not C++ or MFC !!)
  * Suxpert at gmail dot com, 2008/8/24
  * */
  #include <windows.h>
  LONG WINAPI WndProc( HWND, UINT, WPARAM, LPARAM );
  int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
  LPSTR lpszCmdLine, int nCmdShow ){
  /* The Entry for windows program, just like main() in dos */
  WNDCLASS wc;
  HWND hwnd;
  MSG msg;
  wc.style = 0; // Class style
  wc.lpfnWndProc = (WNDPROC)WndProc; // Window procedure address
  wc.cbClsExtra = 0; // Class extra bytes
  wc.cbWndExtra = 0; // Window extra bytes
  wc.hInstance = hInstance; // Instance handle
  wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); // Icon handle
  wc.hCursor = LoadCursor( NULL, IDC_ARROW ); // Cursor handle
  wc.hbrBackground = (HBRUSH)( COLOR_WINDOW + 1 ); // Background color
  wc.lpszMenuName = NULL; // Menu name
  wc.lpszClassName = "WinSDKtest"; // WNDCLASS name
  RegisterClass( &wc );
  hwnd = CreateWindow (
  "WinSDKtest", // WNDCLASS name
  "SDK Application", // Window title
  WS_OVERLAPPEDWINDOW, // Window style
  CW_USEDEFAULT, // Horizontal position
  CW_USEDEFAULT, // Vertical position
  CW_USEDEFAULT, // Initial width
  CW_USEDEFAULT, // Initial height
  HWND_DESKTOP, // Handle of parent window
  NULL, // Menu handle
  hInstance, // Application's instance handle
  NULL // Window-creation data
  );
  ShowWindow( hwnd, nCmdShow );
  UpdateWindow( hwnd );
  while ( GetMessage( &msg, NULL, 0, 0 ) ) {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
  }
  return msg.wParam;
  }
  LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam,
  LPARAM lParam )
  {
  /* Windows will call this function anytime... */
  PAINTSTRUCT ps;
  HDC hdc;
  switch(message){
  case WM_PAINT:
  hdc = BeginPaint( hwnd, &ps );
  Ellipse( hdc, 0, 0, 800, 600 );
  // Here we Draw an ellipse in the window of our program
  EndPaint( hwnd, &ps );
  break; // Someone like to write return here.
  case WM_DESTROY:
  PostQuitMessage(0);
  break;
  default:
  return DefWindowProc( hwnd, message, wParam, lParam );
  }
  return 0;
  }
  基本过程就是直接调用windows提供的API函数,完成从窗口创建,显示等界面功能到深层的文件操作,注册表等甚至windows内核调试等高级功能。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
dwjchdu
2011-11-01 · TA获得超过5914个赞
知道大有可为答主
回答量:4576
采纳率:60%
帮助的人:1107万
展开全部
C语言只是一种编程语言,他可以做任何事情,谁说他只能编写控制台应用的?那只是因为你的编译环境不支持windows应用的开发,不是C语言开发不了!
你用VC或者C++Builder编译环境开发试试!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lexin_lyl
2011-11-01 · TA获得超过714个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:469万
展开全部
路过,觉得你的问题挺有趣的,我给你个比喻:就像为什么母鸡只生鸡蛋,不生鸭蛋,可是鸡蛋鸭蛋煎好了之后是一个样。

不是不行,是途径不同,有自身的局限性,各种编程语言都有优越的地方也有不足的地方。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hstt110
2011-11-01 · TA获得超过1486个赞
知道大有可为答主
回答量:2484
采纳率:0%
帮助的人:2202万
展开全部
百度一下, 80x86汇编小站, 看看 站长写的下面这几篇文章, 或者 你直接联系 这个站长 跟他交流编程方面的事情。

编程是什么,什么是编程?
如何正确入门Windows系统下C/C++学习领域?
掌握C/C++后,如何在Windows系统下开发有界面的程序?
如何正确入门Windows系统下驱动开发领域?
如何正确进入基于x86-64Bit Windows系统商业软件破解领域?
如何正确的待汇编学习和反汇编学习?
成为VC++程序员,我需要学会哪些东西?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式