Hey everyone. I was trying to make a toolbar. sucessfull. The problem is that I can't get the buttons on the toolbar to work. Can someone please tell me what I did wrong?

Code:
#include "resource.h"
#include <commctrl.h>

char szClassName[] = "Editor Class";

bool LoadFile(HWND hEdit, LPSTR szFileName)
{
     HANDLE hFile;
     bool bSuccess = false;
     
     hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
     OPEN_EXISTING, 0, 0);
     if (hFile != INVALID_HANDLE_VALUE)
     {
               DWORD dwFileSize;
               dwFileSize = GetFileSize(hFile, NULL);
               if (dwFileSize != 0xFFFFFFFF)
               {
                             LPSTR szFileText;
                             szFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1);
                             if (szFileText != NULL)
                             {
                                            DWORD dwRead;
                                            if (ReadFile(hFile, szFileText, dwFileSize, &dwRead, NULL))
                                            {
                                                          szFileText[dwFileSize] = 0; 
               if(SetWindowText(hEdit, szFileText))
                  bSuccess = TRUE; 
            }
            GlobalFree(szFileText);
         }
      }
      CloseHandle(hFile);
   }
   return bSuccess;
}     
           
BOOL SaveFile(HWND hEdit, LPSTR pszFileName)
{
   HANDLE hFile;
   BOOL bSuccess = FALSE;

   hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0,
      CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
   if(hFile != INVALID_HANDLE_VALUE)
   {
      DWORD dwTextLength;
      dwTextLength = GetWindowTextLength(hEdit);
      if(dwTextLength > 0)
      {
         LPSTR pszText;
         pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1);
         if(pszText != NULL)
         {
            if(GetWindowText(hEdit, pszText, dwTextLength + 1))
            {
               DWORD dwWritten;
               if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL))
                  bSuccess = TRUE;
            }
            GlobalFree(pszText);
         }
      }
      CloseHandle(hFile);
   }
   return bSuccess;
}

