C/C++」タグアーカイブ

新ANSI C言語辞典

昨日まで強烈な鼻風邪で死んでいました。
つーことでプログラミングはしていない、のでネタは無い。
六万円の元をとらなきゃいけないというのに…

Microsoft、学生に開発ツールを無償提供 – ITmedia エンタープライズ

大学生の皆さんには大バーゲンだなぁ。
多分専門学生に ASP.NET の教育をさせるもくろみなんでしょうね。
でもソッチ方面はもはやスタンダードになった LAMP を勉強したほうが得かと…

そんな手には乗らないぞ!と C/C++ ネイティブを作るのも又一行。
しかし大半の人は挫折するのが目に見えているわけで…
これから初めても専門用語を覚えた頃には社会人かも…

という方々の為に一冊紹介

この本はプログラミング系サイトでよく見かけると思います。
実は自分はプログラミングを始めた頃になんとなく買ったわけですが、
あまりの濃い内容に圧倒されしばらく眠っていました。

それからしばらくして Pascal から C++ へと環境移行した。
その時改めてパラパラとめくって衝撃を受けてしまった。
知りたかった事が一つ残らず書いてある、その先まで書いてある!
ライブラリ関数の実装例までが見事に書いてある、恐るべし。

それからしばらくの間単行本がわりに持ち歩いていたくらいです。

何より嬉しいのは 18.8 x 12.8 x 3 cm という小さなサイズ。
そしてほとんどが文字だけという徹底的に解説を詰め込んだ内容。
これなら鞄に難なく入る。

いつも思うのだがプログラミングの本は何故絵本みたいなのばっかなの?
画像なんかいらないし老眼を前提としか思えない文字のサイズは読みにくい。
とにかく神の無駄遣いだし、ページをまたがる内容は本として失格だし。

というか「持ち歩きたいんだよ俺は!」と声を大にして言いたい。
本を意図的に厚くするためにそうしているとしか思えない。

脱線はこのくらいにして。
本当にこの本は持っておいて損をしない内容です。
多分初心者の方々は私と同様に当分眠ってしまうかもしれないほど濃いです。

最後に、オジサンも Expression Studio が無償で欲しいよぉ!

Flash 再生

VS2008 の使い勝手を調べるのに試しに Flash 再生をば。
新規でまず普通に Win32プロジェクトを適当な名前で作り stdafx.h に…

なんじゃこの targetver.h っつーのは、分離する必要があるのか?
ココを弄くるとリビルドしなきゃいけないのでややこしくなるだけだと思うが。
まあそれはよくて。

#pragma comment(lib,”Atl.lib”)
// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include <atlbase.h>
#import <C:\\Windows\\System32\\Macromed\\Flash\\Flash9d.ocx> named_guids raw_interfaces_only

を追加、ocx の名前は私はこうなっていたけどどうなんだろう?

と書いていたトコで Ctrl+C が急にまったく使えなくなってしまい困った。
再起動しようとすると更新アイコンが、こんなにコッソリ更新すんなボケ!
VS2008 では使えなくなったかと思ったヤン、まあそれはよくて。

ソース先頭にお約束を記述
using namespace ShockwaveFlashObjects;

ShockwaveFlash オブジェクトのポインタを用意しておく。
IShockwaveFlash *pSwf;

んでもって下記のコードを追加してビルド、完成。
swf ファイルは自分で用意してパス指定してね。

atl01

だけどコレだけじゃ atl が使えないので
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.ATL
に atl90.dll があるので生成された exe と同じフォルダに放り込む。
それだけで swf は再生可能。

atl02

コードギャーは気にしないでくだされ、手元にコレしか無かっただけです。

flv の再生は読み込んだ swf から ActionScript とかで読み込んで再生させる。
というわけで Flash 作成ツールが必要なのね、、、、、

WS_EX_COMPOSITED は使えない

あけおめ(一応)

あー!なんじゃこの拡張スタイルはっつーの。
Wバッファリングを自動でやってくれるスタイルなんだが。
Aero で使ってみたら問題が無かったので当ててみたら…

クラシック表示
VMR の動画がまったく見えない。
他の部分が余計にチラツク

XP
アルファブレンドを掛けた GDI+ 表示がまったく見えない。
VMR の動画もやっぱりまったく見えない。
その見えない動画の上ではメニューさえも消える…

