右クリックによるドラッグ&ドロップ時のドロップ先のパスを取得する

右クリックでファイルやフォルダをマウスでドラッグ&ドロップすると,「ここにコピー」や「ここに移動」のようなコンテキストメニューが表示されます.このメニューで「ここに〜」を選択すると,マウスでドロップしたフォルダへ該当の処理(コピー,移動,..…

_tcscpy_s (strcpy_s, wcscpy_s) の引数

深いディレクトリの削除を再帰的に行う。(ReadOnlyの場合も対応) を使おうとして気づいた事.cstring の文字列処理関数を使おうとすると CRT のセキュリティ機能 関係の警告がよく出てきます.めんどくさいから警告を抑止しようかと思ったのですが,ふと str…

GetLastError() に対応するメッセージを取得する

すぐ忘れるのでメモ.GetLastError() でエラー ID を取得して,FormatMessage() でそれに対応するメッセージを取得する関数 #include <string> #include <windows.h> #include <tchar.h> /* ------------------------------------------------------------------------- */ /* * GetError</tchar.h></windows.h></string>…

プログラミングの魔導書 Vol.2

Vol.2のテーマは「言語の進化」です。 いろいろな言語における日本の第一人者と言って差し支えない日本人プログラマの方々に、歴史や現在の状況、今後の展開について執筆していただきました。 『プログラミングの魔導書 Vol.2』予約開始! - Faith and Brave…

「作りたいものがあるからプログラミングを学ぶ」と言う言説

24:名無しさん@涙目です。(内モンゴル自治区):2011/08/24(水) 01:53:21.34 ID:hNWJ4bKQOプログラミングを学ぶ→何を作りたいか決める=間違い作りたいもの決める→プログラミング学ぶ=正解 簡単にプログラミングが学べるサイトが登場 試しに使ったけどマジ…

テキストボックスのテキストを取得

テキストボックスのテキストの取得方法のメモ. #include <iterator> #include <string> #include <vector> #include <windows.h> #include <tchar.h> std::basic_string<TCHAR> GetText(HWND handle) { int length = ::GetWindowTextLength(handle); if (length <= 0) return std::basic_string<TCHAR>(); std::vector<TCHAR> bu</tchar></tchar></tchar></tchar.h></windows.h></vector></string></iterator>…

Trivial logger for VC++

ログ出力をどうしようかと google-glog を触ってみたのですが何か上手くいかず,結局,自作で逃げてしまいました.そんな訳で簡易リファレンス代わり.ログ出力関連は Boost.Log が採択されているようなので,正式に Boost 入りしたらまた考えようと思います…

C++0x 全会一致で承認され C++11 へ

C++0xの最終国際投票はこの水曜日に終わり、さきほど投票結果が届いた… “全会一致で承認する”我々が”C++0x”と呼んできたC++の次期改正案はついに国際標準になった! ジュネーヴのISOから発行されるのはもう数ヶ月先になるだろうが、それでも今年中には発行さ…

ウィンドウプロシージャをどうラップするか?

まだメモ書き段階.Win32 API で GUI プログラミングをする場合,WndProc と呼ばれるコールバック関数に処理が集中してしまうため,注意しておかないとこの関数がカオスになります.この問題への対策として最初に思い浮かぶのが,WM_XXX 毎に関数を分けると…

RegistryKey.GetValue() を C++ でどう表現するか?

Win32 API のうち,よく使うものについてはラッパクラスを書いていこうと思っています.今は,C++ (Win32 API) か C# (.NET Framework) でコードを書くことが多いので,Win32 API のラッパクラスのインタフェースは .NET Framework に似せて定義していく事を…

Typesafe Enum イディオム

enum を使って定数を定義する場合に,それらの値を使うときは「型名::値」と言う形で記述したいなぁとよく思うのですが,普通の記述 (enum 型名 { ... };) だとこの要求を満たせません.それで,これまで enum を使うときは enum の型名にあたる部分を名前空…

Hello, Haru Free PDF Library!

C++ での PDF ライブラリだと Haru Free PDF Library の評判が良いようなので,このライブラリの使い方を少しずつメモっていこうと思います.取り合えず,最も基本的なところ(PDF ドキュメント作成からファイルへの保存まで)とテキスト処理まで. 基本形 H…

シェルによるファイルコピー

シェルによるファイルコピーで嵌ったのでメモ.Win32 API でファイルのコピーを行う方法として,CopyFile() の他にシェルを利用すると言うものがあります.今回 CopyFile() を使用せずにシェルの機能を利用した理由は,「コピーに長い時間を要する際にプログ…

コントロールのサブクラス化

しばらくブログはお休みモード.今,TreeView を持つアプリを書いているのですが,TreeView のアイテムの名前を変更しようとしたときに,Enter キーを押すと OK ボタンにフォーカスを奪われてしまい意図した動きにならない(「名前の変更」の終了ではなく,…

GUID を引数に取る Win32 API の宣言と使用方法

GUID 限定と言う訳ではないのですが.例えば,PowerEnumerate と言う関数は C では以下のような宣言になっています. DWORD WINAPI PowerEnumerate( __in_opt HKEY RootPowerKey, __in_opt const GUID *SchemeGuid, __in_opt const GUID *SubGroupOfPowerSet…

Win32 API の .NetFramework での宣言一覧

C# からでも Win32 API を使う事がたびたびあるのですが,そのときに困るのが「どう宣言すればいいんだろう」と言うものでした.そこでいろいろとググっていたのですが,pinvoke.net と言うサイトが Win32 API の .NetFramework での宣言をかなり網羅してい…

Visual C++ での開発でよくやらかす事

/MD を /MT に変更するのを忘れたまま相手に渡して「Microsoft Visual C++ 20XX 再頒布可能パッケージ がありません」と言うエラーを発生させてしまう事.開発環境では Visual C++ がインストールされているので,Visual C++ がインストールされていない環境…

UAC の動的な権限昇格に関するメモ

Windows Vista 以降,User Account Control (UAC) と言う機能が導入されましたが,これによって,注意しておかないと一部の処理が失敗すると言う事例が発生するようになりました.例えば,レジストリの操作に関しては,HKEY_LOCAL_MACHINE や HKEY_CLASSES_R…

デファクトスタンダードとなっている IDE の有無

TL 眺めていて命名について思ったコトなど。 - 偏見プログラマの語り! 辺りに関連して.名前関連(名前が長すぎる)が最も多いような気がしますが,それ以外でも,Java に対する批判への反論として最もよく見かけるものに下記のようなものがあります. だっ…

Boost.勉強会#5 名古屋の雑感

Boost.勉強会#5 名古屋に行ってきました.Boost.勉強会が「Boost があるかもしれない勉強会になりつつある」と言う噂もちらほら聞きましたが,非常に濃い内容で楽しかったです.発表された方,関係者の方々いつもお疲れ様です.以下,印象に残ったものをメモ…

プログラマが体験するべきではない50の危険なこと

Togetter - 「プログラマが体験するべき50の危険なこと」 が面白かったのでリスト化してみました(タイトルはこっちの方が適切な気がしたのでちょっと変えましたzzZ).タイトルの元ネタは プログラマが知るべき97のこと かと思ったら 子どもが体験するべき5…

Tumblr 共有ボタン

Tumblr 共有ボタン が公開されていましたので,取り合えず,基本的なリンク用の Tumblr 共有ボタンを設置するコードを以前作成した Social Media Buttons に追加しました.挙動を変えるオプションを導入するかどうかは検討中. サンプル <script type="text/javascript">

Desktop と DesktopDirectory

System.Environment.SpecialFolder 列挙体には Desktop と DesktopDirectory と言う 2 つの値が定義されています. メンバ名 説明 Desktop 物理的なファイル システム上の場所ではない論理的なデスクトップ。 DesktopDirectory デスクトップ上のファイル オ…

MAX_PATH を超えた場合の挙動

Win32 API (のファイル操作系)を叩く際に気になるものとして MAX_PATH の存在があります.例えば,MoveFile などの関数においても指定されたパスの長さが MAX_PATH (256 文字?) を超えると失敗します.ただ,この制限はパスの頭に "\\?\" と言う文字列を…

一つのソースファイルを複数のプロジェクトで共有する

Visual C# で開発していて,あるソースファイルを複数プロジェクトで共有したいと言うケースが出てきました.ただ,単にプロジェクトの「追加」→「既存の項目」から共有したいファイルを選択すると選択元のソースファイルのコピーができてしまうので,選択元…

32bit プロセスは 64bit プロセスを見つけられない

所用で「あるプロセスから別のプロセスを終了させるプログラム」を書いていました.終了させる部分の関数は以下のような感じ. #include <string> #include <vector> #include <windows.h> #include <tchar.h> #include <psapi.h> #pragma comment(lib, "psapi.lib") namespace process { std::size_t kill</psapi.h></tchar.h></windows.h></vector></string>…

達人プログラマーを目指して

ここ最近,自分の観測圏内でしばしば見られるようになった 達人プログラマーを目指して と言うブログが興味深くて,よく読ませてもらっています. 日本のSI業界こそ、専門の技術者の必要性がもっと見直されるべきではないのか? やはり、私は今後もSI業界で…

Windows 開発環境にインストールするフリーソフト

Windows の開発環境にインストールするソフトウェアについて纏めてみました.想定としては,メイン開発が C++, C# によるデスクトップアプリの開発で,サブとして Web 関係の事をちょっと遊ぶのような場合の環境です. 前書き まず,私自身は何故かたくさん…

ディレクトリ内に存在するファイル数の取得方法の比較

あるディレクトリ内のファイル(+ディレクトリ)数を取得する必要があったのですが,Boost.Filesystem と FindFirstFile とでどの程度の速度差になるのかなと思い調べてみました.まず,Boost.Filesystem 版のファイル数カウント関数. #include <string> #include <boost/filesystem.hpp> </boost/filesystem.hpp></string>…

Boost.Asio リンク集

id:faith_and_brave さんが最近 Boost.Asio 関連の記事をたくさん投稿してて,どこかにメモっておきたかったのでここにメモ.それ以外のサイトの記事も見つけたら,ここに一緒に追加していこうと思います. 公式 Boost.Asio - Boost C++ Libraries Examples …