Archive for the ‘自作ソフト’ Category

ソフトウェアの互換性について。

月曜日, 7月 5th, 2010

ども。Mimura です。

えと、もうそろそろ間近に迫ってきた、来る7月13日。
何があるでしょうか。

Windows ユーザなら気づいてもらいたいところではありますが、
一部のWindows ユーザにとって X Day であることには間違いありません。

1.Windows 2000
2.Windows XP の Service Pack 3 以前のバージョン

この上記2点の製品のサポートが切れます。

セキュリティの観点から見れば、全く持って自然な流れではありますが、
本サイトの利用者傾向を見る限り、まだまだ Windows 2000 や、
すでにサポートが切れている Windows 98, Me からのアクセスが見受けられます。

Windows 98 や Me については、すでにサポートが切れていますので、
利用中の方につきましては、
インターネットから切断するか、コンピュータを買い換えてください。

よく聞かれることなんですが、

「私はインターネットだけだから、わざわざ新しいものを使わなくてもいいの」

という、言葉は大間違いですのでご注意ください。

ウィルスに感染する可能性が高いだけではなく、
コンピュータウィルスによって、攻撃の加害者になり得る。
ということを頭に入れておいてください。

もし、買い換えるお金がないけど、インターネットだけ見られるようにしてほしい。
というのであれば、無料の Linux という OS を利用する方法があります。

Vine Linux Home Page
こちらの Vine Linux でしたら 日本語環境もばっちりで軽量ですので、
買い換える予算がない方はこちらに乗り換えた方がずっと安全です。

 

また、Windows Update / Microsoft Update 等について、
重たいから、邪魔だから。という理由でインストールをキャンセルさせている設定の方についても、全く同様のことが言えます。

どうしてもインストールしたくない。というのなら、全く同様です。インターネットから今すぐコンピュータを切り離してください。危険です。

 

それと、
よく「過去のOSをずっとサポートしていけばいいじゃない」という発言を耳にしますが、無理な話というものです。

これを書くと、ブーイングが来そうで怖いんですが、
Windows Vista は決して重くない。と。

そりゃ、一気にハードウェア要求が高まったものですから、古いPCに入れたり、
新OS発表後1年以内の、よくある「ぎりぎり対応PC」で触れば、そりゃ重いです。めちゃ。
ですが、ハードウェア要求を満たした物で実際に使ってみると、よく出来たOSなんです。
プログラム書いててもとってもいい子だったりするんです。 いいよいいよ。
Windows 7 はRC, Beta と触りましたが、製品版はまだ触ってません。
Vista カーネルベースなので、きっととってもいい子なんだと思います。

ああ。Linux と比べられたら、あれですけどね!!

 

さて。本題。

OSのサポートが切れるということは危険だということを書きましたが、
同様に、様々なソフトウェアのサポートが切れる、ということでもあります。

現在、本ウェブサイトでは Windows 98 や Me に対しても互換性を確保したものを公開しておりますが、

次回リリース版より、
原則として Windows 98 および Me と言った、「9x 系」として挙げられるOSとの互換性を一切とらない方針で参りたいと思います。

過去のバージョンのOSをどうしても利用しなくちゃいけない場合につきましては、
対応している過去のリリースをお使いいただければと思います。
なお、その場合のサポートは一切しない方向で参ります。

また、今後 Windows 2000 のサポートも打ち切る可能性がございます。
予めご了承ください。

 

余談ですが、「重いから新しいOSでしか動かないんでしょ」 ということじゃないです。
新しいOSの新しい機能を使って、安全にプログラムを動作させられるようにするために、
古いOSでは動かなくなってしまう。ということになります。

 

Link :

情報処理推進機構:プレス発表:記事:サポートが終了するWindowsを利用しているシステム管理者への注意喚起 (IPA)

Windows デスクトップ製品のライフサイクル (Microsoft)

Windows 2000-XP SP2を使い続けるのは危険、間もなくサポート期間終了 -INTERNET Watch

