iPhone/iPad用ドット絵エディタ「EDGE touch」

最近のエントリー

「コピー・アレンジ曲一覧」、「自主制作CDの紹介と販売」、「フリーMIDI素材」のページをアップしました。

時間が無くてなかなか更新できませんが、たまにこうしてアップしていきます^^;
リニューアル前のサイト構造では、コピー曲のダウンロードをするためには、
タイトルページ → 音楽ページ → コピー・アレンジ曲一覧ページ → 各曲の専用ページ → ダウンロード
という手順を踏まないといけなかったわけですが、なんだか鬱陶しいので、
タイトルページ → コピー・アレンジ曲一覧ページ → ダウンロード
という構造にしました。

シンプルになったでしょ?

あと、ドラゴンボールのキャラ占い
やってみたのですが、私は孫悟飯タイプだそうです。

今回のリニューアルでは、全体的に地味に、そしてフラットな感じにしました。
・・・こんなことしてる暇あったら開発しろよとか言われそう_| ̄|○ スマン、オレガワルカッタ

まだ全コンテンツが出来たわけではないので、音楽なんかがDL出来ない状況ではありますが、徐々にアップしていきま~す。

いやはや、プログラマって便利な職業ですね(何をいきなり。

今回からWindows用のソフトの日付を表示するようにしたのですが、圧縮ファイルの日付ではなくて、実行ファイルの日付にしたんです。
(メアドやHPアドレスが変わった時に説明書なんかを更新したりしているので、exeファイルの日付を使う事にしたんです。)

で、圧縮ファイルをいちいち解凍して調べる・・・この作業が面倒だったので、プログラムで、圧縮ファイルの中身の情報を検索してexeの日時を取得、HTML文章として吐き出すようなプログラムをサクッと作りました。
(他にも圧縮ファイルのファイルサイズもキロバイト単位に変換してHTML生成したりだとか。)

・・・いや実は言うとほとんど「前回のデザインからの変更プログラム」を作ってHTMLからのデータ抽出→新デザイン変換を行っていたりします(^^;

こういう自分の作業を楽にするためのプログラムは作ってて楽しいです(笑

通常、MDIやSDIのメインフレームのキャプションは、

のように、自動的に「子ウィンドウのタイトル – アプリケーション名」となっています。

たしかに楽なのですが、場合によってはキャプションを全て自分で変更したい場合があります。
(アプリケーション名だけなら、SetTitle()で変更出来ます。)

そんな場合にどうしたらよいかを紹介します。

今回は、「自動的にタイトルを変更する」フラグである(?)「FWS_ADDTOTITLE」を、ウィンドウスタイルから外す事で実現します。
PreCreateWindow関数内でウィンドウスタイルを変更します。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;

	cs.style^= FWS_ADDTOTITLE;

	return TRUE;
}

あとは、メインフレームからSetWindowTextを呼び出せば、希望通りのキャプションに変更する事が出来ます。

SetWindowText("たかぼーそふと");

MFC AppWizardを使ってMDI/SDIのプロジェクトを作成すると、
デフォルトで1つのツールバーがくっついてきます。
IEのように、ボタン1つ1つにテキストを挿入しようと思い、
ツールバー作成コードのすぐ後へ次のようなコードを書きました。

m_wndToolBar.SetButtonText(0,"新規作成");
m_wndToolBar.SetButtonText(1,"開く");

ところがどっこい、実行してみると・・・

という感じでテキストが埋もれてしまいます。

ここで詰まった方も多いはず。。。

マニュアルにも特に記載されてません。

というわけで、次のが直す方法。

CRect rect;
m_wndToolBar.GetToolBarCtrl().GetItemRect(0,rect);
m_wndToolBar.SetSizes(rect.Size(),CSize(16,15));

これを、テキスト設定後に実行すると、ちゃんと表示されるようになります(CSize(16, 15)はボタン画像のサイズです)。

C/C++言語で文字列解析をやる場合に避けては通れない部分、それが半角・全角の判定です(※ マルチバイト環境に限ります)。
とは言っても、実際には文字が1バイト長か、2バイト長かを判定します。

何バイト文字かを判定する関数は「_mbclen()」です。引数に、文字列を指定してやると、
先頭の文字が1バイトなのか2バイトなのかを返してくれます。

char *str="あいabcうえお";
printf("byte=%d\n",_mbclen((BYTE *)str));

上の例の場合、画面には2が出力されます。

ついでに、一文字ずつ表示する例も記述しておきます。

char *Str="あいabcうえお";
char *p=Str;
char tmp[3];
while(*p!='\0'){
	switch(_mbclen((BYTE*)p)){
	case 1:
		tmp[0]=*(p++);
		tmp[1]='\0';
		break;
	case 2:
		tmp[0]=*(p++);
		tmp[1]=*(p++);
		tmp[2]='\0';
		break;
	default:
		//error
		break;
	}
	printf("%s\n",tmp);
}

記事検索

コミュニティ

Banner designed by よし様
ドット絵掲示板
ドット絵掲示板
自作の「ドット絵」を投稿することができます。ドッターさん同士の交流の場としてご利用ください。
TakaboSoft Wiki
TakaboSoft Wiki
ソフトウェアに関する質問・不具合報告・要望などを書き込むことができます。