c++ 電卓制作
今使ったのはMicrosoft Visual Studio 2010のアプリ
以下のプログラムはダイアログボックス表示で0から9のボタン入れでます、普通の電卓作りたいです、計算のプログラムわからないので、どうすればいいですか?
#include <windows.h>
#include "resource.h"
#include <tchar.h>
// プロトタイプ宣言
BOOL CALLBACK DlgWndProc ( HWND , UINT , WPARAM , LPARAM ) ;
void sub( int no , HWND hWnd ) ;
static int cnt ;
int a , b ;
static int c ;
// エントリポイント
int APIENTRY WinMain ( HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
LPSTR lpCmdLine ,
int nCmdShow )
{
DialogBox(hInstance ,
MAKEINTRESOURCE(IDD_DIALOG1) ,
NULL , (DLGPROC) DlgWndProc ) ;
return 0 ;
}
/* ------ ダイアログボックスウインドウプロシージャ ----- */
BOOL CALLBACK DlgWndProc ( HWND hWnd ,
UINT message ,
WPARAM wParam ,
LPARAM lParam )
{
TCHAR s[80] ;
switch( message )
{
case WM_INITDIALOG :
cnt = 0 ;
return TRUE ;
case WM_COMMAND :
switch ( LOWORD(wParam) )
{
case IDC_1 :
sub ( 1 , hWnd ) ;
return TRUE ;
case IDC_2 :
sub ( 2 , hWnd ) ;
return TRUE ;
case IDC_3 :
sub ( 3 , hWnd ) ;
return TRUE ;
case IDC_4 :
sub ( 4 , hWnd ) ;
return TRUE ;
case IDC_5 :
sub ( 5 , hWnd ) ;
return TRUE ;
case IDC_6 :
sub ( 6 , hWnd ) ;
return TRUE ;
case IDC_7 :
sub ( 7 , hWnd ) ;
return TRUE ;
case IDC_8 :
sub ( 8 , hWnd ) ;
return TRUE ;
case IDC_9 :
sub ( 9 , hWnd ) ;
return TRUE ;
case IDC_0 :
sub ( 0 , hWnd ) ;
return TRUE ;
case IDC_CLOSE :
EndDialog( hWnd , 0 ) ;
return TRUE ;
default :
return FALSE ;
}
default :
return FALSE ;
}
}
/* ------------------------------------- */
/* 表示 */
/* ------------------------------------- */
void sub( int no , HWND hWnd )
{
TCHAR s[20] ;
cnt *= 10 ;
cnt += no ;
wsprintf( s , TEXT("%d") , cnt ) ;
SetWindowText( GetDlgItem(hWnd , IDC_EDIT1) , s ) ;
}
お礼
ご回答ありがとうございます。 OnChangeが制御出来るのですね。 このやり方は知りませんでした。 明日、会社で試して見たいと思います。 ありがとう御座いました。
補足
本日、会社で試して見ました。 この方法では二重割り込みは発生しませんでした。 その他のマスクにも使えますね。 ありがとう御座いました。