開発日誌。 ぺいんとそふと。

水曜日, 4月 14th, 2010

image

自身の画力も日に日に上がってきていることを実感している今日この頃です。
Mimura です。

 

なんか電車の中で、VAIOのノートPC広げて、
コードかりかり書いたかと思ったら、上のような「えかぷれ」というソフトが立ち上がったPCを持った、
青年(?)を見かけたら、管理人です。はい。

 

大学も始まって、制作できるのが サークルと電車の中だけとなりました。
家に帰ってくると風呂に飛び込んで、布団に飛び込んで1日が終わってしまうので、
開発できず。

 

・・STEP_M の更新もしたいんですが、ビルド量が圧倒的に違うので、
ビルド時間がかかる&バッテリー食うのでなかなか電車内では開発できません。

そんな感じで、ペイントソフトの開発をずーっとやってます。

 

とりあえず、現状は上を見れば一発かと。
キャンバスをズームさせたときにキャンバスが飛び出さないようにしなくちゃいけませんし、
レイヤーが現状のところで最悪な状態なので、オーナードロー使ったり、
普通にウィンドウクラス適当に登録させて新規でウィンドウ生成して・・。みたいなことを考えてます。

 

とりあえず、現状のペンですが、
「Solid Pen」 : アンチエイリアスなし。筆幅は1の固定。 筆圧は透過度として評価される。
「Fix Pen」 : Solid Pen にアンチエイリアスかけたやつ。
「Eraser.」 : 消しゴム 既定のペン幅 * 筆圧[0.0 – 1.0] = 実際の消しゴムのペン幅
「Paint Brush.」 : ペイントブラシ。 既定のペン幅 * 筆圧 = ブラシ幅 もちろんアンチエイリアス。

 

こんな所です。 キャンバスの切り替えリストの部分を今書いていて、
そこが書けたら 元に戻す / やり直し / コピー / 切り取り の実装を考えています。

キャンバスやレイヤーなどは、
内部で管理している部分と、画面表示している部分が別々でメッセージを送り合ってやっているので、
その辺の実装は後回しでも。と考えていたりします。

 

リリースはいつ頃になるんだろう。うん。不明。
ただ、一応 Windows 98 の入っているマシン( CPU : 500Mhz MEM:16MB ) でも動作テストをするので、
リリース時は古いPCがよみがえると思います。きっと。

 

・・ただ、大学でこういうCG系の授業がわんさかあるのに、
「興味ない。」 と割り切って受講してません。
プログラム系一本でやろうかという素敵仕様で進んでます。
だって。単位制限に引っかかるんだもん。 ・・問題にぶつかったら友人に尋ねよう。そうしよう。

 

(そーだんしよお そーしよお) [花いちもんめの一幕]

Vista 以降で CFileDialog において SetTemplate が使えない場合の代替方法

金曜日, 3月 26th, 2010

Mimura です。
先ほど、STEP_M 1.053 をリリースしました。

 

今回のネックは CFileDialog において Vista 以降の新しいファイルダイアログでは、
SetTemplate が使用できないことでした。

 

そこで、私もこの情報を見つけるまでにかなり時間がかかりましたので、
メモとして、また同じ悩みを抱えている人に有用な物となればいいかなと思います。

 

(あらかじめ断っておきますと、あんまりMFC を使いたくない人です。私。)

 

 

SetTemplate を使用する場合、大体が以下のようなコードとなっていると思います。

CMyFileDialog::CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
    SetTemplate(0, IDD_CUSTOM_FILE_OPEN);
}

(STEP_M ソースコード MyFileDialog.cpp より)

XP,2000 ではこのコードで通りますが、

Vista, 7 では「サポートされていない機能を実行しようとしました。」
というエラーダイアログが表示されてしまいます。

 

 

そこで考えたくなるのが、Vista 以降のOSで SetTemplate を使う方法ですが、
現時点ではあきらめた方がいいと思います。

 

Visual C++ Team Blog  Vista-style File Dialogs with MFC
Microsoft 社の Visual C++ Team のブログでも、

the new Vista dialogs no longer supports hwnd template customization, your CFileDialog object will throw CNotSupportedException if SetTemplate is called on it. 

適当訳:[英語苦手なので、あまりにも訳が違っていたら指摘お願いします]
Vista の新しいダイアログは、テンプレートによるカスタマイズには対応しません。SetTemplate を CFileDialog で呼び出したら、CNotSupportedException をスローするよー。

というようなことが書かれています。

 

 

それではどうするかですが、
Vista 以降のダイアログにはそれの為の弄る方法が用意されています。

 

CMyFileDialog::CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{

    IFileDialogCustomize* custom;
    custom = this->GetIFileDialogCustomize();
    if(custom != NULL){
            // チェックボックスを追加する場合は以下のように。
            custom->AddCheckButton(IDC_CH_FILE_ADDPEND,L"ボタンのついか。",false);
        }
        custom->Release();
    }
}

 

抜粋して書きますと上記のようになります。

this->GetIFileDialogCustomize();

で IFileDialogCustomize のインスタンスを取得し、
custom->Add****

によって、ボタンやエディットボックス、ラベルやらを追加していきます。

なお、IFileDialogCustomize 系は、WINVER が 0×0600 以上でないと利用できません。
StdAfx.h 等で設定している方はご注意下さい。

 

設置した内容を取得する場合、上記の例のサンプルで行きますと、

 

IFileDialogCustomize* custom;
custom = this->GetIFileDialogCustomize();
custom->GetCheckButtonState(IDC_CH_FILE_ADDPEND,&checkstate);
custom->Release();

 

上記にありますように、
custom->Get****

によって、値を取得します。

 

どのような命令があるか、また、オブジェクトが使えるかということにつきましては、

IFileDialogCustomize Interface (Windows)
上記リンクを参照して下さい。

 

最後に、XP,2000 上でも、Vista 以降のWindows でも、両方で動くようにするソースですが、

CMyFileDialog::CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
    IFileDialogCustomize* custom;
    custom = NULL;
    TRY {
        // Legacy OS [ - Windows XP]
        SetTemplate(0,IDC_CH_FILE_ADDPEND);
    } CATCH (CNotSupportedException,e){
        // New OS [ Windows Vista - ]
        custom = this->GetIFileDialogCustomize();
        if(custom != NULL){
            custom->AddCheckButton(IDC_CH_FILE_ADDPEND,L"ちぇっく。",false);
        }
        custom->Release();
    }
    END_CATCH
}

(STEP_M ソースコード MyFileDialog.cpp より)

というような、上記のコードはいかがでしょうか。
MFC 上では try – catch 構文は使えないらしく、TRY – CATCH – END_CATCH を使うようです。

そこで、まずは SetTemplate を動かし、
非対応エラー(CNotSupportedException) が発生してしまったら、
Vista 以降の IFileDialogCustomize を用いたカスタマイズを行う。という形です。

 

 

開発のご参考になりましたら幸いです。

お絵かきソフト作成中だったりします。

水曜日, 2月 10th, 2010

無題

 

ども。Mimura です。

 

答辞の文章つくったり、ICTスクールの成果物作ってみたり、
二秒ぐらい逆出校メンバーに混じって掃除手伝ってみたり、

何かと忙しい日々ですが、息抜きということで、新しいソフト作ってます。

 

本当はペンの選択の部分を画像使ってやってみたり、ツールバーセットしてみたり、
元に戻すとかの履歴機能を使えるようにしたり、それ以前にレイヤーを搭載してみたりいろいろとやりたいのですが、まだ出来ていないのが実情です。はい。すいません。

 

今のところ、内部構造としてはレイヤーやキャンバスの概念が搭載されていて、
複数の画像を同時編集したり、大量のレイヤーを使用したりも出来ます。

出来る用にはなっているのですが、インターフェイスの製作が圧倒的に間に合ってません。どうしよう。

 

 

筆圧の入力に対応して、ペンタブレット接続環境では筆圧が反映されます。

そして、このソフト、絵の周りの色選択ツールやペン選択ツールなどのそれぞれのウィンドウが、
それぞれ独立して動くような仕掛けになっていて、
キャンバスやレイヤーが格納されているメイン部分(カーネル)には内部定義してあるメッセージを飛ばしてやりとりする構造となっています。
また、頻繁にアクセスするオブジェクトに関してはエクスポートされている関数を呼び出すことでアクセスできるようになっています。

 

そしてそして、ペンについても同様の構造になっていて、それぞれが独立した物体になってます。

 

なんでそんな構造にしたのかというと、将来的にプラグイン方式を付けたいと思ったため。
そして、絵がへたっぴで、授業の「美術」と聞いただけで身の毛がよだつほどの私ですから、
なるべくそういう部分を、慣れている人に作ってもらえたらいいなぁ。なんて思っていたり思わなかったり。

・・。でもそういう人って大抵、自分でソフト書いちゃいますよね。むぅ。

 

 

ある程度プログラムが固まったら、SDK付きで公開してみようかなぁ。なんてことを考えています。
心優しい方がいましたら、プラグイン作って、すばらしいペンやツールを作ってもらえると有難いです。
プラグインの製作はあんちゅことないですし、デフォルトのツールもあんちゅことないです。

 

 

まぁー。そんな感じで。

とりあえず、現時点では描画時に CPU を 100% 50%取られるので、 (手持ちの Eee PC 901-X にて)
(製作用マシン [C2Q Q6600] では 22%ほど持って行く。)

最適化しないとなぁ。と考えています。 DIB で自分で数式演算書いた方が早いのかなぁ。
それとも DDB で BitBlt とかガリガリやった方がいいのかなぁ。 むぅ。

助言お待ちしています。

 

 

PIC9715.tmp

 

02/10編集。

あ。何寝ぼけてたんだろう。 Eee-PC 901-X は デュアルコアですから、100% 取ることはないです。
(シングルタスクのプログラムのため)

それでも50% 近くは取っていきます。 シングルコアの100%みたいなところですね。

 

隣で眠ってるシングルコアのマシンで動かすと、他のプログラムの処理分が多少ありますが、
合計値としては100%になります。 何れにせよ、構造を見直さないとまずいですよね。

Visual Studio 履歴削除ボタンを作ってみた。

月曜日, 1月 11th, 2010

ども。Mimura です。

 

既にインストールしてみた方もいらっしゃるかと思いますが、
Visual Studio 2008 に 履歴削除ボタンを追加するアドオンを作成して公開しました。

DL: http://mimumimu.net/software/#VSHR

 

インストールしますと、
image

Visual Studio の 標準ツールバーの最後にこのボタンが一つ増えます。

 

使い方は至って簡単。ボタンを押すだけ。それだけで履歴が吹っ飛びます。

 

何か作業中のファイルがある場合は、再起動するかどうかを尋ねられますが、
「はい」を押して進めた場合、自動的に上書き保存されて、再起動後に再び開くようになっています。

 

 

とりあえず、なんでこんなものを作ったのかといいますと、
ずばり、スタートページの最近使ったプロジェクト欄を綺麗にしたかったから。 です。

 

作ってる最中の物の続きをやるのであればいいのですが、
今作ってる物を完全に忘れて、別の物を作りたい。ってなった時に履歴をクリアしたくなるんです。

それでこのボタンを作りました。はい。

 

Visual Studio 2010 では履歴削除ボタンがデフォルトでついているということで、
このアドインは全く持って不要になるわけですが、
Visual Studio 2008 を使っている方で、同じ気持ちになる方は一度お試し頂ければと思います。