ページ 11

単純な電卓

Posted: 2006年1月19日(木) 19:04
by M.S.
大分前にも電卓の投稿をしましたが、AB4 でコンパイルして起動させてみると、
正しく機能しなくなったので、また新しく作ろうと思いやってみたのですが、
うまくいかないので、質問させていただきます。

コード: 全て選択

dim buf[225] as Byte
dim buff[225] as Byte

GetDlgItemText(hMainWnd,EditBox1,buf,225)
GetDlgItemText(hMainWnd,EditBox2,buff,225)

SetWindowText(GetDlgItem(hMainWnd,Static1),buf+buff)
上記のコード(足し算用)でやってみると、なにも Static1 に表示されませんでした。

どこがいけないのか教えて下さい。

Posted: 2006年1月19日(木) 20:03
by Toshi
これは文字列を数値とみなして、それらを加算した値を文字列として表示するということでしょうか?

この場合 buf と buff は、それぞれがポインタとみなされますので、
SetWindowText にはそれらのポインタ同士を加算した値がポインタとして渡されてしまいます。

意図した動作にするには、まず GetDlgItemInt でそれぞれの文字列を
数値として取得し、それらを加算した値を文字列にしてから
SetWindowText へ渡します。

Posted: 2006年1月20日(金) 20:28
by M.S.
> 上のコードでできました。

ありがとうございました。

Posted: 2006年1月20日(金) 22:25
by イグトランス
GetDlgItemIntとは逆のSetDlgItemIntもありますよ。

Declare Function SetDlgItemInt Lib "user32.dll" (hDlg As HWND, nIDDlgItem As Long, uValue As DWord, bSinged As Long) As Long

SetDlgItemInt(hMainWnd, Static1, (buf + buff) As DWord, TRUE)

Posted: 2006年1月22日(日) 20:29
by konisi
過去に暇だったので作った電卓を引っ張り出してみるテスト。

http://web1.nazca.co.jp/hp/himajinn13sei/11.zip

プレ画像→http://web1.nazca.co.jp/hp/himajinn13sei/11.jpg

暇潰しに作った割には複雑な構造してますがヘルプに載ってる関数が殆んどだったと思うので読もうと思えば読めると思います。

そして皆様すみません。<<宣伝にほぼ等しい行為について