VS2019使用IUP跨平台界面库设置方法

要点一:创建桌面应用程序
image

要点二:去掉创建项目配带的全部代码,换上用IUP写的代码
image

要点三:附加上iup的include目录
image

要点四:可选多线程运行库生成release应用
image

要点五:附加IUP目录,即LIB目录。IUP没有单独的LIB目录。
image

要点六:附加IUP及其它需要的IUP的LIB,同时必须加上 comctl32.lib,IUP的lib会调用它。
image

要点七:IUP内部使用UTF8编码
image

要点八:宽字符转换UTF8字符后送给IUP
image

编译运行结果:
image

源代码

点击查看代码
#include "stdlib.h"
#include "locale.h"
#include "windows.h"
#include "iup.h"

int btn_exit_cb(Ihandle* self) {
	IupMessage("IUP example", "Hello World!");
	return IUP_DEFAULT;
}

char* toUTF8(const wchar_t* textString) {
	static char utf8Buf[1024] = { 0 };
	long utf8Size = 0;
	utf8Size = WideCharToMultiByte(CP_UTF8, 0, textString, -1, NULL, 0, NULL, NULL);
	utf8Size = WideCharToMultiByte(CP_UTF8, 0, textString, -1, utf8Buf, utf8Size, NULL, NULL);
	return utf8Buf;
}

void initUI(int argc, char** argv) {
	Ihandle* dlg, * lbl, * btn, * vbox, * spacer1, * spacer2;
	IupOpen(&argc, &argv);

	setlocale(LC_ALL, "zh_CN.UTF-8");
	IupSetGlobal("UTF8MODE", "YES");
	IupSetGlobal("UTF8MODE_FILE", "YES");

	lbl = IupLabel(toUTF8(L"IUP是个易用的轻量级界面库"));
	btn = IupButton(toUTF8(L"Click-点击"), NULL);
	spacer1 = IupLabel("");
	spacer2 = IupLabel("");
	vbox = IupVbox(spacer1, lbl, spacer2, btn, NULL);
	IupSetAttribute(vbox, "MARGIN", "15x15");
	IupSetAttribute(vbox, "GAP", "10");
	IupSetAttribute(vbox, "EXPAND", "BOTH");
	IupSetAttribute(btn, "EXPAND", "HORIZONTAL");
	IupSetAttribute(lbl, "EXPAND", "HORIZONTAL");
	IupSetAttribute(lbl, "ALIGNMENT", "ACENTER");
	dlg = IupDialog(vbox);
	IupSetAttribute(dlg, "TITLE", "Hello World!");
	IupSetAttribute(dlg, "RASTERSIZE", "600X300");
	IupSetAttribute(dlg, "MINBOX", "YES");
	IupSetAttribute(dlg, "MAXBOX", "YES");
	IupSetCallback(btn, "ACTION", (Icallback)btn_exit_cb);
	//char *ScreenSize = IupGetGlobal("FULLSIZE");
	//IupMessage("IUP example", ScreenSize);    //1920x1020
	IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
	IupMainLoop();
	IupClose();
}

int main(int argc, char** argv) {
	initUI(argc, argv);
	return EXIT_SUCCESS;
}
posted @ 2026-01-15 14:48  Mongnewer  阅读(1)  评论(1)    收藏  举报