プログラム - みる会図書館


検索対象: API散歩道 上
134件見つかりました。

1. API散歩道 上

インスタンス 不正なデータは拒否するような仕組みになっているんだ」 ☆パステル「なんか , すごいですね。まるで Windows とプログラマが対決しているみた ▽ホラムズ「対決しているわけじゃないさ。むしろプログラマへのサービスと考えても いいんじゃないかな。 SDK なんかに入っているデバッグバージョンのカーネ ルを入れておけば , Wind 。 ws が見つけた不正なデータを全部報告させること ができる。そうすれば , デバッグもやりやすくなるわけさ」 ☆パステル「 Windows って , ずいぶんプログラマに親切なんですね。ただ難しいだけか と思っていたけど・・ マホラムズ「苦あれば楽ありというところかな。 Windows はただ難しいだけではないよ。 難しさにばかり目がいっていると , Windows プログラミングの面白さに気づ かないみたいだね」 ☆パステル「そうみたいですねえ」 / , ・インスタンス 考え方なんだよ。余裕があったらオプジェクト指向の本にも目を通しておく ▽ホラムズ「そうだよ。 Windows を理解するのに , オプジェクト指向は避けて通れない 「またオプジェクト指向なんですか ? 」 マホラムズ「インスタンスというのも , オプジェクト指向的な用語のひとつなんだ」 「はい ! 」 マホラムズ「では , インスタンスについて説明しよう」 ☆ / ヾステル ☆パステル ☆ / ヾステル ☆ノヾステル ☆ / ヾステ丿レ といいだろうね」 「はい ! 」 マホラムズ「さて , インスタンスというのは , る言葉だ」 さっき話した設計図と実体のうち個々の 実体のことを意味する言葉なんだ。それも実体のうちの 1 個のことを意味す 「じゃあ , インスタンスって 1 個のウインドウのことですね。すでにウインド ウが作られていたら , RegisterClass しないってことですか ? 」 マホラムズ「うーん , そうじゃないんだ。この場合のインスタンスはウインドウではな くて , プログラムのことなんだ」 「プログラム ? 」 ホラムズ「つまりね , Windows ではプログラムもオプジェクト指向的に考えるんだ」 ☆パステル「意味がよくわかりません。プログラムなら作ったことありますけど」 マホラムズ「つまりね , ディスクに記録されたプログラムを設計図 , メモリに読み込ま

2. API散歩道 上

第 5 章 MDI の作り方 0 ワタソン「あ , そうか。なーるほど」 分けるという方法もあるよ」 を気にするなら , 無理に c + + を使う必要もないじゃないか。適材適所で使い マホラムズ「効率が落ちても , プログラムが完成できないよりはマシだ。それに , 効率 ワタソン「でもさあ , 効率が落ちるんだろう ? 」 ざましいから , それで吸収できると思うよ」 することに意味が出てくるわけだ。多少効率が落ちても , ハードの進歩はめ マホラムズ「そういうときにプログラムの複雑さを減らして , プログラマの負担を軽減 か想像もできないよ」 ワタソン「確かにそうだよなあ。数 MB の EXE ファイルなんて , どうやって作ったの はすでに限界にきているんだ。プログラムが複雑すぎるんだよ」 続々と作られているけど , c のようなクラシックスタイルの言語で書く方法 マホラムズ「そんなことはないよ。 Windows の世界では , 巨大なアプリケーションが ■ワタソン「でも , それで遅くなったらしようがないじゃないか」 やすくすることにあるんだ。つまり , プログラマの負担の軽減かな」 マホラムズ「 c + + のメリットというのはね , プログラムをよりわかりやすく , より書き ■ワタソン「え ? うそ。じゃあ , どうしてそんなもの , みんな使うわけ ? 」 マホラムズ「 c + + にすると , メモリはよけいに必要になるし , 速度も落ちるよ」 ラムがよりコンパクトになるとか , 速くなるとか , そういうことがあるのか ワタソン「だけど , わざわざ c + + を勉強してどんなメリットがあるんだい ? プログ マホラムズ「うん。そのほうがいいな」 いいのかな」 ワタソン「なあ , ホラムズ。最近 c + + って流行しているけど , これは勉強したほうが コラム OC + + で組む Windows プログラミング

3. API散歩道 上

登場人物紹介第 0 登場人物紹介 ■ワタソン 本編の主人公。地道で堅実な性格のもち主。趣味は , Windows 用のプログラムを組むこと。なぜか , ホラムズのような変人と 親交がある。ワタソンとはホラムズにつけられたハンドル名。 マホラムズ 奇人で変人でイギリスかぶれの変な男。フリー プログラマだが , なぜか Windows に詳しい。 ホラムズというハンドル名を自分で自分につけ る変なセンスのもち主。 ☆ノヾステル ワタソンの大学の後輩。女の子なのに , なぜか Windows のプログラムに興味がある。パステ ルというハンドル名から連想されるような美少 女ではない。

