| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7635 人关注过本帖
标题:Windows下C语言拿什么写GUI?
只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:4 
Windows下C语言拿什么写GUI?
刚刚在Linux下用GTK写了一个窗口,我想问一下,你们在windows下如果用C语言的话拿什么写GUI?
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: Windows windows C语言 Linux 
2011-08-23 20:37
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:10 
一样可以用 tk/tcl 和 qt。
gui 库有很多
2011-08-24 00:57
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:10 
API 吧
程序代码:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   PSTR      szCmdLine,
                   int       iCmdShow)
{
    TCHAR    szAppName[] = "HelloWnd";
    WNDCLASS wc;
    HWND     hWnd;
    MSG      msg;

    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = szAppName;

    if(!RegisterClass(&wc)) {
        MessageBox(NULL, TEXT("Register class failed, program will to exit!"), szAppName, MB_OK | MB_ICONERROR);
        return 0;
    }

    hWnd = CreateWindow(szAppName,
                        TEXT("The Hello world program."),
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        NULL,
                        NULL,
                        hInstance,
                        NULL);

    ShowWindow(hWnd, iCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND   hWnd,
                         UINT   msg,
                         WPARAM wParam,
                         LPARAM lParam)
{
    static int   cxClient, cyClient, cxChar, cxCaps, cyChar;
    static TCHAR hello[] = "Hello, world!";
    TEXTMETRIC   tm;
    PAINTSTRUCT  ps;
    HDC          hDC;

    switch(msg) {
    case WM_CREATE:
        hDC = GetDC(hWnd);

        GetTextMetrics(hDC, &tm);
        cxChar = tm.tmAveCharWidth;
        cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;
        cyChar = tm.tmHeight + tm.tmExternalLeading;

        ReleaseDC(hWnd, hDC);
        return 0;
    case WM_SIZE:
        cxClient = LOWORD(lParam);
        cyClient = HIWORD(lParam);
        return 0;
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);

        TextOut(hDC, (cxClient - cxCaps * lstrlen(hello)) / 2, (cyClient - cyChar) / 2, hello, lstrlen(hello));

        EndPaint(hWnd, &ps);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }

    return DefWindowProc(hWnd, msg, wParam, lParam);
}

。。。

My life is brilliant
2011-08-24 08:01
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
我用的是GTK,我也把GTK代码贴上来吧。。。。

o(∩∩)Linux & Python 群:187367181
2011-08-24 10:05
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
程序代码:
#include <gtk/gtk.h>

GdkPixbuf *creat_pixbuf(const gchar *file)
{
    GdkPixbuf *pixbuf;
    GError *error = NULL;
    pixbuf = gdk_pixbuf_new_from_file(file, &error);
    if (!pixbuf)
    {
        fprintf(stderr, "%s\n", error->message);
        g_error_free(error);
    }
    
    return pixbuf;
}

int main(int argc, char **argv)
{
    /*定义一个窗口指针*/
    GtkWidget *main_window;
    
    /*初始化*/
    gtk_init(&argc, &argv);
    
    /*创建一个窗口*/
    main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    
    /*设置窗口标题*/
    gtk_window_set_title(GTK_WINDOW(main_window), "Yucoat!");
    
    /*设置窗口默认大小*/
    gtk_window_set_default_size(GTK_WINDOW(main_window), 280, 200);
    
    /*设置窗口所在位置*/
    gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER);
    
    /*设置窗口图标*/
    gtk_window_set_icon(GTK_WINDOW(main_window), creat_pixbuf("music.png"));
    
    g_signal_connect(main_window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    /*显示窗口*/
    gtk_widget_show(main_window);

    gtk_main();

    return 0;
}

o(∩∩)Linux & Python 群:187367181
2011-08-24 10:05
快速回复:Windows下C语言拿什么写GUI?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044430 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved