C语言编写的怎么都是命令控制台程序

大一,一个学期过去了,学了C语言,用的是谭浩强的C语言程序设计,准备下学期学c++,怎么现在用c编写的程序怎么都是命令控制台程序,要编写图形用户界面的程序,需要看学习哪些... 大一,一个学期过去了,学了 C语言 , 用的是谭浩强的C语言程序设计,准备下学期学c++,怎么现在用c编写的程序怎么都是命令控制台程序,要编写图形用户界面的程序,需要看学习哪些知识,要看哪些书籍?,前提我能看懂。。 展开
 我来答
tattackor
2015-10-31 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:888万
展开全部

1、控制台程序是基础,有基础了写图形界面的程序就很简单了。学完C++了学windows编程、MFC什么的,到时候就是图形界面了。


2、图形界面需要些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内核调试等高级功能。

百度网友69a7620
2019-10-16 · TA获得超过376个赞
知道答主
回答量:110
采纳率:66%
帮助的人:5.2万
展开全部
因为C语言刚出现时的操作系统和应用程序都是控制台的。当时人们用C语言开发出大量的控制台程序并安装到系统上,就像现在我们安装界面程序到界面系统上一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ltc1002011
2014-01-12 · TA获得超过1636个赞
知道小有建树答主
回答量:446
采纳率:50%
帮助的人:355万
展开全部
把C语言基本打好。然后学C++。用VC6就可以编图形用户界面了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喻千易4W
2014-01-12
知道答主
回答量:93
采纳率:50%
帮助的人:21.3万
展开全部
控制台程序是基础,有基础了写图形界面的程序就很简单了。

你看你现在用的VC6不也只是会用其中的一小部分吗?

学完C++了学windows编程、MFC什么的,到时候就是图形界面了。

别着急,慢慢来。

现在没学数据库、计算机网络,就算编出来图形界面的程序也只是空壳,没用。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
繁星残月夜
2018-10-17
知道答主
回答量:12
采纳率:0%
帮助的人:5.9万
展开全部
希望你能看到,也好好学习C语言,我也是带着这个疑问过来的,C可以说比较底层的语言了,你所看到的窗口程序都算是,高级方式编写出来的产物,路子其实是走窄了。
举个Win32界面编程的例子,都是C语言通过宏定义,编织出来的各种结构体(C++又称为类,增加了点功能),大量的封装结构组装起来C++面向对象的编程语言。其实越高级模块化的程度越高,还有比如API其实就是字典,一系列功能的封装,然后就是通过各种的调用,实现你想要的功能。
你想创建窗口是吧,你百度一下用DialogBox();用这个API写一个窗口,然后你会发现,其实它仅仅就是为了满足人的操作和观察习惯,背后就是要用你C的思想把动作和功能串联起来的过程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式