Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Changes between Version 5 and Version 6 of MiniCalcExample

Show
Ignore:
Author:
smjg (IP: 82.152.214.246)
Timestamp:
11/18/07 17:49:00 (16 years ago)
Comment:

more bug fixes

Legend:

Unmodified
Added
Removed
Modified
  • MiniCalcExample

    v5 v6  
    1010 
    1111{{{ 
    12 #!d 
    1312/* Compile with: 
    1413 *  dmd MiniCalc gdi32.lib MiniCalc.def 
    1716import std.string; 
    1817import std.c.windows.windows; 
     18 
     19extern (Windows) BOOL IsDialogMessage(HWND hDlg, LPMSG lpMsg); 
    1920 
    2021const int IDC_BTN_PLUS = 103; 
    3536{ 
    3637  HWND hChapSelectorTree; 
    37    
    38   ghPlusBtn = CreateWindowA("BUTTON", "Plus",  
    39                  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_TEXT, 
    40                  5, 5, 53, 25, ghWndMain, cast(HMENU) IDC_BTN_PLUS,  
     38 
     39  ghPlusBtn = CreateWindowA("BUTTON", "Plus", 
     40                 WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 
     41                 5, 5, 53, 25, ghWndMain, cast(HMENU) IDC_BTN_PLUS, 
    4142                 ghInstance, null); 
    4243 
    43   ghMinusBtn = CreateWindowA("BUTTON", "Minus",  
    44                  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_TEXT, 
    45                  60, 5, 53, 25, ghWndMain,  
    46                  cast(HMENU) IDC_BTN_MINUS,  
     44  ghMinusBtn = CreateWindowA("BUTTON", "Minus", 
     45                 WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 
     46                 60, 5, 53, 25, ghWndMain, 
     47                 cast(HMENU) IDC_BTN_MINUS, 
    4748                 ghInstance, null); 
    4849 
    49   ghFirstNumberEdit = CreateWindowA("EDIT", "0",  
    50                  WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 
    51                  5, 32, 110, 25, ghWndMain,  
     50  ghFirstNumberEdit = CreateWindowA("EDIT", "0", 
     51                 WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 
     52                 5, 32, 110, 25, ghWndMain, 
    5253                 cast(HMENU) IDC_EDIT_FIRST_NUMBER, ghInstance, null); 
    5354 
    54   ghSecondNumberEdit = CreateWindowA("EDIT", "20",  
    55                  WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 
    56                  5, 60, 110, 25, ghWndMain,  
     55  ghSecondNumberEdit = CreateWindowA("EDIT", "20", 
     56                 WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 
     57                 5, 60, 110, 25, ghWndMain, 
    5758                 cast(HMENU) IDC_EDIT_SECOND_NUMBER, ghInstance, null); 
    58    
    59   ghResultNumberEdit = CreateWindowA("EDIT", "",  
    60                  WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 
    61                  5, 87, 110, 25, ghWndMain,  
    62                  cast(HMENU) IDC_EDIT_RESULT_NUMBER,  
     59 
     60  ghResultNumberEdit = CreateWindowA("EDIT", "", 
     61                 WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 
     62                 5, 87, 110, 25, ghWndMain, 
     63                 cast(HMENU) IDC_EDIT_RESULT_NUMBER, 
    6364                 ghInstance, null); 
     65 
     66  SendMessageA(ghFirstNumberEdit, EM_LIMITTEXT, 9, 0); 
     67  SendMessageA(ghSecondNumberEdit, EM_LIMITTEXT, 9, 0); 
    6468} 
    6569 
    6872  MSG msg; 
    6973  while (GetMessageA(&msg, cast(HWND) null, 0, 0)) { 
    70     TranslateMessage(&msg); 
    71     DispatchMessageA(&msg); 
     74    if (!IsDialogMessage(ghWndMain, &msg)) { 
     75      TranslateMessage(&msg); 
     76      DispatchMessageA(&msg); 
     77        } 
    7278  } 
    7379} 
    7682{ 
    7783  HWND hWnd; 
    78   hWnd = CreateWindowA("DWndClass",  
    79                "MiniCalc",  
    80                WS_THICKFRAME | WS_MAXIMIZEBOX  
     84  hWnd = CreateWindowA("DWndClass", 
     85               "MiniCalc", 
     86               WS_THICKFRAME | WS_MAXIMIZEBOX 
    8187               | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE, 
    82                CW_USEDEFAULT, CW_USEDEFAULT,  
     88               CW_USEDEFAULT, CW_USEDEFAULT, 
    8389               125, 150, HWND_DESKTOP, 
    8490               cast(HMENU) null, ghInstance, null); 
    130136 
    131137extern (Windows) 
    132 int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,  
     138int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    133139            LPSTR lpCmdLine, int nCmdShow) 
    134140{ 
    157163int WindowProc(HWND hWnd, uint uMsg, WPARAM wParam, LPARAM lParam) 
    158164{ 
    159   char[8] firstNumber; 
    160   char[8] secondNumber; 
     165  char[10] firstNumber; 
     166  char[10] secondNumber; 
    161167  int count; 
    162168  long num1; 
    168174        case IDC_BTN_PLUS: 
    169175          if (HIWORD(wParam) == BN_CLICKED) { 
    170             count = SendMessageA(ghFirstNumberEdit, WM_GETTEXT,  
    171                                  6, cast(int)cast(char*)firstNumber); 
    172             count = SendMessageA(ghSecondNumberEdit, WM_GETTEXT,  
    173                                  6, cast(int)cast(char*)secondNumber); 
     176            count = SendMessageA(ghFirstNumberEdit, WM_GETTEXT, 
     177                                 10, cast(int)cast(char*)firstNumber); 
     178            count = SendMessageA(ghSecondNumberEdit, WM_GETTEXT, 
     179                                 10, cast(int)cast(char*)secondNumber); 
    174180            num1 = atoi(cast(char[])firstNumber); 
    175181            num2 = atoi(cast(char[])secondNumber); 
    176             SendMessageA(ghResultNumberEdit, WM_SETTEXT,  
    177                          8, cast(int)cast(char*)toString(num1 + num2)); 
     182            SendMessageA(ghResultNumberEdit, WM_SETTEXT, 
     183                         0, cast(int) toStringz(toString(num1 + num2))); 
    178184          } 
    179185          break; 
    180186        case IDC_BTN_MINUS: 
    181187          if (HIWORD(wParam) == BN_CLICKED) { 
    182             count = SendMessageA(ghFirstNumberEdit,  
    183                                  WM_GETTEXT, 8,  
     188            count = SendMessageA(ghFirstNumberEdit, 
     189                                 WM_GETTEXT, 10, 
    184190                                 cast(int)cast(char*)firstNumber); 
    185             count = SendMessageA(ghSecondNumberEdit,  
    186                                  WM_GETTEXT, 8,  
     191            count = SendMessageA(ghSecondNumberEdit, 
     192                                 WM_GETTEXT, 10, 
    187193                                 cast(int)cast(char*)secondNumber); 
    188194            num1 = atoi(cast(char[])firstNumber); 
    189195            num2 = atoi(cast(char[])secondNumber); 
    190             SendMessageA(ghResultNumberEdit,  
    191                          WM_SETTEXT, 8,  
    192                          cast(int)cast(char*)toString(num1 - num2)); 
     196            SendMessageA(ghResultNumberEdit, WM_SETTEXT, 
     197                         0, cast(int) toStringz(toString(num1 - num2))); 
    193198          } 
    194199          break;