Mesoscopic Programming

タコさんプログラミング専門

Windows

子ウィンドウをポップアップウィンドウに変更するには?

やっと分かったぞ! せっかく調べたのでその方法を公開します。 ポップアップウィンドウを作るとき、 CreateWindow関数だと超簡単に親ウィンドウ(=オーナーウィンドウ)を設定できるけど、 子ウィンドウからポップアップウィンドウに変更するとなると そう…

プロセス関係の関数を作った

プロセス関係の関数を作ったので置いておきます。 マルチプロセスのプログラムをデバッグしていると、 自分以外のプロセスを殺したくなりますよね。 いちいち手作業で殺すのはめんどくさいので、 自動で殺すためのお助け関数を作りました。 これでプロセス識…

レジストリのクラス

ずっと昔ながらのプロファイルばかり使っていましたが、 意を決してレジストリを使うことにしました。 そこで、レジストリのクラスを作りました。 TRegistry.h //---------------------------------------------------------------------------- /// @file T…

ソースコード置き場へのリンク

最近なぜかしら@PAGESが繋がらなくなったので、ソース置き場をSiteMixに代えました。 ついでにVisual Web Developer 2010 Expressでサイトの構成をいろいろいじってる最中なもんで、 リンク先が頻繁に変更になってます。 記事ごとにリンクを直すのも大変なん…

しつこいぐらいにログを出すテスト

一人でプログラムを作っているときにはそれほど必要に感じませんけど、 プロジェクトチームでプログラムを作っていると、 何が原因でプログラムが動かないのか気になりますよね。 そんなとき役に立つのが、やっぱログですよね。 そこで、しつこいぐらいにロ…

VC++のフィルター設定とかめんどくさいので

04/25 補助用のツールを作りました。 05/02 UNICODE 対応にしました。 05/04 ログ機能強化とフォルダ構成の変更を行いました。 main.h //---------------------------------------------------------------------------- /// @file main.h /// @brief VCプ…

エクセルのハイパーリンクを作るやつ

04/26 フォルダの中身をエクセルのハイパーリンクにするやつを作りました。 05/02 UNICODE対応にしたので記事を更新しました。 05/04 ログ機能強化とフォルダ構成の変更を行いました。 main.h //----------------------------------------------------------…

エクセルのハイパーリンクのJPGファイルをIE以外で開くには?

エクセル用のハイパーリンク作成ツールを作っていて気がついたのですが、 何故だかハイパーリンクのJPGファイルを開こうとすると、 JPGファイルの既定のプログラムの設定を無視して、 超大っ嫌いなIEが立ち上がってしまうんですよね。 せっかくデフォルトの…

DLLとストリームのサンプルプログラム

DLLにしてみるテスト いつもよく使う関数やマクロを共通ライブラリにしようと思って、 どうせならDLLの練習を兼ねてDLLにしてみました。家で使っているのはVC++ 2010 Expressなんですが、 こいつは2012 Expressなどと違って空のソリューションが作…

DLLで文字列定数を使うときの注意点

たぶんだけど、DLLで作ったクラス内で文字列定数をインラインで使用することはできない。 ていうかたぶん、ポインタを使うことはできないのではないのか。 それはたぶん、DLLだから実際にリンクされるまでアドレスが決定しないからなんだろね。たとえば clas…

JanssonでJSONオブジェクトを並び順に表示するには

Janssonのjson_file_load()関数でJSONファイルを読み込むと、 JSONオブジェクトの中身は、ハッシュテーブル処理の関係ででたらめになりまが、 これを何とかJSONファイルの元の並び順にする方法を見つけましたので報告します。それはjansson2.5のdump.cの中に…

ウィンドウズ分割窓実験プログラム

はじめに 窓を分割する以外、なんにもしないプログラムを作りました。 窓好きの人にはお勧めです。 WinTestOne.zip CApplication.cpp CApplication.h CContainer.cpp CContainer.h CDockPane.cpp CDockPane.h CMainWnd.cpp CMainWnd.h CObject.cpp CObject.h…

ウィンドウズ学習プログラム #001:分割ウィンドウコンテナ

はじめに 仕事でC#を勉強することになり、家でもC#をやろうと思いました。 がしかし会社のPCはWindows7なのに対し、うちのはVistaなのでVisual Studio 2012 Expressが動きません。 動かないんならインストールできないようにしてくれれば良いようなものを。 …

メモ:これが安全というものなのか?_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES の功罪

私は今しがた _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES の存在を知った。 どうやっても _tcscpy_s() がエラーを起こすからだ。 何故なのだ? 最近 Visual C++ 2010 Express を始めて、前のソースが警告だらけになるので _tcscpy() などを _tcscpy_s() のよう…

Programming Tips #034:スクロールバーを動的に追加した直後に完全に描画する方法

概要 もしかすると Vista だけかも知れないが、ウィンドウスタイルのスクロールバーを動的に追加したあと、 SetWindowPos() 関数の SWP_FRAMECHANGED だけだと水平スクロールバーの描画が不完全になる。 何かスクロールつまみの左側の影が表示されないような…

ファイルビュワー作成日誌 #006:テキストビュワー

