Assertion Failed! -19ページ目

[C++]オブジェクト指向プログラミング

オブジェクト指向プログラミングとは


プログラムを「オブジェクト」の集合体として作成することである。


オブジェクト指向プログラミングは、オブジェクトを再利用することで、

効率的にプログラムを作成することが可能となる。


オブジェクト指向実現のための大きな機能として「クラス」の概念がある。

これらについてはおいおい。勉強中。


対して、従来のCでのプログラミングとして構造化プログラミングというものがある。

こちらは、プログラムが「順次」「選択」「繰り返し」により作られる。


オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―/平澤 章
¥2,520
Amazon.co.jp

[日記]バーロー

バーロー「真実はいつもひとつ」


をモットーに生きてきた元理論系物理屋にオブジェクト指向という

抽象的な考えは入りにくいんじゃまいかと思い始めた年明け一発目でした。


書籍学習の確認として書籍以上のことを問われても答えようがないじゃないか。


ツーわけで、とっつきやすい↓に浮気します。


ホント12月から勉強しかしてない。

徹底攻略 MCA Platform問題集[M10-201]対応 Windows Server2008編 (ITプロ/ITエンジニアのための徹底攻略) (ITプロ/ITエンジニアのための徹底攻略)/NECラーニング株式会社 池上 貴史
¥2,940
Amazon.co.jp

[BMP]ビットマップ色の反転

ラスタオペレーションによる色の反転



Assertion Failed!-ビットマップ色の反転


■ラスタとは

ドットの集合のこと。

点の集合で構成されるイメージのことをラスタイメージと呼ぶ。


色の反転は簡単で、ラスタオペレーションを変更するだけでよい。



今回は、「反転」を表示するためのチェックボックスを追加して以下のように

「ビットマップの回転」 のコードを変更したのみ。



private:

  // 新規追加

  CButton m_chkInvert; // 反転チェックボックス(コントロール変数)


void CRotateBMPDlg::OnPaint()

{

  ・・・中略

  if(m_chkInvert.GetCheck())

  {

    pDC->BitBlt(0,0,m_dstWidth,m_dstHeight,&dcMem,0,0,NOTSRCCOPY);

  }

  else

  {

    pDC->BitBlt(0,0,m_dstWidth,m_dstHeight,&dcMem,0,0,SRCCOPY);

  }

  ・・・中略

}


// チェックボックスが押されたときのイベントハンドラ

void CRotateBMPDlg::OnBnClickedInvert()
{

  // TODO: ここにコントロール通知ハンドラ コードを追加します。
  InvalidateRect(NULL);
}



■ラスタオペレーションの種類

SRCCOPY 転送元から転送先へそのままコピー
SRCAND 転送元と転送先の色情報を AND演算によって合成する
SRCPAINT 転送元と転送先の色情報を OR演算によって合成する
SRCINVERT 転送元と転送先の色情報を XOR演算によって合成する
NOTSRCCOPY 転送元の色を NOT演算によって反転して、転送先にコピーする
NOTSRCERASE 転送元と転送先の色情報を、 OR演算によって合成し、更にその結果を NOT演算で反転する
BLACKNESS 転送先を黒く塗りつぶす
WHITENESS 転送先を白く塗りつぶす

Programming Place Plus より引用させていただきました。

[本]オブジェクト指向開発講座

憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門 (DDJ Selection)/Tucker
¥3,360
Amazon.co.jp


オブジェクト指向ピヨピヨな自分に対して、会社の先輩から読んでみるように

言われて借りていた本。


一通り読んだけど、ピヨピヨゆえ難しい。


というか、概念自体は特に問題はないけれども、それを如何に実装に

反映させるか、クラスの切り分け方は、その判断基準は・・・と、

ある程度の経験を要するのも事実。


研修中にある程度オブジェクト指向について理解しないと本気でやばいので

結構焦ってます。


[目次]

- 第1部 オブジェクト指向ソフトウェア開発とは -

第1章 クラスとはなにか

第2章 メンバ関数とは

第3章 私たち開発者にとってのメリットとは


- 第2部 静的分析 -

第4章 なにがクラスになるのか、そしてならないのか

第5章 知られざる最重要概念

第6章 プログラムを「作らない」ためのテクニック

第7章 さらに深くシステムを洞察するために

第8章 複数の面をもつクラスの本質に迫る


- 第3部 動的分析 -

第9章 オブジェクトの変化を管理するための方法

第10章 有限状態マシンの本質を追求するためには

第11章 オブジェクトの連携の把握


- 第4部 設計・実装 -

第12章 実際にプログラムを動かすために

第13章 オブジェクト指向に不可欠な実装技術

第14章 動くプログラムを作る

[用語]イベントハンドラ

イベントハンドラについて


詳しくは、WIN32APIを学習するべきだが、簡単に。

というか、WIN32APIを知らないでMFCを使いこなすのは無理と思う。


特にイベントとかデバイスコンテキスト とか。


で、イベントハンドラ。


ウィンドウの作成や、ボタン押下、描画更新などのイベント(メッセージ)は、

ウィンドウズから送られてくる。


これをアプリケーションのウィンドウプロシージャで受け取り、イベントに

応じた処理を記述することで、各々の動作を実現する。


例)

①ボタンが押された

②ウィンドウズからボタンが押されたイベントが送られてくる(WM_~~)

③②のイベントをアプリケーションのウィンドウプロシージャで受け取る

④受け取ったイベントに応じた処理を行う。


これら処理を、MFCでは内部で行ってくれるので、開発者側は

特に意識することなく開発が可能となっている。

(とは言っても、ある程度のイベントの種類やら処理の流れの概要の理解は当然要)


VC6.0ではクラスウィザード、VS2005や2008ではプロパティの「メッセージ」などから

イベントハンドラ関数が作成できる。


指定したイベントを受け取ったとき、作成したイベントハンドラ関数に処理が移る。


概ねこんな感じ。


詳しく知りたい場合は、やはりWIN32APIの簡単な開発を行ってみるべし。


気が向いたら簡単な部分については書いてみたいと思う。


猫でもわかるWindowsプログラミング 第3版 (猫でもわかるプログラミングシリーズ)/粂井 康孝
¥2,940
Amazon.co.jp