4. API散歩道 上

Windows のこ法度。 を呼び出す手段なんだ」 ☆パステル「 OS って MS - DOS ですか ? 」 ■ワタソン「おいおい , Windows だよ。これから Windows をやろうってときなんだか ら , 決まっているだろう」 ☆パステル「だけど , Windows って OS なんですか ? 」 ■ワタソン「君ねえ , 誰かに変な知恵を吹き込まれたんだろう。 Windows なんてしよせ んは DOS に毛が生えただけだとか」 ☆パステル「ええ。同好会の神様といわれている大学院の先輩から , そう聞いてますけ ど」 ■ワタソン「あの馬鹿。なにが神様なものか。僕が部長のとき , いちばん飲み込みの悪 い新入生だったヤツだよ。自分ではなにもプログラムを組めないくせに , 知 ったかぶりばっかりする癖は直ってないな」 ☆パステル「違うんですか ? 」 ■ワタソン「プログラマにとっては大違いだよ。 Windows には数百種類の API があって , これを利用してプログラムを組むんだ。これは DOS にはないものだよ。ま あ , DOS にも INT 21 H みたいなものはあるけどね」 ☆パステル「は一い , 質問です。じゃあ DOS のプログラミングの知識って , Windows で は役に立たないんですか ? 」 ■ワタソン「全部役に立たないとはいわないけど。あらためて Window s の API や Windows のプログラムの組み方を勉強しないとならないね」 ☆パステル「じゃあ , プログラミング勉強会のリーダーが c 言語さえマスターしておけ ば , 将来 Windows の時代になってもずっと安心っていうのは・・ 0 ワタソン「 c 言語の文法の知識は無駄にならないけれど , 入出力やプログラムの構造 については結構無駄になる部分もあるなあ。それに Windows の世界では , 主 な C 言語製品はみんな C + + 言語に拡張されてきているから , c 旨だけでい 「コロロ つまでも安心というわけにはいかないだろうなあ」 ☆パステル「そうだったんですか。早めにワタソン先輩のところに質問しにきてよかっ たです。危うく無駄な勉強に付き合うところでした」 OWindows のごラ叝 ■ワタソン「ともかく , だ。 c 言語のライプラリ関数みたいなものが , Windows にもい つばい用意されているんだ。これが API というャツで , Windows ではなにを するにもこれを使う。ハードウェアに直接アクセスしちゃいけないんだ」 ☆パステル「ハードウェアにアクセスって ? 」

5. API散歩道 上

Windows の神秘「コールバック」 ド QI. ■ワタソン「うーん , なるほど。そういわれてみればそうだな」 マホラムズ「それに , DLL の中だと MakeProcInstance は使う必要がないんだ」 ■ワタソン「もう少し調べてくるよ」 またワタソン氏はどこかに消えてしまいました。ダイアログ関数やコールバック関数を 使うときには , 必ず MakePr 。 clnstance という API をいっしょに使わなければならないと 思っている人がいるかもしれませんが , 必ずしもそうではありません。 DLL の中で使用 するときには , ダイアログ関数でもコールバック関数でも MakeProcInstance は必要あり ません。なぜこんな差が出てくるのでしようか。 ワタソン氏が帰ってきたようです。その解説はあとですることにしましよう。 ■ワタソン「今度こそわかったぞ。 export だ ! export している関数だろう。コールバッ ク関数とは exp 。 rt した関数のことだ。そうだろう ? 違うとはいわせないぞ」 ▽ホラムズ「いい線をいっているが , 残念ながら違うね。それも DLL では全然違う扱い になる。 API なんかはすべて DLL から exp 。 rt された関数だけど , これは別に コールバック関数ではないね」 ーワタソン「うーん , 降参だよ。教えてくれ。コールバック関数ってなんなんだ ? 」 マホラムズ「いいだろう。まず , 自分で書いたプログラムから , 別のプログラムを呼び 出すと考えてみたまえ。 FAR 関数呼び出しかなにかでね」 ■ワタソン「上級プログラマの話をしてないか ? 」 マホラムズ「じゃあ , もっと簡単な例から考えてみよう。こう考えてくれ。君が作った プログラムに関数が 2 つあるとしよう。で , そのひとつの関数からもう片一 方の関数を呼び出す , と」 1 た っ わ

6. API散歩道 上