BOOL DoFileOpenSave(HWND hwnd, BOOL bSave)
{
   OPENFILENAME ofn;
   char szFileName[MAX_PATH];

   ZeroMemory(&ofn, sizeof(ofn));
   szFileName[0] = 0;

   ofn.lStructSize = sizeof(ofn);
   ofn.hwndOwner = hwnd;
   ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0\0";
   ofn.lpstrFile = szFileName;
   ofn.nMaxFile = MAX_PATH;
   ofn.lpstrDefExt = "txt";

   if(bSave)
   {
      ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY |
         OFN_OVERWRITEPROMPT;
         
      if(GetSaveFileName(&ofn))
      {
         if(!SaveFile(GetDlgItem(hwnd, IDC_EDIT_MAIN), szFileName))
         {
            MessageBox(hwnd, "Save file failed.", "Error",
               MB_OK | MB_ICONEXCLAMATION);
            return FALSE;
         }
      }
   }
   else
   {
      ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
      if(GetOpenFileName(&ofn))
      {
         if(!LoadFile(GetDlgItem(hwnd, IDC_EDIT_MAIN), szFileName))
         {
            MessageBox(hwnd, "Load of file failed.", "Error",
               MB_OK | MB_ICONEXCLAMATION);
            return FALSE;
         }
      }
   }
   return TRUE;
}                   

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
        switch (msg)
        {
               case WM_CLOSE:
                    DestroyWindow(hwnd);
                    break;
               case WM_DESTROY:
                    PostQuitMessage(0);
                    break;
               case WM_CREATE:
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        //Edit Box
                    HFONT hfDefault;
        HWND hEdit;

        hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
            WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 
            0, 0, 100, 100, hwnd, (HMENU)IDC_EDIT_MAIN, GetModuleHandle(NULL), NULL);
        if(hEdit == NULL)
            MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);
        DefaultFont(IDC_EDIT_MAIN, hwnd);
        
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        
        ///////////////////////////////////////////////////////////////////////////////////////
        //ToolBar
        HWND hToolBar;
        hToolBar = CreateControl(TOOLBARCLASSNAME, NULL, 0, 0, 0, 0, IDC_TOOLBAR, hwnd);
        SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
        ///////////////////////////////////////////////////////////////////////////////////////
        
        /////////////////////////////////////////////////////////////////////////////////
        //Toolbar Buttons
        TBBUTTON tbb[3];
        TBADDBITMAP tbab;
        
        tbab.hInst = HINST_COMMCTRL;
        tbab.nID = IDB_STD_SMALL_COLOR;
        SendMessage (hToolBar, TB_ADDBITMAP, 0, (LPARAM)&tbab);
        
        ZeroMemory(tbb, sizeof(tbb));
    tbb[0].iBitmap = STD_FILENEW;
    tbb[0].fsState = TBSTATE_ENABLED;
    tbb[0].fsStyle = TBSTYLE_BUTTON;
    tbb[0].idCommand = ID_FILE_NEW;

    tbb[1].iBitmap = STD_FILEOPEN;
    tbb[1].fsState = TBSTATE_ENABLED;
    tbb[1].fsStyle = TBSTYLE_BUTTON;
    tbb[1].idCommand = ID_FILE_OPEN;

    tbb[2].iBitmap = STD_FILESAVE;
    tbb[2].fsState = TBSTATE_ENABLED;
    tbb[2].fsStyle = TBSTYLE_BUTTON;
    tbb[2].idCommand = ID_FILE_SAVE;

    SendMessage(hToolBar, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb);
        /////////////////////////////////////////////////////////////////////////////////
        break;
                    case WM_SIZE:
        RECT rcClient;

        GetClientRect(hwnd, &rcClient);
        hToolBar = GetDlgItem(hwnd, IDC_TOOLBAR);
        SetWindowPos(hToolBar, NULL, 0, 0, rcClient.right, 0, SWP_NOZORDER);
        hEdit = GetDlgItem(hwnd, IDC_EDIT_MAIN);
        SetWindowPos(hEdit, NULL, 0, 27, rcClient.right, rcClient.bottom - 27, SWP_NOZORDER);
        break;
                    case WM_COMMAND:
                         switch (LOWORD(wParam))
                         {
                         case ID_FILE_OPEN:
                              DoFileOpenSave(hwnd, FALSE);
                              break;
                         case ID_FILE_SAVE:
                              DoFileOpenSave(hwnd, TRUE);
                              break;
                         case ID_FILE_EXIT:
                              PostMessage(hwnd, WM_CLOSE, 0, 0);
                              break;
                              }
                              
               default:
                       return DefWindowProc(hwnd, msg, wParam, lParam);
                       }
      return 0;
      }

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
    HWND hwnd;
    MSG msg;
    WNDCLASSEX txtclass;
    
    txtclass.hInstance                  = hInstance;
    txtclass.lpszClassName              = szClassName;
    txtclass.lpfnWndProc                = WindowProcedure;
    txtclass.style                      = CS_DBLCLKS;
    txtclass.cbSize                     = sizeof(WNDCLASSEX);
    txtclass.hIcon                      = LoadIcon(NULL, IDI_APPLICATION);
    txtclass.hIconSm                    = LoadIcon(NULL, IDI_APPLICATION);
    txtclass.hCursor                    = LoadCursor(NULL, IDC_ARROW);
    txtclass.lpszMenuName               = MAKEINTRESOURCE(IDR_MENU);
    txtclass.cbClsExtra                 = 0;
    txtclass.cbWndExtra                 = 0;
    txtclass.hbrBackground              = (HBRUSH) (COLOR_WINDOW+11);
    
    if (!RegisterClassEx(&txtclass))
    {
                                    MessageBox(NULL, "Window's Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
                                    return 0;
                                    }
                                    
    hwnd = CreateWindowEx(
    0,
    szClassName,
    "Dan's Text Editor",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    500,
    400,
    HWND_DESKTOP,
    NULL,
    hInstance,
    NULL
    );
    
    ShowWindow(hwnd, nFunsterStil);
    UpdateWindow(hwnd);
    
    while(GetMessage(&msg, NULL, 0, 0))
    {
                           TranslateMessage(&msg);
                           DispatchMessage(&msg);
                           }
                           return msg.wParam;
}


I've included the whole main c page of the app. It's a text editor. I did it just incase you needed something from it. If you need more code to find out what's wrong, tell me.