単純な電卓

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

単純な電卓

#1 投稿記事 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 に表示されませんでした。

どこがいけないのか教えて下さい。
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

#2 投稿記事 by Toshi »

これは文字列を数値とみなして、それらを加算した値を文字列として表示するということでしょうか?

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

意図した動作にするには、まず GetDlgItemInt でそれぞれの文字列を
数値として取得し、それらを加算した値を文字列にしてから
SetWindowText へ渡します。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#3 投稿記事 by M.S. »

> 上のコードでできました。

ありがとうございました。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#4 投稿記事 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)
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#5 投稿記事 by konisi »

過去に暇だったので作った電卓を引っ張り出してみるテスト。

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

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

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

そして皆様すみません。<<宣伝にほぼ等しい行為について
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信する