第まえかき 0 まえがき ☆ / ヾステル ☆ノヾステ丿レ ☆パステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステ丿レ ☆パステル ☆ / ヾステル ☆ノヾステル ☆パステル 「ワタソン先輩 , こんにちは」 ■ワタソン「やあ , 君か。元気にしているかい ? 」 「また Wind 。 ws のプログラムを作ってるんですけど」 ■ワタソン「またかい ? 若いっていうのはいいね」 「でも , Windows って難しいんです。わからないことばかりなんですよ」 第ワタソン「なるほど。そういう君には , この本がびったりだよ」 「わあ。なんですか ? この本は」 ■ワタソン「僕とホラムズの名コンビが , WindowsAPI の謎を次々に解いていくという 「でも , API ってなんですか ? 」 味がある好奇心旺盛な Windows ユーザーにも楽しめる内容になっているん ■ワタソン「 Wind 。 ws のプログラマだけじゃないぞ。人なみ以上に Wind 。 ws の内部に興 「面白そうですね」 内容さ」 方法だよ。これを知ることは , Windows の仕組みを知ることにもなるぞ」 ラム・インタフェースの略で , プログラムから Windows の機能を呼び出す ーワタソン「そんなことも知らないのか。 A 円というのは , アプリケーション・プログ ■ワタソン「えっ ? そ , それがどうかしたのかい ? 」 解くっていってましたけど」 「さっき , この本ではワタソン先輩とホラムズさんの二人で Windows の謎を ■ワタソン「なんだい ? 」 「ところでワタソン先輩」 ■ワタソン「ぜひ , この本を読むといいよ」 「すごいんですね」 「先輩って , やつばり・・ ■ワタソン「えーと , えーと。ともかくいっしょに読んでみよう ! 」 「ワタソン先輩が解いた謎っていくつ入っているんですか ? 」

7. API散歩道 上

一第 1 章 API って何だろう ? マホラムズ「いや , なにもいわないよ」 ■ワタソン「え ? なにかいったかい ? 」 ▽ホラムズ「こりゃ , ワタソン君も , すっかり Windows にはまったな」 ■ワタソン「ふむふむ・・・・・・」 マホラムズ「そうだなあ。これなんかどうだい ? 値段も手頃だし・・・・・・」 用のプログラムが開発できる言語製品で , なにかお勧めのものはあるかい ? 」 ( 注 : Win/V は , c. F. c 。 mputing が販売している製品の名称です ) 第ワタソン「なるほど。そういうメリットもあるんだね」 わけだ」 Win/V なら , もともと英語モードで動くから , うまくいく可能性が出てくる 環境だとテキスト画面の仕様が違うから , 動作しない可能性があるわけだ。 くる。例えば , 英語版のテキスト画面を利用するデバッガなんかは , 日本語 マホラムズ「日本語 Wind 。 ws では使えない開発ツールなんかが利用できる可能性が出て ■ワタソン「じゃ , もうひとつは ? 」 行儀よく書けばほとんど問題は出ない」 ただ , これはほとんどの場合必要ないよ。 Win Ⅳの互換度は結構高いから。 マホラムズ「 2 つあると思うな。ひとつは自分のプログラムを Win Ⅳ対応にする必要性。 ■ワタソン「 Win / v があると , プログラマにはどんな影響があるんだろうね」 日本語版のアプリケーションが動くという面白いソフトだ」 マホラムズ「ああ。英語版の Wind 。 ws にインストールすると , WIFE フォントや IME や , 0 ワタソン「 Win Ⅳって知っているかい ? 」 コラム OWin/V こうしてワタソンは , Windows の世界にずつほりとはまっていくのであった。

8. API散歩道 上

A 円スシ ~ ル・ Windo 。殺人事件砂ン . ツ この作品はフィクションであり登場するすべての名前や事件は架空のものです。 おわり そういうわけじゃ・・ あ , そうじゃないぞ。決して , ウイルスを退治した男ということで有名になろうとか , そのための勉強もしている。 次に Windows 対応のウイルスが出てきたら , 僕がワクチンを作ってやるということだ。 僕は心に決めたことがひとつある。 ということを意識させられた事件であった。 しかし , Windows のプログラムを扱うということは , 社会的な影響力をもった行為だ 結局 , なにがどうなっているのか , わからないことがたくさん残ったできごとだった。 あとの調べで , すぐに国外に出たことがわかった。それで , その件も空振りに終わった。 った。だからワクチンの出番もなかった。ホラムズの家の近くにいた不審な外人は , その 事件は , このまま小さくしばんでいった。結局 , 問題のウイルスは世の中に出てこなか それつきり , ホラムズはなにもいわなかった。 「そうさ。こいつは , 退治されることを望みながら作られたウイルスなんだよ」 「ワクチンが作りやすい ? 」 スコードを見つめた。「実に美しく , ワクチンが作りやすいように配慮されている」 「しかし , このウイルスだけは違っている」ホラムズは , 目を細めながら画面上のソー 「なるほど・・ るなら , そいつは無能なプログラマに決まっている」 ムを作り , 自分の名前を入れて配布すればいいんだ。それもできずにウイルスを作るとす うなウイルス騒ぎを起こすわけがない。ちゃんと尊敬を受けられるような立派なプログラ げで迷惑が広がるケースも多い。そもそも本当に能力があるなら , 無署名のユカイ犯のよ

9. API散歩道 上

設計図と実体 こんなにインスウが多いんです マホラムズ「そのとおりだよ」 ・ CreateWindow のパラメータ ■ワタソン「誰でも気がつくよ」 ▽ホラムズ「ほう , いいところに気がついたね」 か ? 」 ☆パステル「じゃあ , どうして CreateWindow って , HWND CreateWindow(LPCSTR lpszClassName, LPCSTR lpszWindowName, DWORD dwStyIe, int x, int y, int nWidth, int nHeight, HWND hwndParent, HMENU hmenu, HINSTANCE hinst, lpszClassName IpszWindowName dwStyle nWidth nHeight hwndParent hmenu h i n s t lpvParam void FAR*lpvPararm) 登録されたクラス名のアドレス ウインドウテキストのアドレス ウインドウスタイル ウインドウの水平座標の位置 ウインドウの垂直座標の位置 ウインドウの幅 ウインドウの高さ 親ウインドウのハンドル メニューのハンドルまたは子ウインドウの ID アプリケーションインスタンスのハンドル ウインドウ作成データのアドレス マホラムズ「ちなみにね , 引数はヒキスウと読むことが多いんだよ」 ■ワタソン「あ , 僕のときと態度が全然違うぞ」 ホラムズ「 CreateWindow の引数については , 設計図と実体の違いを考えればわかる よ。そうだなあ , 例えば自動車を考えてみよう。自動車の設計図に , どの道 をどう走るか , そこまで書いてあると思うかい ? 」 ☆パステル「そんなの , ドライバーの運転次第でどこにいくかわからないから , 書けな いと思いますけど」 マホラムズ「そうだね。同じように , ウインドウもユーザーがどこに移動させるかわか らないわけだ。プログラマが , プログラムで移動させることもあるしね」 ☆パステル「確かにそうですね」 ▽ホラムズ「こうも考えてみてほしい。もしも , 設計図にウインドウを表示する位置ま で書かれていたら , どうなるだろう。同じ設計図に従ってウインドウを複数 開いても , 同じ場所に表示されてしまって , 並べて表示させることができな いね」

10. API散歩道 上

第 3 章 誰か呼んだかコールバック マホラムズ「だから意味のない MakeProcInstance はやめようね」 ■ワタソン「わかった。よーし。これで全部解決だね」 マホラムズ「そうかな。どうしてウインドウ関数は MakeProcInstance しなくていいんだ ろうね」 この理由は簡単です。 Windows カーネル側で MakeProcInstance に相当する作業をやっ てくれるから , プログラムで処理する必要がないというだけです。でも , DLL は違いま す。 DLL はどうして MakeProcInstance する必要がないのでしよう。 €残された謎 0 ワタソン「そうだ。 DLL では MakeProcInstance しなくていい理由はなんだい ? 」 ▽ホラムズ「 MakeProcInstance しなくていいということは , サンクを作らないというこ とだね」 ■ワタソン「うん。そういうことになるね。でも , サンクがないと , 正しいデータにア クセスできないのだろう ? 」 マホラムズ「どうして正しいデータにアクセスできないんだっけ ? 」 第ワタソン「そりゃあ , プログラムが複数走っているときに , それを区別しなくちゃな らないからさ」 マホラムズ「じゃあ , 走るプログラムが 1 本きりだったら ? 」 ■ワタソン「それはサンクなしでも大丈夫かもしれないが , Windows だといくつでもプ ログラムを起動できるからなあ。ユーザーに必ず 1 個のプログラムだけ使っ てくれなんてお願いはできないよ。だいたい , プログラムマネージャがある から , そこからアプリを立ち上げると最低でも 2 本はプログラムが走ってし まうじゃないか」 マホラムズ「ほら , もう思い違いをしている」 ーワタソン「なんだって ? 」 マホラムズ「サンクが必要なのは同じプログラムを複数起動したときさ。例えばメモ帳 を 2 つ起動したときだね」 ■ワタソン「つてことは , プログラムマネージャとなにか別のプログラムを起動しただ けなら関係ないというわけかい ? 」 「そうだよ」 ▽ホラムズ ■ワタソン「なんか , また頭が混乱しそう」 マホラムズ「じゃあ , 考え方を変えてみよう。 DLL ってどういう使い方をするものか知 ってるかい ? 特徴をいってごらん」