Hobby::C++の最近のブログ記事

1  2  3  4  5  6  7  8  9  10

出力バッファ

| コメント(0) | トラックバック(0)

デバッグ情報をprintfで書き出そうとしてもバッファが喰っちゃって、挙句の果てにどこかで例外が出て肝心の出力ができてないなんて場合がある。

printfが少なければ、printf呼出し後にfflushしてやればいいんだけど、多いと面倒。

そんなとき、

#define printf(...) ( fprintf(stdout, __VA_ARGS__), fflush(stdout) )

をヘッダなんかに書いておけば、何とかなったりする。

printfの戻り値をチェックしている場合には簡単にやっちゃダメなのと、__VA_ARGS__マクロに対応しているコンパイラだけってのには注意。

過信

| コメント(0) | トラックバック(0)

VS2010でC/C++プロジェクトを開いて、プロジェクトオプションでC/C++のコード分析を有効化するわけよ。
#ただし、上位版じゃないと無理ね。

この分析が結構有効なんですよ。
何かとお世話になってるわけですけどね。

けどね、実はチェックの法則というか、分析で弾かれないコードってのがあることに気付いちゃったのですよね。

TODOコメント

| コメント(0) | トラックバック(0)

VisualStudioにはコメントタスク(TODO:)とかの収集をしてくれる機能があるわけだが、これが、C/C++だとデフォで働かないっぽい。

C/C++用テキストエディタでコメント収集をチェックする必要がある。

しかも、カレントのファイルにしか働かない点にも要チェック。

おまけに、2重・3重に収集する荒業によって、数件のコメントが数倍カウントされるお茶目っぷり。

ただ、これ使うとかなり便利なので、チェックは入れておきたい。

C言語並列

| コメント(0) | トラックバック(0)

VC++2010なら、parallel_forなんかを使えばいい。
さもなくば、自分でスレッド作ってもいい。

でも、VC++2005(VC++8)以降ではOpenMPをサポートしてるらしいので、使ってみた。

ただし、Standard以下では標準ではOpenMPサポートされていないので、何らかの対策が必要。

とはいえ、SDKとかインストールすればよいだけのことなのだが。

今回は、VS2008Proをインストールして、それに含まれるOpenMPライブラリを使ってみることにした。

設定は簡単。
標準のインクルードディレクトリ設定にVC++2008(VC++9)のincludeディレクトリを追加して、プロジェクトにライブラリを設定し、あとは、コンパイラコマンドラインに/openmpを追加すればOK。

あとは、Open MP用にコードを書いて、ビルドすれば、適当にマルチスレッド化してくれる。

先はなげぇ、長過ぎる。

.xllからトレイアイコンを登録したあと、マウスボタンアップイベントを取得するまではできたけど、メニューを表示するのは結構難しい。

いや、表示だけなら、メニューリソースをひっぱってくればいいんだけど、更にメニューのイベントを取得できないと意味無いじゃん。
その意味あることってーのを実現しようと・・・どうすりゃいいんだって話。

メッセージループで処理するのは分かってるけど、トレイアイコン表示の為だけにそれごとライブラリ化しちゃったからなぁ・・・
また設計見直ししなきゃならんかなぁ。
それとも、メニュー用に別途ウィンドウハンドル用意した方がいいのかしら。

どうすっかな・・・

ウォッチできませぬ

| コメント(0) | トラックバック(0)

理由は分からない。

デバッグビルドでデバッグ実行し、ブレークポイントを設定して、そのときのクラスメンバの値を見るとかは、普通の手段だと思うのだが、なぜかはわからないけれど、あるメンバ変数の中身が???で見ることができない。

問題のメンバ変数はDLLVERSIONINFO型なのだが、なぜ???になってしまうのか、さっぱりだ。

同じクラスの他のメンバ変数は、ちゃんと値を見ることできてるのに・・・

やればできる

| コメント(0) | トラックバック(0)

DLLだろうがなんだろうが、ちゃんとしたコードを書けば、ちゃんと動く。

とりあえず、.xllからタスクトレイアイコン(通知アイコン)の登録に成功した。
メニューやバルーンはまだ無い。

バルーンに関してはレジストリ依存で非表示にできちゃうらしいから、非対応。
メニューは表示させたいところ。
#クリックでウィンドウ開いてもいいけど、メニューだけでもON/OFF選択くらいは可能だからなぁ。

こういうの、やっぱりMFC使ったほうが楽できるんだろうけど。
#今のところ、非MFC。

書いとかないと、忘れる。

本当はパケット内容をごにょごにょいじりまくるアプリケーションを考えるべきとは思うのだが、それでなにを実現するかについては全く思い浮かばない・・・というか、実現したいことはあるんだけどさ、使い方がね・・・

XPだとトレイアイコンの識別にID(数値)管理しかなく、メモにした方法では、ExcelのWndProcをフックしても、何かのコントロールとID重複する危険性が無いとは言えずということで悩んでいた。

よくあるパターン。

Excelアドインのセキュリティ問題は大体解決(残すはxll本体をどうするか<でかい!)したんで、まぁいい。

で、通知アイコンを実装しようと思ったら、C/C++(非MFC)の場合、今まで適当に済ませてきたことが一気に襲ってくるわけ。

1  2  3  4  5  6  7  8  9  10

サイトカウンタ

Total: 205,116 Hits, (Recent24Hours: 29 Hits)
~ Since 2010/01 ~

埋め込みツイッター

取得失敗;;
Now: 2017/12/15 0:19:32 JST

このアーカイブについて

このページには、過去に書かれたブログ記事のうちHobby::C++カテゴリに属しているものが含まれています。

前のカテゴリはHobby::.NETです。

次のカテゴリはHobby::Excelです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2017年12月

 日   月   火   水   木   金   土 
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

埋め込みQRコード