c语言是不是只能写控制台啊

网上好多人都说学C语言好于是决定学C语言现在我学C语言一个月了面对的还是那个黑框框C能写窗口吗?如果不能写窗口学C语言有什么用啊?或者是C语言还要靠学其他语言才能做出窗口... 网上好多人都说学C语言好
于是决定学C语言
现在我学C语言一个月了
面对的还是那个黑框框
C能写窗口吗?
如果不能写窗口学C语言有什么用啊?
或者是C语言还要靠学其他语言才能做出窗口?
如果这样是不是我还要学java c++什么的
能不能像易语言一样自己画出个窗口来?
我暂时还不想用DLL写窗口
展开
 我来答
xshrim
2013-01-01 · TA获得超过2157个赞
知道小有建树答主
回答量:688
采纳率:66%
帮助的人:525万
展开全部
我来给你解释下吧:
C语言是很底层的东西。它能够用来写图形化界面,但是需要使用单独的图形库,因为关于图形的部分不是C语言标准里的东西。
Windows环境下的话,用C写图形化界面就得使用微软的Windows API。那个学起来很难,用起来也麻烦得很。微软为了简化图形开发,为C++开发者提供了C++编写的基于Windows API的类库封装--MFC(Microsoft Foundation Classes),为C提供了Windows SDK。MFC用起来还能简化不少,SDK则是依然很复杂。想用C写Windows系统下的图形化界面,就得学《Windows程序设计》。
Linux环境下的话,就QT、GTK+之类的。

所以说,Windows环境下用C写图形化界面的想法还是放弃吧,太难,外面基本上也没有哪个公司会做这样的开发。C本来就不是用来干这个的,主要用于系统应用开发,做底层的。
C++就用MFC,不过也不怎么好学,开发效率也不高。Java的话得学Swing、AWT,不过Java写界面也是渣得很。
现在最主流的图形界面开发都是用的C#。开发图形界面太简单了,特别是WPF。开发效率是当前最高的。你几乎不用学编程就能做界面,界面和编程基本是分离的。(当然动态界面控制是必须要编程实现的)
学完C学C++吧,了解下面向对象编程,然后就学C#,做图形界面就简单了。当然你也可以直接跳过C++学C#,只是可能不好接受点。

另外,关于界面,这些界面都是API自己画出来的,你只需要在代码里调用就能产生,而不是要你自己去画。在集成开发环境(比如Visual C++、Visual Studio)里拖拽控件到界面上实际上也是集成开发环境在自动为你生成调用控件的代码。
更多追问追答
追问
都说c语言是基础,我以后学了c++是否还要经常用到c语言?他们是什么运用关系?是不是用c写dll然后让c++调用?或是其他办法配合?
追答
C++是C语言基础上的扩展,C++和Java一样都是基于C的,只是他们增加了很多新特性,封装了很多东西。
C++对C的继承比较直接,能够直接兼容C,也就是说,在C++程序里面加入C代码一样完全没问题。无缝配合,不需要用dll作为沟通的媒介。
学了C++基本就不需要再用到C语言了,写dll也不是非要C写,C++写dllC++用就行了,当然C写的也能用。
tattackor
2015-10-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:889万
展开全部

1、当然不是。C语言还可以写编写WINDOWS 应用程序。
2、写windows程序需要些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;
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张啸武
2013-01-01 · 超过14用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:31.7万
展开全部
我觉的还是 c+api 先写点东西 了解一下底层东西 有助于其他语言
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
donglinade
2013-01-01
知道答主
回答量:9
采纳率:0%
帮助的人:5.5万
展开全部
c是其它语言的基础c语言写了java php写了操作系统等等还有很多界面都可以的c++是c的扩展
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
车木轩辕
2013-01-01 · 超过22用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:41.3万
展开全部
当你从C进阶到C++,就有了对象,也就有多彩的界面了,现在,还是打好基础,练好控制台
更多追问追答
追问
c++的窗口是用画出来的还是用代码敲出来的?
追答

都可以,画是很方便,直接从工具箱里选中想要的控件,拖放绘制就好了,在“属性”面板里可以很方便地调整诸如颜色、显示的文字等属性,但如果想自定义一些效果,就要自己敲代码,因为“画”只能画外观,至于每一个“事件”(如“单击”)发生后要如何反应,就要敲代码了。附图,我演示的绘制button(按纽)控件:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式