アットウィキロゴ

GLFW:タイトルバーの文字列を設定する

GLFWで、アプリケーションのタイトルバーを設定してみます。
GLFWは、バージョン3.0以降、すべての文字列引数および返り値にUTF-8エンコーディングを採用しているようです。
そのままだと文字化けする事があるので、
プロジェクトのプロパティ → C/C++ → コマンドラインの追加のオプション(D)の所に /source-charset:utf-8 と記述します。
これだけだとまだ文字化けする事があるので (const char*)u8 を文字列の前に付け足して明示的にします。
以下のプログラムは、定期的にタイトルバーを切り替えます。
文字化けする時としない時がわかると思います。
記号の□(四角)は正常表示できない?ようです。

ファイル
main.cpp

main.cpp

#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
#pragma comment(linker, "/NODEFAULTLIB:msvcrt.lib")
#pragma comment(lib,"glfw3_mt.lib")
#pragma comment(lib,"opengl32.lib")

#define GLFW_INCLUDE_GLU

#include <windows.h>
#include <GLFW/glfw3.h>

int time = 0;
int flag = true;
void timer() {
    time++;
    if (time > 100){
        time = 0;
        if (flag) {
            flag = false;
        }
        else {
            flag = true;
        }
    }

}

int main(int argc, const char* argv[])
{
    glfwInit();

    GLFWwindow* window = glfwCreateWindow(640, 480, "タイトルバーに日本語表示", NULL, NULL);
    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window))
    {
        glClearColor(1.0, 1.0, 1.0, 1.0);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        timer();
        if (flag) {
            glfwSetWindowTitle(window, "タイトルバーに日本語表示");
        }
        else {
            glfwSetWindowTitle(window, (const char*)u8"タイトルバーに日本語表示");
        }

        glfwSwapBuffers(window);
        glfwPollEvents();
        Sleep(1);
    }

    glfwTerminate();

    return 0;
}

 

最終更新:2026年11月04日 00:01