ボタンを使って、アプリケーションを作ります。
// // MyApp.h // #include <stdlib.h> #include <math.h> #include <MyControl.h> #include <MyMessageBox.h> #include <MyFont.h> enum{ ID_BUTTON1 = 1001, ID_BUTTON8 = 1008, ID_BUTTON9, ID_BUTTON10, ID_BUTTON11, }; class MyApp : public MyMainWnd{ public: void setMyWnd(MyWndClass& wc, MyCreateStruct& cs){ wc.Menu(L"MyMenu"); cs.Style(WS_OVERLAPPED | WS_SYSMENU); cs.Size(265, 182); cs.SysMenu(1, 0); } // WM_CREATE void wmCreate(){ MyButton btn; MyFont font; HFONT hFont; int x; font.Bold(TRUE); font.Size(20); hFont = font.Create(); btn.Text(L"0"); btn.Size(29, 30); // 2進数用ボタン x = 10 + 8 * 30; for(int i = 0; i < 8; i++){ x -= 30; btn.Location(x, 10); btn.ID(ID_BUTTON1 + i); CreateWindowEx(btn, hFont); //btn.Create(hWnd); } // 16進数用ボタン x = 10 + 5 * 30; for(int i = 0; i < 2; i++){ x -= 30; btn.Location(x, 50); btn.ID(ID_BUTTON9 + i); CreateWindowEx(btn, hFont); } // 10進数用ボタン x = 10 + 3 * 30; btn.Size(60, 30); btn.Location(x, 90); btn.ID(ID_BUTTON11); CreateWindowEx(btn, hFont); } // WM_COMMAND void wmCommand(WPARAM wp){ int wmId = LOWORD(wp); static UINT bd = 0; MyButton btn; UINT mask[8] = {1, 2, 4, 8, 16, 32, 64, 128}; TCHAR txt[256]; int ans; // 数を決定する if((wmId >= ID_BUTTON1) && (wmId <= ID_BUTTON8)){ int n = wmId - ID_BUTTON1; bd ^= mask[n]; } if((wmId >= ID_BUTTON9) && (wmId <= ID_BUTTON10)){ int n = wmId - ID_BUTTON9; ans = bd; ans /= pow(16.0, n); ans %= 16; if(ans >= 15){ ans = -ans; }else{ ans = 1; } bd += ans * pow(16.0, n); } if(wmId == ID_BUTTON11){ if(bd >= 255){ bd = 0; }else{ bd++; } } // ボタンに数字を表示 btn.SetID(ID_BUTTON11); wsprintf(txt, L"%d", bd); btn.SetText(txt); ans = bd; for(int i = ID_BUTTON9; i <= ID_BUTTON10; i++){ btn.SetID(i); wsprintf(txt, L"%X", ans % 16); btn.SetText(txt); ans /= 16; } ans = bd; for(int i = ID_BUTTON1; i <= ID_BUTTON8; i++){ btn.SetID(i); wsprintf(txt, L"%d", ans % 2); btn.SetText(txt); ans /= 2; } } };
実行画面です。
タイトルはよくないです。 実は、2進数、16進数、10進数間の変換ができるアプリケーションです。 では、どんな動作をするか説明します。
ボタンは、上から2進数、16進数、10進数を表します。 どのボタンを押しても構いません。 では、ボタンを押してみます。
16進数の赤丸を付けたボタンを押しました。 0が1に変わります。 すると、他のボタンの数字が変わります。 もう1度同じボタンを押してみます。
どんなアプリかおわかりになれたでしょうか。 赤丸を付けたボタンは、"0" から "F" へと変わり、次は "0" に戻ります。 これで、2進数、16進数、10進数の間の変換ができたということになります。