用C语言可以进行有界面的编程吗

用TC可以吗,还是用什么VC++里写C语言可以像用C++写那样有window的窗口界面吗... 用TC可以吗,还是用什么

VC++里写C语言可以像用C++写那样有window的窗口界面吗
展开
 我来答
tattackor
推荐于2017-09-14 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:879万
展开全部

1、Windows下用API函数完全可以进行图形界面编程,不过效率太低,不如用VC、VB这种东西直接用鼠标拖放生成来得方便。非图形界面就容易一些了,命令行对话式界面在技术上很容易。


2、例程:

// Window.cpp : Defines the entry point for the application.
#include <windows.h>
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 
 
int APIENTRY WinMain(HINSTANCE hInstance,    //应用程序的实例句柄,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,    //命令行
                     int       nCmdShow)    //显示方式
{
    MSG msg;
    HWND hWnd;
    char szTitle[]="系统信息";                                // The title bar text
    char szWindowClass[]="popMsg";                                // The title bar text
    WNDCLASSEX wcex={0};
    wcex.cbSize = sizeof(WNDCLASSEX);        //WNDCLASSEX结构体大小
    wcex.style            = CS_HREDRAW | CS_VREDRAW;    //位置改变时重绘
    wcex.lpfnWndProc    = (WNDPROC)WndProc;            //消息处理函数
    wcex.hInstance        = 0;            //当前实例句柄
    wcex.hbrBackground    = (HBRUSH)COLOR_WINDOWFRAME;    //背景色
    wcex.lpszClassName    = szWindowClass;        //参窗口类名
    wcex.hIcon            =0;        //图标
    wcex.hCursor        =LoadCursor(NULL, IDC_ARROW);        //光标
    wcex.lpszMenuName    =0;        //菜单名称
    wcex.hIconSm        =0;        //最小化图标
    RegisterClassEx(&wcex);            //注册窗口类
 
    hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU|WS_VISIBLE,    //创建窗口
      CW_USEDEFAULT,CW_USEDEFAULT, 400, 300, NULL, NULL, 0, NULL);
    if (!hWnd){
      return FALSE;
    }
 
    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)
{
    PAINTSTRUCT ps;
    HDC hdc;
    RECT rect;
    switch (message) 
    {   
        case WM_PAINT:        //重绘消息
            hdc = BeginPaint(hWnd, &ps);
            GetClientRect(hWnd, &rect);
            MoveToEx(hdc,10,10,0);
            SelectObject( hdc,::CreatePen(PS_SOLID,1,RGB(0xFF,0,0)));
            LineTo(hdc,100,200);
            //            DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
            EndPaint(hWnd, &ps);
            break;
             
        case WM_CREATE:
             
            RegisterHotKey(hWnd ,1, 0 ,0x41 );
            break;
        case WM_HOTKEY:
            MessageBox(0,0,0,0);
            break;
        case WM_TIMER:
     
 
            break;
        case WM_DESTROY:    //窗口销毁消息
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}
OK先生999
2007-05-01 · 超过13用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:69.5万
展开全部
可以啊 用printf();输入图形 不过是多个printf();组合成一个图形界面的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiweix
2007-05-01 · TA获得超过584个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:0
展开全部
可以,在VC++里建立一个Win32 Application工程,然后在最后一步选择Hello,world就可以看到一个使用Windows API进行可视化编程的例子了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wormszm
2007-05-01 · 超过12用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:42.9万
展开全部
可以,但是得用图形库函数自己写界面,而且tc只能在16位的dos环境开发
写自己的界面库非常的复杂烦琐
如果是想编win32下的界面程序,可以用visual c++及visual basic
.net上的c#也可以,不过得安装类似虚拟机的.net framework来支持
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nestlake
2007-05-06 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:50.8万
展开全部
去华军搜ultimate++即可,这个是开发界面程序的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式