そういえば自力でやったら似たようになったのでヤメたんだっけ…
とにかく GDI+ や DirectX を使う人は絶対にこのスタイルを含めないで。

とにかくこの環境全部のつじつまを合わせると方法が限定されて困るわな。

???の人に簡単な解説をすると。

XP までの画面表示は1つの画面領域を全部のアプリが共有していました。
だからウインドを移動すると下のウインドが真っ白になっているのが見える。
ソレ毎に WM_PAINT が飛んできて、せっせと再描写が行われます。

しかしビデオカードが大半を処理してくれるので気にならなかった。
GetDC 関数で得られる HDC は実は完全に見せかけです。

Vista のクラシック表示は同じ方法で描写されます。
しかし GDI 処理が全部ソフトウエア処理に変更になりました。
そのため描写処理は目を覆いたくなるくらい遅くなってしまいました。

Vista を重いと言う人の大半はコレを言っているような…
クラシック表示のほうが軽いって考える思いこみって怖いね。

Aero 環境は Desktop Window Manager (DWM) が一括管理します。
アプリケーションごとに画面領域を本当に確保しておき合成して描写します。
おかげで背景のウインドさえスケスケに見えるなんてワザが可能。

と、聞いただけでは「重くなりそう…」と感じるのですが
その仕組みのおかげで上に被さっているウインドが移動しただけで
WM_PAINT が飛んできて再描写なんて事は無くなってしまいました。
トータルで描写処理が軽くなっています、頭がいい人が考えたのね。

Aero で表示がおかしくなるアプリは WM_PAINT の処理がおかしい。
○isual Studio とか ○onoha とか。

おまけに Vista ではオーバーレイが廃止されている。
だから動画のスクリーンショットも普通に可能になってもーた。
つーことで Cinema も VMR というワケワカなモンに移行したわけで。

とにかく。
描写処理が Aero、クラシック表示、XP で全部違うのよ。
従来の方法で描写しているかぎりは何も問題がないわけですが、
DirectX や GDI+ でアルファブレンドを使うとこうなってしまう。
両方使っている Cinema は…さて、色々試して勉強だ。

正月からこんなネタ…

IDE と秀丸の併用

[Think IT] 第2回:秀丸エディタでより便利なプログラミング (3/3)

ぶっちゃけ前2ページの TIPs は IDE 内蔵エディタを使えばいい。
…まあようするに私は基本的に IDE のみでプログラミングをする人なので。
このページの「他のソフトウェアの外部エディタとして登録する」だわ。

おぉ!こんなコトができるんだ。
今までわざわざ Explorer で開いていたのは無駄だった。

まあインデントの調整にキーボードマクロを利用とか変数名全置換とか、、、、、
その程度でしか併用はやらないんだけど便利な機能だわ。

早速同じように登録したよ、つーか VS の設定は解りにくいよ…

名前空間が便利

ところで私はプログラミングで普通にクラスを作ります。

オブジェクト指向がどうのというカッチョイイ理由ではない。
ぶっちゃけ「インテリシンク」を利用するためである。

ドット(ポインタなら -> )と打てば選択窓が出てくる。
そのまま打ち続ければインクリメンタルサーチで目的の関数が見つかる。
選択された所で Enter すればスペルミスすることなく挿入できます。

何故この機能を使いたいかというと、、、、、
C++ は大文字小文字を区別するのでよく間違えるからです、、、、、
それにデルヒャァでプログラミングを覚えた人間はコレが普通なので、、、、、

それだけの理由で自作関数を適当なクラスにまとめたりとかしていた。
…のですが、関数を使いたいだけの理由で都度実体を作成では非効率だ。
オーバーヘッドとかの理由もあるけど書くのが面倒!

何かもっと効率的な方法は無いかなぁ?

あっ namespace があった、と昨日気がついた。

この方法なら名前空間名を書くだけでイケルじゃないの。
なんて無駄なことをしていたのだろう、もうお馬鹿さんだなぁ俺。

名前空間ってなんか using namespace するのが当然みたくなっている。
関数名の衝突を防ぐ目的で考えられたモンなんだからもっと利用すべ。

以上今日の小ネタ。