概要 テキストビュワーができました。但し、開くときの文字コードチェックが遅いのであとで改良します。 一度開いてしまえば、表示は速いですから。 1文字でも表示できない文字が入ってたらエラーではじいてるんですが、 ファイルサイズがでかいやつは、先…

Programming Tips #033:UTF-8 => Shift-JIS 変換

概要 きのうテキストビュワーのテストしてたら、文字化けするテキストファイルがあったので調べたら文字コードが UTF-8 だった。 そこで変換方法をググって見たが、なかなかそのものずばりのサイトが見つからなかった。 仕方がないから UTF-8 の仕様を調べて…

ファイルビュワー作成日誌 #005:バイナリビュワー

概要 バイナリビュワーができました。ドキュメントウィンドウの中身としてビューウィンドウがある分けですが、 ビューウィンドウの派生クラスとしてファイルビューウィンドウがあって、 ファイルビューウィンドウの派生クラスとしてバイナリビューウィンドウ…

ファイルビュワー作成日誌 #004:ファイルブラウザ

概要 ツリービューコントロールでファイルブラウザを作ろうのコーナーです。 世の中いろんなビュワーがあるけれど、ファイル開くのって大抵OSまかせじゃないですか。 別のファイル開くたんびにファイルオープンダイアログが表示されてすごい面倒じゃないで…

ファイルビュワー作成日誌 #003:ウィンドウの分割

概要 メインウィンドウからツールバーとステータスバーを引いた残りのクライアント領域を以下の3つに分割します。 Output(出力画面) TreeView(ブラウザ) Document(ビュワー) 3つのウィンドウを梱包するためのウィンドウとしてコンテナウィンドウを準…

ファイルビュワー作成日誌 #002:メニューなどの追加

本日のメニュー メニュー追加 キーボードアクセラレータ対応 ツールバー追加 ステータスバー追加 プロファイル対応 実行画面と実行ファイルとソースファイル FileView.zip main.h main.cpp App.h App.cpp Window.h Window.cpp メニューの作成 HMENU hTopMenu…

ファイルビュワー作成日誌 #001 : ウィンドウズアプリケーション

はじめに 以前ウィンドウズプログラミング講座などという仰々しいタイトルを付けたもんだから、 敷居が高くなって何も書けない状態が続いてしまったので、ブログタイトルを作成日誌に変更しました。 これで公開ソースに多少バグがあっても大目に見てもらえる…

Tips #031 Vista & DirectShow の MPEG-2 フリーズエラー対策

何とかフリーズ対策できました フィルタ情報およびピン情報から当該メディアが MPEG-2 形式であるかどうか分りました。 しかしピン情報では MP4 も MPEG-2 形式となるみたいでした。 MP4 はサードパーティのデコーダしか対応してないので問題ありません。 問…

Tips #030 DirectShow と Vista と MPEG-2

超難問、DirectShow と Vista で MPEG-2 を再生する方法 いろいろ試しましたがダメでした。 XP では問題ないのに Vista で MPEG-2 ファイルを再生しようとすると必ずフリーズします。 グーグルでいろいろ調査した結果、どうやら Vista から MPEG-2 が標準サ…

Tips #029 DirectShow を使う際の注意点の追記

sal.h が無くてもコンパイルできる方法があった。 sal.h をインクルードしてるのは dsound.h なのだが、 DirectX9 以前の dsound.h ではインクルードしていないのだ。 なので VisualStudio のオプションでインクルードディレクトリの順番を変えて、 DirectX1…

Tips #028 DirectShow を使う際の注意点

DirectShow 構築メモ 初めて DirectShow を使ってみた。 コンパイルエラーになった。 "sal.h" が無いと言われた。 手持ちの SDK を探したが無かった。 グーグルした。 ここにあった。 しかしISOイメージだった。 使用してる PC の DVD が壊れてるので DVD は…

Tips #027 WM_SETCURSOR イベントの発生タイミングに対する不満

憤りメモ マウスカーソルが移動したときにしか WM_SETCURSOR が発生しないのは貧弱すぎるのではないか。 何故ならば、キーボードの状態が変化したときにもカーソル形状を変更したいからだ。 かと言って、キーボードイベントはフォーカス所有者にしか来ないし…

Tips #026 キャレットとかな漢字変換ウィンドウについて

メモ テキストビュワーを作っているんですが、 ウィンドウズ標準のエディットコントロールでわ余りに遅すぎだし、機能的にも不便すぎるので自分で作ってまんねん。 でもまだかなり時間がかかりそうなので、とりあえず かな漢字変換ウィンドウの位置をキャレ…

Tips #025 キャレットの表示がむずい

キャレット表示処理メモ 私はいま、異なる複数の子ウィンドウにキャレットを表示させようとして、ガッツリはまってしまいました。 何故かしら1つのウィンドウは表示されるのに、もう1つのウィンドウにはキャレットが表示されないのです。 何でかな? で、…

Tips #024 ウィンドウサイズの限界値は SHRT_MAX

ご用心 まさか今どき16ビットが限界値とわ驚いたわ。 何がってウィンドウのサイズでがんす。 ドキュメントウィンドウの中身はテキストだったり、イメージだったり、3Dだったりするので、 ビューウィンドウをドキュメントウィンドウの子ウィンドウにして、 …