動画検索とダウンロードがワンクリック! YouTubeとニコニコ動画に特化したツールバーをダウンロードして動画を楽しもう!!

スクリーンセーバー

以前作ったことがあるWindows用のスクリーンセーバーですが、ちょっと作ってみたくなったものがあったので、久しぶりにTryしてみることにしました。

が、進化したがために問題にも遭遇しちゃいます。メモとして残しておきます。

スクリーンセーバーを作るにはいろいろな方法がありますが、基本的な作り方はscrnsave.hをincludeして、システムにWinMainなどは面倒を見てもらって、ScreenSaverProcプロシージャで処理するのが簡単だと思います。

特に難しいことはないのですが…。そう簡単にはいかないわけです。

scrnsave.hをインクルードして、必要な関数を実装してコンパイルすると、以下のようなエラーが出ることがあります。なるほど、scrnsave.libをリンクしてないからだと…。

error LNK2019: 未解決の外部シンボル _DefScreenSaverProc@16 が関数 _ScreenSaverProcW@16 で参照されました。

scrnsave.libをリンクしても同じエラーが発生。あれ?ということで考えてみると、UNICODEコンパイルであることが影響していたわけです。UNICODEの場合は、scrnsavw.libをリンクする必要があります。

コンパイルも成功したので動作させてみると、ランタイムエラーが発生しました。これはWindows Vista SDKをインストールした影響だと思いますが、scrnsavw.libをリンクすると、Vistaで追加されたAPIを参照するようになっていて、その関数がないWindows XPではエラーが発生します。

仕方がないので、Visual Studio 6.0からscrnsavw.libをコピーして使うことにしました。

どのバージョンから問題が発生しているかわかりませんが、コンパイルして生成されるファイルをDependencyでチェックして、VistaにしかないAPIが静的リンクしていないかチェックした方がいいかと思います。

UNICODEもWindows Vistaも以前はなかった環境だったので、その影響を受けるとは予想できなかったです。

WTL8.1.9127

最近、食べ物、競馬、YouTubeの記事しか書いていないような…。何者か忘れられそうなので、少し前にリリースされたWTLについて書いてみます。

ここ最近は、ATL+WTLでしか開発していませんが、その理由が64ビット対応だったんですよね。MFCってどうなるのか全然見えてこなかったし、Class Wizardには未練がありましたが、Visual Studio 2003の頃に見切りを付けて、環境を移行したわけです。

ただ、WTLのバージョンアップが止まるのとは逆に、MFCがバージョンアップしたり、Visual C++ 2008 Feature PackではRibbonまでサポートされています。

好みはあると思いますが、どっちにもメリットがあって、悩むところです。生成されるコードにも違いがありますが、開発体制も気にしているところです。WTLがMSからオープンソースへ、MFCはMSが開発を続行ということで、この先WTLは新技術に対応していけるのか。Windows 7ではAPIにも大きな拡張が行われていますが、WTLでサポートされるかは不明ですね。APIレベルで記述すればいいわけですけど。

話をWTLに戻すと、個人的に嬉しいのは、VC++9.0(VisualStudio2008)用のAppWizardの追加とvsprintf_x()でwarning C4996が抑止されたことです。9.0用のAppWizardは.jsを変更すればできるし、警告メッセージ4996はソースを修正すればいいのでそんなに嬉しくなかったり…。

大きな変更は、DWM関連のクラスが追加されたことでしょうか。これでAeroも使いやすくなると思います。詳しくは下記ページをご参照ください。

http://sourceforge.net/projects/wtl/

ビール飲みながら調子に乗って、この記事を書いていますが、今何時よ?

4:18か。って、もう寝ないと…。

LINQ to XML

データの書式として、あらゆるところでXMLが利用されているのを実感します。データ表現、APIの応答、アプリの設定情報など。

ただ、XMLはいろんなデータが表現できるわけですが、パースするのが面倒なんですよね。パーサー使って、ごりごりなわけですけど。

しかし、状況は変わってきました。それがLINQです。Silverlight2でもLINQがサポートされているので、ちょっとお勉強中というわけです。

以前にもこのブログに書いたかことがあるとは思いますが、私が尊敬する川俣さんの記事がわかりやすいので、いつも@ITで記事を読んでいます。無料で川俣さんの記事が読めるなんで嬉しい限りです。

人に説明するための文章を書くには、まず自分が十分に理解していること、何を伝えれば理解してもれるかわかっていることが大切だと思っています。どんなことに対しても言えますが、「十分に理解している」というのがすごく難しいことです。

実際にコードも書いていて、普通に使っているだけのレベルでは、多くの人に対する説明はできないでしょう。

で、今回のお勉強のために読んだ川俣さんの記事ですが、多少過激な表現になっています。ちょっと面白いので、皆さんにもご紹介します。

C#で実感する「LINQ to XML」の素晴らしさ - @IT

HTML5&API入門

Internet Explorer Plus

Miesque Internet Services

Windows Writer Plugin

   

Sleipnir Darksky Plugin

ブログランキング・にほんブログ村へ