SQLの窓

2009年11月01日

VC9.0でビルドしています:マウスに絵を描かせるサンプルです


マウスに正方形を描かせる



凝っても仕方ないので簡単に済ませました。
そもそも、簡単に出来すぎて拍子抜けです。

複雑な絵を描かせようとすると、データ作る労力がハンパ無いので、
イザとい時の為のサンプルとしてソースコードと正方形を描画するバイナリを用意しました。

使い方は、デスクトップのショートカットのショートカットキーから使います。
というか、これ以外では使えません。それと、デスクトップには一つのキーしか登録できない
ので、既に登録済だと入力できないです。前のを削除してもシステムのキャッシュの都合で
すぐには登録できないので注意して下さい。


同様にデスクトップのショートカットキーを使ったツール
どこでも Google 翻訳パッケージ



posted by at 2009-11-01 19:51 | C++ | このブログの読者になる | 更新情報をチェックする

2009年03月20日

ImageMagickでC++を使ってファイル一括処理

今時、C++ でなにかしようなんて人は居ないでしょうし、選択肢としてコストパフォーマンス
悪いですが、それでも飛び道具的なツール作る時( 例えばマウスをクリックした事にするとか )
は必要になります。というか、根が好きなので。

ですが、さすがに C++ では、ファイルの一覧は自分で取ってこないといけないようで、
久しぶりにそのへんのコードを書いて、string オブジェクトは、オブジェクトだから、まあ
こんななもんだろ・・・とまあそれなりに楽しかったです。 しかし、以下のサンプルはローカルのファイルシステムですが、image.read では
ファイルパスのかわりに URL が書けます。そういうところは良く覚えておきたい
ところです
それと、試して無いのでなんとも言えないですが、マニュアルの記述( 英文 )から
推測すると、GIF アニメーションのように複数画像のファイルの場合、filename[n]
という記述で、中の一つを直接取ってこれそうです。たぶんですけど。  
// *********************************************************
// 一括処理はやはり一覧が必要
// *********************************************************

#include <windows.h>
#include <Magick++.h>
#include <string>
#include <iostream>

using namespace std;
using namespace Magick;

int main( int argc, char argv[] )
{

	HANDLE hFile;
	BOOL bRet;
	WIN32_FIND_DATA wfd;
	Image image;
	string work;

	hFile = FindFirstFile( "..\\png\\*.png", &wfd );
	bRet = true;
	while( hFile != INVALID_HANDLE_VALUE && bRet == (BOOL)true ) {

		try { 
			work = "..\\png\\";
			work += wfd.cFileName;
			image.read( work ); 
	
			image.crop( Geometry( 380, 540, 50, 50 ) ); 
	
			image.write( wfd.cFileName ); 
		} 
		catch( Exception &error_ ) { 
			printf( "エラーが発生しました : %s : ", error_.what() );
		}

		bRet = FindNextFile( hFile, &wfd );

	}
	if ( !bRet ) {
		FindClose( hFile );
	}

	return 1;
}


posted by at 2009-03-20 22:39 | C++ | このブログの読者になる | 更新情報をチェックする

2009年03月19日

ImageMagickでC++アプリケーション作成(crop)

Image image;

try { 
	image.read( "in.png" ); 

	// Crop the image to specified size (width, height, xOffset, yOffset)
	image.crop( Geometry( 380, 540, 50, 50 ) ); 

	// Write the image to a file 
	image.write( "out.png" ); 
} 
catch( Exception &error_ ) { 
	printf( "エラーが発生しました : %s : ", error_.what() );
}


クラスを変数のように定義して、メソッド実行していくタイプです。
まだぜんぜん読んで無いので、作ったサンプル見る限りクラスですが、
コンストラクタとか考え無いでいいので、扱いやすいものです。

解放処理も、ブロックを出る時に自動的にするはずです。
( そう作るのが通常です )

ちょっと不思議なのが、convert.exe で動かなかった PNG の crop
がちゃんと動きます。但し、ドキュメントにある gif の挙動と違います。
+repage しないと回りが残るはずなのですが、残らなかったです > PNG
gif はちゃんと残りました。ただ、この挙動は IN のフォーマットでは無く
OUT のフォーマットに依存してました。

よくわから無いですねぇ・・・

詳細はこちら


posted by at 2009-03-19 23:59 | C++ | このブログの読者になる | 更新情報をチェックする

