Visual Studio 2022 GTK4 GUI 开发 Project Key setting

Visual Studio 2022 GTK4 Project Key setting

一般情况下需要MSYS2,然后参考Linux下开发。
这里使用第二种,直接 VS + 编译好的bin/lib/include的开发。

预编译好的文件(只有x64版本):
https://github.com/wingtk/gvsbuild

下载后,解压到C盘根目录,C:/gtk/

VS Project 配置方法:

Lib库依赖:
gio-2.0.lib;cairo.lib;gdk_pixbuf-2.0.lib;glib-2.0.lib;gtk-4.lib;harfbuzz.lib;pango-1.0.lib;graphene-1.0.lib;gobject-2.0.lib;%(AdditionalDependencies)

Lib库路径:
C:\gtk\lib;$(ReferencePath)

Bin依赖,需要添加到Path
C:\gtk\bin;$(ExecutablePath)

Include依赖:
C:\gtk\lib\graphene-1.0\include;C:\gtk\include\graphene-1.0;C:\gtk\include\gdk-pixbuf-2.0;C:\gtk\include\harfbuzz;C:\gtk\include\pango-1.0;C:\gtk\include\cairo;C:\gtk\include\gtk-4.0\;C:\gtk\lib\glib-2.0\include;C:\gtk\include\glib-2.0;C:\gtk\include;$(IncludePath)

===========================================================
VS Project设定:
Windows subsytem setting

===========================================================

Code

// gtk4test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
//#pragma comment( linker, "/subsystem:\"windows\" /entry:\"main\"" ) // 设置入口地址

#include <Windows.h>
#include <gtk/gtk.h>

static void print_hello(GtkWidget* widget, gpointer data)
{
	g_print("Hello World\n");
}

static void activate(GtkApplication* app, gpointer user_data)
{
	GtkWidget* window;
	GtkWidget* button;
	GtkWidget* box;

	// 创建 window
	window = gtk_application_window_new(app);
	gtk_window_set_title(GTK_WINDOW(window), "Window");
	gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

	// box layout
	box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
	gtk_widget_set_halign(box, GTK_ALIGN_CENTER);
	gtk_widget_set_valign(box, GTK_ALIGN_CENTER);
	gtk_window_set_child(GTK_WINDOW(window), box);

	// button to box layout
	button = gtk_button_new_with_label("Hello World");
	g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL);
	g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_window_destroy), window);  // 关联 click 到 window destroy
	gtk_box_append(GTK_BOX(box), button);

	// 显示 window
	gtk_window_present(GTK_WINDOW(window));
}

int WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR     lpCmdLine,
	int       nShowCmd
)
{
	GtkApplication* app;
	int status;

	app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
	g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
	status = g_application_run(G_APPLICATION(app), 0,nullptr);
	g_object_unref(app);

	return status;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值