Win32API(C言語)で変換
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
#include <windows.h>
#include <stdlib.h>

#define MY_CLASS TEXT("my_class")

#define BUTTON_RUN 0
#define TEXT_DEC   1
#define LABEL_BIN  2

HWND lblBin, txtDec;

LRESULT CALLBACK WindowProc(
        HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    switch(msg){
        case WM_COMMAND:
            if(LOWORD(wp) == BUTTON_RUN){
                /***************************************************
                //2進数に変換する
                ****************************************************/
                TCHAR jyuStr[255];
                TCHAR nisinStr[17];
                TCHAR tmp[2];
                int nisin[16];
                int jyu;
                int i;

                //入力した数値を受け取る
                GetWindowText(txtDec, jyuStr, lstrlen(jyuStr));
                jyu = atoi(jyuStr);

                //変換
                for(i=0; i<16; i++){
                    nisin[i] = jyu % 2;
                    jyu = jyu - 2;
                }

                //文字列に直す
                itoa(nisin[15], tmp, 2);
                lstrcpy(nisinStr, tmp);
                for(i=14; i>=0; i--){
                    itoa(nisin[i], tmp, 2);
                    lstrcat(nisinStr, tmp);
                }

                //表示
                SetWindowText(lblBin, nisinStr);
                /****************************************************/
            }

            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, msg, wp, lp);    
    }

    return 0;
}

int WINAPI WinMain(
        HINSTANCE hInstance, HINSTANCE hPrevInstance,
        LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    WNDCLASS wc;
    HWND hWnd;

    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hInstance = hInstance;
    wc.lpfnWndProc = WindowProc;
    wc.lpszClassName = MY_CLASS;
    wc.lpszMenuName = NULL;
    wc.style = CS_VREDRAW | CS_HREDRAW;

    if(!RegisterClass(&wc)){ return 0; }

    hWnd = CreateWindow(
        MY_CLASS, TEXT("10進数→2進数"), 
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT,
        230, 69,
        NULL, NULL, hInstance, NULL);

     txtDec = CreateWindow(
        TEXT("EDIT"), TEXT(""),
        WS_CHILD | WS_VISIBLE | WS_BORDER,
        0, 0, 150, 20,
        hWnd, (HMENU)TEXT_DEC, hInstance, NULL);

     lblBin = CreateWindow(
         TEXT("STATIC"), TEXT(""),
         WS_CHILD | WS_VISIBLE,
         0, 20, 150, 20,
         hWnd, (HMENU)LABEL_BIN, hInstance, NULL);

     CreateWindow(
        TEXT("BUTTON"), TEXT("実行"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        150, 0, 80, 40,
        hWnd, (HMENU)BUTTON_RUN, hInstance, NULL);

    if(hWnd == NULL){ return 0; }

    
    while(GetMessage(&msg, hWnd, 0, 0) > 0){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int)msg.wParam;
}

TOPに戻る   いろいろな言語へ戻る