DLL版をインストールしなおして、バッチファイルでPNGファイルの一括トリミング

ImageMagick だけで、ブログ1つ作れそうなボリュームなので、
カテゴリを作りました。まずは、
前回より 情報が増えたので報告です。

1) exe バージョンではなく dll バージョンをインストールすると、CとPerlのライブラリが増える
2) PNG ファイルの一括変換をバッチファイルだけでできる
3) 出力ファイル名のフォーマットに C言語の printf の%02d とかが使える。

など。


詳細はこちらです。



※ 次は、VC++ から使って見る予定です。

posted by at 2009-03-19 13:57 | C++ | このブログの読者になる | 更新情報をチェックする

2009年03月18日

デスクトップ上全て有効なスポイトアプリケーション(version2)


Sp 

マウス移動中の色をコードと実際の色で表示するようにして
一応使えるものにしました。ソースコードもできるだけ簡単な
方法で実現しているつもりです。

これは、Visual Studio は使ってません。
2005 Express は入ってますが、エディタと XN Resource Editor だけで
作成しています。( SDK はダウンロードしてインストールしましたが )

ソースコードはこちら



posted by at 2009-03-18 23:56 | C++ | このブログの読者になる | 更新情報をチェックする

2008年11月25日

【VC++】COMの作成の基本

Visual Studio 2008 はまだ使って無いので解りませんが、
MIcrosoft は COM を作ってほしく無いような対応状況です。
Express なんかは全くアウトですし・・・( かなりいろいろやってみたんですが )

その経緯で、バッチビルドパッケージも作ったのですが、需要無いでしょう(笑)

(↓にあるのは、プロジェクトのパッケージですけどね。)





続きを読む
posted by at 2008-11-25 06:14 | C++ | このブログの読者になる | 更新情報をチェックする

2008年11月13日

【VC++】ある程度経験者なら扱える『誰でも作成できるWin32ダイアログアプリ』

Visual Studio 2005 の Express では、SDK を別途ダウンロードして
インストールする必要がありますが、通常環境があれば、Visual Studio を
動かさなくともダイアログアプリケーションを作成できます。

ダイアログリソースの作成は、GUI でフリーで作成できる XNResourceEditor 3.0.0.1 
を使用します( こちらを参照 )




続きを読む
posted by at 2008-11-13 03:19 | C++ | このブログの読者になる | 更新情報をチェックする

2008年11月06日

【VC++】CからCOMを呼べば、Shell.ApplicationとWscript.Shellでスタンバイ状態にできる

C から COM を読んで、直接 API を利用するより、
処理が安定していて信頼性のあるスクリプト用ライブラリを利用します。

特に、WSH 用のライブラリはいろいろ使い勝手が多いですし、
FileSystemObject や Excel を使う事ができるので、
目的によっては数倍の開発コストパフォーマンスを発揮できます。


続きを読む
posted by at 2008-11-06 00:00 | C++ | このブログの読者になる | 更新情報をチェックする

2008年10月30日

【VC++】イザという時の為の、COM的_bstr_tなショートカットとインターネットショートカットの作成

Microsoft のドキュメントに、インターネットショートカットの作成方法が
記述されていますし、ショートカットのアイコンの変更方法もあります。

しかし、非常に簡単にしか書かれておらず、ショートカット作成に関しては「これと同じようにしなさい」と言わんばかりではあります。

確かに、インターネットショートカットの作成方法が理解できるのであれば、
ショートカット作成は難しくありませんが、Shell Interfaces や COM Interfaces の
英文記述のマニュアルの場所を知っている必要があります。

で、サンプルをまとめてみました。


続きを読む
posted by at 2008-10-30 00:00 | C++ | このブログの読者になる | 更新情報をチェックする

2008年10月27日

【VC++】WindowsShellプログラミング:デスクトップの情報をHTMLに書き出す

VBScript バージョンとほぼ同じ情報を取得します
※ 属性は面倒なので処理しませんでしたが、info tip の取得方法は解りませんでした

とにかく、Shell を C++ で処理すると面倒でやってられないです。
ですが、デスクトップに関してだけ言えばメリットがあるので整理しました。

通常、COM 経由で使用すると簡単なので Framework では 
COM をインポートして利用します。
( C++ からも、COM でアクセスしたほうが簡単かもしれません。)


posted by at 2008-10-27 00:00 | C++ | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX