|
・今日もお便り紹介っ!
|
|
・こんにちわー。えっと、ようするにモーダルダイアログを表示したときみたいにしたいんですよね。「メイン画面」を無反応にするんだったら、 EnableWindow() で第1引数に無反応にするウィンドウのハンドル、第2引数に FALSE を渡せばOK。これで全然反応しなくなるはず。試してみてねー。
・でわまたっ! |
・今日もお便り紹介〜。
|
|
・うーん、あんまりネットワーク関係は詳しくないんで、ちょっと細かい部分までは分からないです。とりあえずお茶を濁す感じ(汗)で MSDN の "インターネット実用編 : WinInet" を元に、 CHttpConnection を使ってホームページのダウンロードをするコードを書いておきますです。
CInternetSession session; CHttpConnection* pConnection = session.GetHttpConnection( "www.kab-studio.com" ); CHttpFile* pFile = pConnection->OpenRequest ( CHttpConnection::HTTP_VERB_GET , "index.html" ); pFile->SendRequest(); DWORD dwRet; pFile->QueryInfoStatusCode( dwRet ); if( dwRet == HTTP_STATUS_OK ) { char ch[1024]; UINT nRead = pFile->Read( ch, 1023 ); while( nRead > 0 ) { OutputDebugString( ch ); nRead = pFile->Read( ch, 1023 ); } } delete pFile; delete pConnection; ・なんかエラーが出てる(汗)。速攻で作ったからぼろがありそう。で、あと MSDN の Knowledge Base Article ID: Q165298 "HOWTO: Simulate a Form POST Request Using WinInet" にその POST してるっぽいサンプルコードがあるんで、これと組み合わせてなんとかなると嬉しいなー。っつーかネットワークって難しいなぁ。 RFC 訳本買うかなぁ。 ・でわまたっ! |
・今日もお便り紹介ですぞーっ!
|
|
・どうもですー。 KAB-studio 自体はなくならないです。ただ、ここ(かぶゆ〜)の更新をやめるかもって話。4月からお仕事だから、忙しくなって更新量減りそうなんで。さて質問の件だけど、これはウィンドウズの話だよね。だとすると、基本的にアプリ側でメモリを管理する方法はないです。
・メモリはウィンドウズ側が管理してて、実メモリが使えるなら実メモリを、足りなそうならスワップファイルをメモリとして割り当てる仕組みになってます。だからアプリ側で「他のアプリなんてどうでもいいから、うちに実メモリ64M使わせろい!」とかゆーことはできないんです、残念ながら。他のアプリを終了させて、余裕持たせるくらいしかないかなぁ。 ・あ、「Appが、大きくなり」って、もしかして普通のメモリ領域の話じゃないのかな。リソース(ハンドル)だと、ウィンドウ・メニュー・アイコンなんかをまとめて、ウィンドウズ全体で65536個しか作れなかったりして、これはメモリ増やしてもどうにもならないです。あと他に……スタックサイズは【プロジェクトの設定】ダイアログの【リンク】−【アウトプット】の【スタックアロケーション】−【予約】で変更できるから、こっちの場合はここで変更してみて。このくらいかなぁ。 ・もひとつお便り。 |
|
・おお、うまくいきましたか! CGI にデータ送るのって、わては「エンコードして URL にくっつけて送る」のしか知らなかったんで。こういう基本的なルール知らないからなー。 RFC 日本語訳サイトを漁ってみるか、あの1万円もする分厚い本を買うか……。
・でわまたっ! |
・今日はお休みだよーん。くーっ、卒論が終わらねーっ!!
|
・今日もお休みですよ。ええ。
|
・今日もお休みっ! やっと卒論が完成した〜。
|
・今日もお休み。卒論関係はひと段落したんで、お便りお待ちしてまーす。あーあと、ふと Java + XML に興味を持ったんでちょっと試してみるかも。なんかいろんなことやってるなーわて。
・でわまたっ! |
・昨日の予告どおり、今日は Java を使ってみました。実は、ほとんど初めての挑戦。かなり昔、 VisualJ1.0 を買ったことがあるんだけど、あれは確か、しょっぱなから動かなかったような記憶が……。そんときの Java マニュアルが分かりやすかったのと、デザインパターンにはまったときには Java は必須だったからっていうので、ある程度は知ってるんだけど、使うのはこれが初めて。
・で、まずはCマガ1月号に付いてたIE5.5をインストールして、次にインプライズのホームページでユーザー登録、そのあと同じく1月号の Borland JBuilder 4 Foundation をインストール……しようとしたらいきなりアクセス違反で落ちる(汗)。再起動して常駐もの終了させてから再度インストール。 ・んで立ち上げて @IT のサンプル試そうとしたら……重い! なんやねんこの開発環境の重さは! そして……よく落ちる(泣)。とにかくあっさりとアクセス違反になる。むぅ。この JBuilder 4 IDE そのものが Java で作られてるって話なんでなんかそこはかとない不安が……。とりあえず JBuilder 4 で行く事はあきらめる(泣)。 ・ JBuilder 4 の中から JDK1.3 のフォルダだけ取り出してあとは削除。お次は VC を用意。そう、いつものです(爆)。【ツール】−【カスタマイズ】の【ツール】ページで javac.exe をフルパス指定、引数は Main.java 実行時のディレクトリは $(WkspDir) にして【アウトプットウィンドウを使用】をチェック。で、コンソールプロジェクトを作って Main.java 置いて、そんなかにさっき書いた VisualJ1.0 マニュアルのサンプルコードをコーディング。んでツールボタンをぽちっと。コンパイル成功〜。 ・お次は実行。同じく【ツール】−【カスタマイズ】の【ツール】ページで java.exe をフルパス指定、引数は Main 実行時のディレクトリは $(WkspDir) にして【アウトプットウィンドウを使用】をチェック。引数で Main.class って拡張子付けちゃいけないことに気付くのにえらい時間がかかった(汗)。んでツールボタンをぽちっと。おお Hello, world! だ! これでとりあえず環境はOKかな。 ・今日のお便り! |
|
・うーん、簡単に調べてみたけどちょっと原因が見つからなかったです。わてもまどかぶ使ってたときに謎のエラーが出まくったりしたからなー、 OS で IContextMenu2 の実装が微妙に違ってて、ちょっとしたことで落ちたりするのかも。他のサンプルコードと照らし合わせてテストするとかしか思い付かないです。あとは shell32.dll を最新のものにするとか、 IContextMenu3 の方を使ってみるとか……。
・でわまたっ! |
・今日は XML の話。 XML ってええなー思う。プログラミング辞書とか、本文とかだけテキストで書いて、それを表示したりとかって部分を別にできるから処理が楽そう。 Perl 使って抜き出したりとかはできるんだけど、 XML なら抜き出すためのもんだから処理しやすいからね。
・ XML は解りにくいッ! ってよく言われてるんでわてなりの解釈を。データをファイルに保存するとき、バイナリで書き込んだり、 CSV にしたり、 Data=100 みたいにしたりするでしょ。 XML はそういうのの書き方のひとつで、テキスト形式で <Data>100</Data> っていう記述方法をするもの。 ・そして、 XML は「このファイルには Data と Name 、それに IsNew のみっつのパラメーターがあります」みたいな定義をするためのものです。つまり「このアプリは日時と名前をファイルに保存します」「このアプリのファイルはデータっていう構造体をひとつ以上持ってて、その中には教科名と点数が入ってます」っていうフォーマットそのものを定義することができるんです、 XML は。 ・ XML のファイルは、実際のデータと、そのデータのフォーマット定義( DTD )のふたつで構成されます。フォーマットが含まれてるから、データがどういうものなのかだいたい判断できる仕組みになってます。さらに、 XML ライブラリを使えば、そのフォーマットを元にデータを取り出すことができます。 CSV だったら「3番目が日付」ってことを知らなきゃいけないでしょ。その情報を DTD が提供してくれるから、 XML ライブラリが簡単に取り出せるわけ。 ・ XML が使いやすい理由は、テキストファイルで作れて、ライブラリが揃ってて、スタイルシートと組み合わせれば HTML みたくきれいにブラウザで表示できて、世界標準、ってとこ。データの保存を XML でしとけばあとから融通か利きやすいわけですな。他のアプリで処理する必要が出たときとかにね。と、付け焼き刃で理解しました(爆)。 XML が難しいのは、 HTML から考えるからじゃないかなぁ。こういうふうにファイルフォーマットと絡めてみると解りやすいと思うです。 ・で、実際にしたことは、今出てるCマガ2月号の XML 入門のを実際に試してみて、あと @IT の XML フォーラムの記事を読んだくらい。Cマガのはかなり解りやすいんでお奨め。っつーか XML そのものを理解するよりも、 VC や Java からパーサーを呼び出したり、サーバーサイドのプログラムを作ったりできないと仕事で役に立たなそうなんでその辺もやってみないと。 ・でわまたっ! |
・今日はぷらとわを書きました。とうとうウィンドウプロシージャまわりに突入。むっつかしい MFC のメッセージ搬送システムもちょびっと見てみたり。あれは union やら enum やらメンバ関数ポインタやら使うからかなりややこしい話になってくるから、まー今回は触りだけ。それよりメッセージが送られてきて Spy++ で見てとかの部分が中心。
・今日はこれくらいかな。あと辞書書いたりとかくらい。 Java + XML はひと休み。本屋で見たら XML 専門誌が2冊くらいあったんだけど、結構高かったんでとりあえずパス(汗)。こういう本を読むよりも、サンプルをほむぺから漁った方がいいかなーとか思ってしまう……。 ・でわまたっ! |
・今日はお便り紹介!
|
|
・うーん、なんででしょう。そういうことにはならないと思うんだけど……とりあえずサンプルコードね。
void CreateEdit ( HWND p_hParentWnd // 親ウィンドウ , HINSTANCE p_hInst ) // インスタンスハンドル { HWND hWnd = ::CreateWindow ( "EDIT" , "" , WS_CHILD , 10, 30, 100, 60 , p_hParentWnd , (HMENU)1050 , p_hInst , NULL ); ::ShowWindow( hWnd, SW_SHOW ); } ・たぶんこうすれば普通に入力できるしカーソルも移動できるはず。動かなくなる原因としては、なんか変なスタイルを付けちゃったとか、変な処理をしちゃったとか、かなぁ。でもカーソルキーだけ効かないっていうのはちょっと思い付かないです。うーむ。 ・でわまたっ! |
・今日はプログラミング言語書いてました。今さらになって「演算子」を追加するってゆーのがなんかすごい(爆)。こういうのも、送られてこないと追加しないからなー。あと、もしかしたら多次元配列を全然理解してないかもしんない、わて。っつーか使ったことないし。調べ直さねば。今日はこれだけ(汗)。
・でわまたっ! |
・今日はお休みしまーす。
|
・今日もお休み。今週はお休み多いかも……。
|
・今日はお便り紹介!
|
|
・エディタのソースコードかー、ちょっと知らないです。実際、エディタを実現するのってかなり大変そうなんで、わても見てみたいです。 UNIX 系から移植したのとかだとコードありそうだけど。
・ CreateCompatibleDC() のは「メモリデバイスコンテキスト」っていうのです。2000年12月19日のにメモリ DC の例があるんで見てみて。 CMy20001219View::On1() の中のがほとんどそう。最後から2行前の BitBlt() してるところを cMemDC から pDC に転送するように書き換えればOK。 ・簡単に解説すると、まず画面に出てる DC を元に CreateCompatibleDC() を呼び出します。すると画面に表示されないメモリだけの DC が作られます。これがメモリデバイスコンテキスト。で、忘れちゃいけないのがビットマップの作成。ビットマップは「キャンバス」。作りたてのメモリ DC にはそのキャンバスになるビットマップがないから、作って持たせてあげなきゃいけない。 ・そこで同じく画面に出てる DC から CreateCompatibleBitmap() でビットマップを作成して SelectObject() でメモリ DC に貼り付けます。そうすればメモリ DC への描画がこのビットマップに反映されるようになります。で、描画した後 BitBlt() でメモリ DC から画面に出てる DC にコピーすればOK。 ・描画は、画面の DC にするよりメモリ DC にした方が早いんでこれで高速化できるはず。あと、 WM_PAINT では BitBlt() だけするようにして、メモリ DC への描画は必要なときだけするとか。エディタで DirectX 使うとかはありなのかなぁ。ちょっと不明。 ・でわまたっ! |
・今日もお便り紹介!
|
|
・そうしてくれると嬉しいですー。今はメーラーとかチャットとか、通信系クライアントで特にエディタ必須状態で、仕方なくリッチエディット使うような感じなんで。 VC のエディタを公開してくれるくらいのサービスが欲しい(爆)。
・メモリデバイスコンテキスト、特に「ビットマップを作って付ける」っていうのは結構知らない人多いみたいですね。「キャンバス」は結構分かりやすいみたいで前にもそんなこと言ってくれた方が。わてはなんで知ったのかな、記憶にない(爆)。こういうノウハウは Win95 が出始めた頃には蓄積されてたみたいなんだけど、最近はそういうのは薄まって来てるのかもしんない……。 ・でわまたっ! |
(C)KAB-studio 2001 ALL RIGHTS RESERVED. |