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

2024-12-22 23:53:22
推荐回答(5个)
回答1:

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


2、例程:

// Window.cpp : Defines the entry point for the application.
#include 
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;
}

回答2:

可以啊 用printf();输入图形 不过是多个printf();组合成一个图形界面的

回答3:

可以,在VC++里建立一个Win32 Application工程,然后在最后一步选择Hello,world就可以看到一个使用Windows API进行可视化编程的例子了

回答4:

可以,但是得用图形库函数自己写界面,而且tc只能在16位的dos环境开发
写自己的界面库非常的复杂烦琐
如果是想编win32下的界面程序,可以用visual c++及visual basic
.net上的c#也可以,不过得安装类似虚拟机的.net framework来支持

回答5:

去华军搜ultimate++即可,这个是开发界面程序的