[C++] 327 BBS閲覧アプリの製作 その13 右寄せ用Fl_Input継承クラス

[M1 Mac, MacOS Ventura 13.3.1, clang 14.0.3]

スレッド番号とレス数をFl_Inputで左寄せ表示していたのですが、継承クラスで右寄せ用にしました。

narkiveという掲示板で17年前(2006年)にコードがアップされていました。クラスファイル化して使わせていただきます。ありがたいことです。

Fl_InputではGUI上のデータを編集できてしまうので、本当はFl_Boxで表示させたいのですが上手くできません。

あとレス表示欄も改行を入れるなどして見やすくしました。

次に手掛けるとしたら、スレッド一覧やスレッドのリロード、未読レスのカウントあたりでしょうか。

今のところ画像表示はできませんが、AIを使って内容の安全性を確認できたら面白いかもしれません。

それにしてもFLTKに関してはChatGPTは役に立たないどころか、あることないことでっち上げてマイナス面が大きいです。ネット情報、ユーザーの少なさの証左でもあり寂しくなります。

#include "InputRt.h"

InputRt::InputRt(int x, int y, int w, int h, const char *title = 0) : Fl_Input(x, y, w, h, title){};

InputRt::~InputRt(){}

void InputRt::draw(void){
	if (input_type() == FL_HIDDEN_INPUT) return;

	// Simplest to just redraw the whole box every time...
	Fl_Boxtype b = box();
	damage(FL_DAMAGE_ALL);
	draw_box(b, color());

	int xo = x()+Fl::box_dx(b);
	int yo = y()+Fl::box_dy(b);
	int wo = w()-Fl::box_dw(b);
	int ho = h()-Fl::box_dh(b);
	int wt, ht;
	char buf[128];

	// How long is the string to display?
	strncpy(buf, value(), 128);
	wt = 0; ht = 0;
	fl_measure(buf, wt, ht);

	// Make the text window be at the right hand end
	wt = wt + 5;
	xo = xo + wo - wt;
	wo = wt;

	// Update the text window
	Fl_Input_::drawtext(xo, yo, wo, ho);
}
#include <string.h>
#include <FL/Fl.H>
#include <FL/fl_draw.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>

class InputRt : public Fl_Input{
	public:
		InputRt(int x, int y, int w, int h, const char *title);
		~InputRt();
		
	protected:
		void draw(void);

	private:
};

参考サイト