2022/09/08(木) [n年前の日記]
#1 [prog][windows] リソースエディタを試用
Windows10 x64 21H2上で動作するリソースエディタを少し試用してみた。
C/C++ でWindows用プログラムを作る際、リソースファイル(.rc)というファイルを用意して、
そのあたり、GUIで編集できるツールが無いものかと。
C/C++ でWindows用プログラムを作る際、リソースファイル(.rc)というファイルを用意して、
- 文字列とか、
- bitmap画像とか、
- ダイアログのレイアウトとか、
- アプリのアイコンとか、
そのあたり、GUIで編集できるツールが無いものかと。
◎ リソーエディタを試用。 :
ググってみたら、リソーエディタなるツールに遭遇したので試用してみた。
_リソーエディタ(RisohEditor)
_リソーエディタの詳細情報 : Vector ソフトを探す!
RisohEditor-5.7.2-portable.zip をDL・解凍。RisohEditorPortable.exe を実行。
手元の .rc を読み込ませようとするとエラーが出てしまう…。付属のサンプルは開けるから、こちらの .rc が何かおかしいのだろうか…。MinGW の windres に渡してもエラーが出ない .rc なのだけどな…。
何も開いてない状態からダイアログを追加して、といった感じで操作したら動いてくれた。一旦そんな感じで各ウィジェットの位置のアタリをつけて、といった使い方なら問題は無さそう。少なくとも、テキストエディタで.rcを書き換えていくより全然マシな気がする。
_リソーエディタ(RisohEditor)
_リソーエディタの詳細情報 : Vector ソフトを探す!
RisohEditor-5.7.2-portable.zip をDL・解凍。RisohEditorPortable.exe を実行。
手元の .rc を読み込ませようとするとエラーが出てしまう…。付属のサンプルは開けるから、こちらの .rc が何かおかしいのだろうか…。MinGW の windres に渡してもエラーが出ない .rc なのだけどな…。
何も開いてない状態からダイアログを追加して、といった感じで操作したら動いてくれた。一旦そんな感じで各ウィジェットの位置のアタリをつけて、といった使い方なら問題は無さそう。少なくとも、テキストエディタで.rcを書き換えていくより全然マシな気がする。
◎ Resource Hackerを試用。 :
Resource Hacker 5.1.8 を試用してみた。
_Resource Hacker
このツールを使っても、ある程度調整作業ができるようだなと…。
そのままリソースファイルとして利用できないかもしれないけれど、各ウィジェットの表示位置やサイズを確認する作業程度なら使えそう。
_Resource Hacker
このツールを使っても、ある程度調整作業ができるようだなと…。
- 何のファイルも開かない状態で、Action → Add using Script Template、を選ぶと、DIALOG の雛形がエディタ画面に挿入される。
- ツールバー上の Compile Script (緑色の再生ボタン)をクリックするか、F5キーを叩けば、どんな見た目になるか表示される。
- 表示されたダイアログ上で右クリックして Insert Control を選べば、ウィジェットを追加していける。
そのままリソースファイルとして利用できないかもしれないけれど、各ウィジェットの表示位置やサイズを確認する作業程度なら使えそう。
◎ XN Resource Editorを試用。 :
XN Resource Editor というリソースエディタもあるらしいので試用してみた。日本語版もあるらしい。ありがたや。
_このサイトにある Delphi 支援アプリケーションは? [Delphi Programming]
_XN Resource Editor :職人的フリーソフトの使い方
リソース → リソースを追加、で Dialog を追加後、右側のウィジェット一覧から Static Text や Button などを追加していけばいい。
プロパティ入力欄で Enterキーを押しても反映されないけれど、TABキーでフォーカスを変えていけば反映される模様。
ただ、配置したウィジェットの表示位置をマウスドラッグで変更したりはできないっぽい。ウェジットのサイズなら、マウスドラッグで変更できるようだけど…。
少し触ってるうちに、サイズの計算がなんだかおかしいことに気づいた。マウスドラッグ時に設定される値と、プロパティ一覧上の入力値が大きくずれている。どちらが正しいのか…。
オリジナルの英語版をDL・インストールしてみたけれど、そちらは何か操作する度にアプリが落ちてしまった。
_Releases - stefansundin/xn_resource_editor
_このサイトにある Delphi 支援アプリケーションは? [Delphi Programming]
_XN Resource Editor :職人的フリーソフトの使い方
リソース → リソースを追加、で Dialog を追加後、右側のウィジェット一覧から Static Text や Button などを追加していけばいい。
プロパティ入力欄で Enterキーを押しても反映されないけれど、TABキーでフォーカスを変えていけば反映される模様。
ただ、配置したウィジェットの表示位置をマウスドラッグで変更したりはできないっぽい。ウェジットのサイズなら、マウスドラッグで変更できるようだけど…。
少し触ってるうちに、サイズの計算がなんだかおかしいことに気づいた。マウスドラッグ時に設定される値と、プロパティ一覧上の入力値が大きくずれている。どちらが正しいのか…。
オリジナルの英語版をDL・インストールしてみたけれど、そちらは何か操作する度にアプリが落ちてしまった。
_Releases - stefansundin/xn_resource_editor
◎ BCCFormを試用。 :
Borland C++向けのツールもあるらしい。
_BCCForm and BCCSkeltonの詳細情報 : Vector ソフトを探す!
BCCFORM.EXE (2.41R1.5) をDLしてインストールしてみた。
セットアップファイルを実行したら、何故か D:\Program Files\Borland\BCCForm\ に決め打ちでファイルが展開されてしまった…。昔のアプリだから仕方ないのかな…。
BCCForm.exe というのがリソースエディタっぽい。実行して、ファイル → 新規作成、をしてから、編集 → リソースの追加 → ダイアログ、でダイアログが表示される。ダイアログForm上で右クリックすると、追加するウィジェット種類を選べる。初期状態ではButtonが選ばれてるので、マウスでドラッグするとそのサイズでボタンが配置される。
_BCCForm and BCCSkeltonの詳細情報 : Vector ソフトを探す!
BCCFORM.EXE (2.41R1.5) をDLしてインストールしてみた。
セットアップファイルを実行したら、何故か D:\Program Files\Borland\BCCForm\ に決め打ちでファイルが展開されてしまった…。昔のアプリだから仕方ないのかな…。
BCCForm.exe というのがリソースエディタっぽい。実行して、ファイル → 新規作成、をしてから、編集 → リソースの追加 → ダイアログ、でダイアログが表示される。ダイアログForm上で右クリックすると、追加するウィジェット種類を選べる。初期状態ではButtonが選ばれてるので、マウスでドラッグするとそのサイズでボタンが配置される。
◎ Pencil Projectを試用。 :
リソースファイルにはならないけれど、見た目のレイアウトを検討できる Pencil というツールを使用してみた。3.1.0 を試用。
_Home - Pencil Project
各オブジェクトの座標値が、リソースファイルのソレとは全然違う値になってしまった。まあ、そもそも用途/目的が違うツールだろうから、仕方ないか…。
_Home - Pencil Project
各オブジェクトの座標値が、リソースファイルのソレとは全然違う値になってしまった。まあ、そもそも用途/目的が違うツールだろうから、仕方ないか…。
◎ 参考ページ。 :
_Win32 リソースエディタ - プログラミングスレまとめ in VIP
_Free Windows Resource Editors, Resource Compilers, Resource Hackers, Icon Editors (thefreecountry.com)
_Free Windows Resource Editors, Resource Compilers, Resource Hackers, Icon Editors (thefreecountry.com)
◎ 余談。 :
Python等で利用できる各種GUIライブラリ等と比較すると、座標を指定して位置を決める仕組み自体がどうにも…。「右に向かって並べるよ」「下に向かって並べるよ」「グリッド状に配置するよ」等々、自動である程度レイアウトをしてくれる Sizer の類は無いのかな…。
[ ツッコむ ]
#2 [prog][windows] LCC-win32をインストールしてみた
Windows10 x64 21H2上で、LCC-win32 というCコンパイラをインストールしてみた。LCC-win32 に、weditres.exe というリソースエディタが付属しているという話を見かけたので…。
_LCC-Win: A free compiler system for Windows Operating Systems by Jacob Navia
lccwin32.exe をDLして実行。今回は D:\Dev\lcc\ にインストールしてみた。ファイルのコピー後、ライブラリのビルドが始まる。少々待たされてインストール終了。
(LCC-win32インストールフォルダ)\bin\ にPATHを通してから、lc hoge.c でコンパイル。hoge.exe が生成された。
_フリーコンパイラたちで“へろ〜わーるど”
ちなみに、lc -v と打ったら、lcc-win32 3.8. と表示された。
_LCC-Win: A free compiler system for Windows Operating Systems by Jacob Navia
lccwin32.exe をDLして実行。今回は D:\Dev\lcc\ にインストールしてみた。ファイルのコピー後、ライブラリのビルドが始まる。少々待たされてインストール終了。
(LCC-win32インストールフォルダ)\bin\ にPATHを通してから、lc hoge.c でコンパイル。hoge.exe が生成された。
_フリーコンパイラたちで“へろ〜わーるど”
ちなみに、lc -v と打ったら、lcc-win32 3.8. と表示された。
> lc -v "D:\Dev\lcc\bin\lcc.exe" -v Logiciels/Informatique lcc-win32 version 3.8. Compilation date: Mar 29 2013 13:11:27 "D:\Dev\lcc\bin\lcclnk.exe" -v lcclnk version 1.3
◎ weditres.exeを実行してみた。 :
リソースエディタ、weditres.exe を実行してみたのだけど、何か操作する度にアプリが落ちる。とにかく落ちる。プロジェクトの新規作成をするだけで落ちる。これでは何も作業ができない…。
weditres.exe を触ってみたくて LCC-win32 を導入したので、その weditres.exe が使えないなら意味が無い。LCC-win32 は、アンインストールすることにした。
weditres.exe を触ってみたくて LCC-win32 を導入したので、その weditres.exe が使えないなら意味が無い。LCC-win32 は、アンインストールすることにした。
[ ツッコむ ]
#3 [prog][windows] MinGWでfreeglutを使ってみた
Windows10 x64 21H2 + MinGW (gcc 9.2.0) で freeglut を使ってみたい。
freeglut というのは、OpenGL を多少は簡単に使えるようにしてくれるツールキット。元々は GLUT というツールキットがあったのだけど、バグがまだあるのに開発が止まって放置状態になったそうで、その代替として登場したのが freeglut らしい。
さておき。あくまで MinGW (gcc 9.2.0) を使って作業してみる。MinGW-w64 (+ MSYS2) ではなくて、MinGW (+ MSYS)。
MinGW についてはインストール済みで、既に利用できる状態になっているものとする。
freeglut というのは、OpenGL を多少は簡単に使えるようにしてくれるツールキット。元々は GLUT というツールキットがあったのだけど、バグがまだあるのに開発が止まって放置状態になったそうで、その代替として登場したのが freeglut らしい。
さておき。あくまで MinGW (gcc 9.2.0) を使って作業してみる。MinGW-w64 (+ MSYS2) ではなくて、MinGW (+ MSYS)。
MinGW についてはインストール済みで、既に利用できる状態になっているものとする。
◎ freeglutのバイナリの入手。 :
以下のページが参考になった。
_MinGW + OpenGL - 日々量産
_freeglut Windows Development Libraries
上記の英語ページの、freeglut 3.0.0 MinGW Package と書いてあるところの少し下、Download freeglut 3.0.0 for MinGW をクリックして、freeglut-MinGW-3.0.0-1.mp.zip を入手する。
_MinGW + OpenGL - 日々量産
_freeglut Windows Development Libraries
上記の英語ページの、freeglut 3.0.0 MinGW Package と書いてあるところの少し下、Download freeglut 3.0.0 for MinGW をクリックして、freeglut-MinGW-3.0.0-1.mp.zip を入手する。
◎ MinGWの中にコピー。 :
freeglut-MinGW-3.0.0-1.mp.zip を解凍すると、bin/, include/, lib/ というフォルダがあるので、中に入ってるファイル群を、MinGWインストールフォルダ内の同名フォルダの中にコピーする。ちなみに、x64 というフォルダも入ってるけれど、それは64bit用。MinGW は 32bit なので、x64フォルダの中身は無視していい。
今回は以下のファイルをコピーした。
ちなみに、MSYS2 + MinGW-w64 を使っている場合は、パッケージとして freeglut が用意されているので、pacman を使ってインストールができるらしい。
_Base Package: mingw-w64-freeglut - MSYS2 Packages
_Package: mingw-w64-x86_64-freeglut - MSYS2 Packages
_Package: mingw-w64-i686-freeglut - MSYS2 Packages
今回は以下のファイルをコピーした。
bin/freeglut.dll include/GL/freeglut.h include/GL/freeglut_ext.h include/GL/freeglut_std.h include/GL/glut.h lib/libfreeglut.a lib/libfreeglut_static.a
ちなみに、MSYS2 + MinGW-w64 を使っている場合は、パッケージとして freeglut が用意されているので、pacman を使ってインストールができるらしい。
_Base Package: mingw-w64-freeglut - MSYS2 Packages
_Package: mingw-w64-x86_64-freeglut - MSYS2 Packages
_Package: mingw-w64-i686-freeglut - MSYS2 Packages
◎ 使ってみる。 :
使い方は以下で説明されてる。
_Using freeglut or GLUT with MinGW
以下で配布されてるサンプルを利用して、コンパイルできるか試してみる。
_TransmissionZero/Hello-GLUT: A very simple "Hello World!" GLUT application demonstrating how to write OpenGL applications in C with MinGW and MSVC.
上記のサンプルは3ファイルに分かれているけど、別に1ファイルでもいいよなと思えてきた。修正して、1ファイルにしてみた。
_hello_glut.c
コンパイルは以下。hello_glut.exe が生成される。
hello_glut.exe を実行して、赤い四角が表示されたらOK。ちなみに、ESCキーを押すとウインドウが閉じる。
これで、freeglutを使っているCソースを、MinGWでコンパイル/ビルドできる状態になった。
_Using freeglut or GLUT with MinGW
以下で配布されてるサンプルを利用して、コンパイルできるか試してみる。
_TransmissionZero/Hello-GLUT: A very simple "Hello World!" GLUT application demonstrating how to write OpenGL applications in C with MinGW and MSVC.
上記のサンプルは3ファイルに分かれているけど、別に1ファイルでもいいよなと思えてきた。修正して、1ファイルにしてみた。
_hello_glut.c
#include <stdlib.h> #include <GL/glut.h> /* Keyboard callback function */ void keyboard(unsigned char key, int x, int y) { switch (key) { /* Exit on escape key press */ case '\x1B': { exit(EXIT_SUCCESS); break; } } } /* Display callback function */ void display() { glClear(GL_COLOR_BUFFER_BIT); /* Display a red square */ glColor3f(1.0f, 0.0f, 0.0f); glBegin(GL_POLYGON); glVertex2f(-0.5f, -0.5f); glVertex2f(0.5f, -0.5f); glVertex2f(0.5f, 0.5f); glVertex2f(-0.5f, 0.5f); glEnd(); glFlush(); } /* Main method */ int main(int argc, char** argv) { glutInit(&argc, argv); /* Create a single window with a keyboard and display callback */ glutCreateWindow("GLUT Test"); glutKeyboardFunc(&keyboard); glutDisplayFunc(&display); /* Run the GLUT event loop */ glutMainLoop(); return EXIT_SUCCESS; }
コンパイルは以下。hello_glut.exe が生成される。
# スタティックリンクしない場合。 gcc hello_glut.c -o hello_glut.exe -lfreeglut -lopengl32 -lwinmm -lgdi32 -mwindows # スタティックリンクする場合。 gcc hello_glut.c -o hello_glut.exe -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -mwindows
- スタティックリンクしない場合は、実行ファイルのサイズは小さくなるけれど、動作には freeglut.dll が必要になる。
- スタティックリンクする場合は、実行ファイルが freeglut.dll の中身を含んでいるので、freeglut.dll が無くても動く。ファイルサイズは少し大きくなる。
hello_glut.exe を実行して、赤い四角が表示されたらOK。ちなみに、ESCキーを押すとウインドウが閉じる。
これで、freeglutを使っているCソースを、MinGWでコンパイル/ビルドできる状態になった。
[ ツッコむ ]
以上、1 日分です。