mieki256's diary



2022/09/08(木) [n年前の日記]

#1 [prog][windows] リソースエディタを試用

Windows10 x64 21H2上で動作するリソースエディタを少し試用してみた。

C/C++ でWindows用プログラムを作る際、リソースファイル(.rc)というファイルを用意して、 そういったアレコレを含めることができるのだけど。ダイアログ上のボタンその他の表示位置を修正する作業が ―― リソースファイルをテキストエディタで開いて手打ちで調整していく作業が面倒だなと…。当てずっぽうで座標値を書いてみて、ビルドして、確認して、また値を変更するのは…シンドイ…。

そのあたり、GUIで編集できるツールが無いものかと。

リソーエディタを試用。 :

ググってみたら、リソーエディタなるツールに遭遇したので試用してみた。

_リソーエディタ(RisohEditor)
_リソーエディタの詳細情報 : Vector ソフトを探す!

ss01_risoheditor.png

RisohEditor-5.7.2-portable.zip をDL・解凍。RisohEditorPortable.exe を実行。

手元の .rc を読み込ませようとするとエラーが出てしまう…。付属のサンプルは開けるから、こちらの .rc が何かおかしいのだろうか…。MinGW の windres に渡してもエラーが出ない .rc なのだけどな…。

何も開いてない状態からダイアログを追加して、といった感じで操作したら動いてくれた。一旦そんな感じで各ウィジェットの位置のアタリをつけて、といった使い方なら問題は無さそう。少なくとも、テキストエディタで.rcを書き換えていくより全然マシな気がする。

Resource Hackerを試用。 :

Resource Hacker 5.1.8 を試用してみた。

_Resource Hacker

ss02_resourcehacker.png

このツールを使っても、ある程度調整作業ができるようだなと…。
  • 何のファイルも開かない状態で、Action → Add using Script Template、を選ぶと、DIALOG の雛形がエディタ画面に挿入される。
  • ツールバー上の Compile Script (緑色の再生ボタン)をクリックするか、F5キーを叩けば、どんな見た目になるか表示される。
  • 表示されたダイアログ上で右クリックして Insert Control を選べば、ウィジェットを追加していける。

そのままリソースファイルとして利用できないかもしれないけれど、各ウィジェットの表示位置やサイズを確認する作業程度なら使えそう。

XN Resource Editorを試用。 :

XN Resource Editor というリソースエディタもあるらしいので試用してみた。日本語版もあるらしい。ありがたや。

_このサイトにある Delphi 支援アプリケーションは? [Delphi Programming]
_XN Resource Editor :職人的フリーソフトの使い方

ss03_xnresourceeditor.png

リソース → リソースを追加、で Dialog を追加後、右側のウィジェット一覧から Static Text や Button などを追加していけばいい。

プロパティ入力欄で Enterキーを押しても反映されないけれど、TABキーでフォーカスを変えていけば反映される模様。

ただ、配置したウィジェットの表示位置をマウスドラッグで変更したりはできないっぽい。ウェジットのサイズなら、マウスドラッグで変更できるようだけど…。

少し触ってるうちに、サイズの計算がなんだかおかしいことに気づいた。マウスドラッグ時に設定される値と、プロパティ一覧上の入力値が大きくずれている。どちらが正しいのか…。

オリジナルの英語版をDL・インストールしてみたけれど、そちらは何か操作する度にアプリが落ちてしまった。

_Releases - stefansundin/xn_resource_editor

BCCFormを試用。 :

Borland C++向けのツールもあるらしい。

_BCCForm and BCCSkeltonの詳細情報 : Vector ソフトを探す!

ss04_bccform.png

BCCFORM.EXE (2.41R1.5) をDLしてインストールしてみた。

セットアップファイルを実行したら、何故か D:\Program Files\Borland\BCCForm\ に決め打ちでファイルが展開されてしまった…。昔のアプリだから仕方ないのかな…。

BCCForm.exe というのがリソースエディタっぽい。実行して、ファイル → 新規作成、をしてから、編集 → リソースの追加 → ダイアログ、でダイアログが表示される。ダイアログForm上で右クリックすると、追加するウィジェット種類を選べる。初期状態ではButtonが選ばれてるので、マウスでドラッグするとそのサイズでボタンが配置される。

Pencil Projectを試用。 :

リソースファイルにはならないけれど、見た目のレイアウトを検討できる Pencil というツールを使用してみた。3.1.0 を試用。

_Home - Pencil Project

ss05_pencil.png

各オブジェクトの座標値が、リソースファイルのソレとは全然違う値になってしまった。まあ、そもそも用途/目的が違うツールだろうから、仕方ないか…。

参考ページ。 :

余談。 :

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. と表示された。
> 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 は、アンインストールすることにした。

#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のバイナリの入手。 :

以下のページが参考になった。

_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フォルダの中身は無視していい。

今回は以下のファイルをコピーした。
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
#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キーを押すとウインドウが閉じる。

ss_hello_glut.png

これで、freeglutを使っているCソースを、MinGWでコンパイル/ビルドできる状態になった。

以上、1 日分です。

過去ログ表示

Prev - 2022/09 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project