2000年1月のエントリ

というかなんかぐちゃぐちゃな感じが。昨日 C で C++ っぽくプログラムを組んでそのソースを Perl で TeX 形式にして Pha-jtd 氏の HTML を添削したりして,今日 VB と SQL と C++ をやってるワケで,VB で ‘文字列’ とかやるし。ワケ分からん。


DLL の登録場所。

HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionSharedDLLs

VB で小数点以下 n 桁四捨五入。なんか方法があるのかも知れないが,ヘルプで見つからなかったので。

Int(a * 100 + 0.5) / 100

#その後の情報によると Format を使うらしい。

しばらく Visual Basic をやっているが,C に戻ってみると,

if(a = 1)

とやってしまう。ちなみにやりたいのは ==。

メンバに string を入れると他の string が破壊されるという現象に悩まされる。こんな怪現象にはリビルドだ,とか思ってリビルドしても直らない。結局 1 日悩んだが,インクルードパスに古いバージョンが残っていて,ファイルごとにインクルードするファイルのバージョンが違うということだった。ふう。

そういえば書いてなかったような気がするが,HTML Help Workshop は起動するたびに *.log を関連づけてくれる。こんな拡張子をしかもほとんど関係ないソフトがとるってのはどうだろう。Word の Doc 以上ですな。

Pha-jtd 氏から,CGI が動かないとメールが届く。原因は#!/usr/local/bin/perl#!/user/local/bin/perlと書いていたから。

#ってここで書いていいですか > Pha-jtd 様

大学のレポートプログラムでコンパイルエラー。何故か for を使うとエラーになるというものだが,for 文の中でローカル変数を使っていたからだった。

課題自体は「C 言語」で簡単な計算機を作るというものだが,スタック作るのに template を使えないので

#define name2(x, y) x##y
#define declare(x, y) name2(x, declare)(y)
#define implement(x, y) name2(x, implement)(y)

とかやって実装したりして。ていうか C++ か Java くらい教えるようにして欲しいけど > 某大学情報工学科。

画像の階調特性を入力しようとしたら会長特製とか出た。いや,プログラム関係ないけど。

Perl。引数を処理しようとしてうまく行かない。

if(@argv < 5)
{
}

とかやっていたが,引数を表すのは @ARGV つまり大文字だった。

ふとある .cpp を見てみると,

#ifndef XXX_CPP
#define XXX_CPP

とか書いてあった。いつの間にこんなの書いたのか。


TeX で表に番号とキャプションを付ける。tabular を begin{table} end{table} で囲み,label と caption を付ける。はずだが,うまく出ない。参照すると節番号になってしまう。でネットをあさって原因が判明。label は caption の後に書くらしい。確かに既にうまくいってる「図」はそうなっている。で,そのようにして XXX.aux を消し,再コンパイルすると見事に正常に表示された。

# でも TeX でこういう順番気にしなきゃいけない事なんてなかったからなあ。普通気にしないような。

ある 2 つのビューがあり,A はマウスのクリックでマウスをキャプチャーする。B はフォーカスがなくなった時にダイアログを出すとする。(B にエディットボックスがあり,そこで編集を行うが,フォーカスがなくなったら値チェックを行う,など。もっと分かりやすい例は後で。)

ここで,B で編集をし,そのまま A をクリックするとどうなるかという問題である。この場合,

  • B のフォーカスが失われる
  • ダイアログが出現し,OK ボタンを押す
  • A に WM_LBUTTONDOWN メッセージが来て,マウスがキャプチャーされる

という具合になるのだが,ここで問題が生じる。A の WM_LBUTTONUP が呼ばれないのだ。よってマウスのリリースができず,困った状況になる。で,解決するために結構悩んだんだが,そういえばエクスプローラも同じ事をやっている。以下の手順で試してみて欲しい。

  • ツリービューでフォルダ名を編集し,* とかにする
  • 編集中のままリストビューをクリック
  • エラーが出るので,OK。

さて,どうなっただろうか。答えは「マウスボタンは離しているのにラバーバンドが現れる」だ。なあんだ。エクスプローラもできてないのか。

もう 1 つエクスプローラの問題。同様に

  • リストビューでファイル名を編集し,* とかにする
  • 編集中のまま真ん中の境界線をクリックし,素早くサイズ変更
  • エラーが出るので,OK。

さて,今度はどうなっただろうか。境界を右に動かした方はリストビューが欠けてしまい,逆に左に動かした方は白い変な領域ができたと思う。これは誰も気付かなかったバグなのか,それとも対応不可能なバグなのか。ちなみに私が試したのは Win98 だけなので他ではどうなるか分からない。

#後で試したところ,NT も同様だった。

Install Sield,ファイルコピー中のファイル名で,カタカナのア・カ行辺りが文字化けする。

Enable(INDVFILESTATUS);

を消し,表示そのものを行わないようにする。

いつか hr みたいな線の作り方を書いたけど,それよりよさそうな方法。

  • ピクチャーコントロールを貼り付ける
  • スタイルのくぼみをチェックする

これだけ。

MFC 利用スタティックライブラリで

定義されていない基本クラス

とか言われる。StdAfx.h に

#include <afxext.h>

を追加。


複数のプロジェクトを扱う時,他のプロジェクトを変更したときにリコンパイルする方法。プロジェクトの依存関係で依存するプロジェクトをチェック。


libjpeg を入れる。

  1. VC98bin にある Vcvars32.bat を実行。
  2. jconfig.vc を jconfig.h に,makefile.vc を makefile に直す。
  3. nmake でデバッグ版が完成。
  4. namke nodebug=1 でリリース版が完成。

ちなみに環境変数の領域が足りない場合は config.sys に

shell=c:command.com /e:4096 /p

を追加。(前書いたっけ?)