Thritt  Цитата: У меня вопрос: создаю кнопку стиля BS_OWNERDRAW
  в свое время переводил его на дельфи и все работало как надо 
 [more] 
 LRESULT APIENTRY OwnDrawProc(hDlg, message, wParam, lParam)   
 HWND hDlg;      // window handle of dialog box  
 UINT message;   // type of message  
 UINT wParam;    // message-specific information  
 LONG lParam;  
 {  
     HDC hdcMem;  
     LPDRAWITEMSTRUCT lpdis;     
     switch (message) {  
         case WM_INITDIALOG:     
             // hinst, hbm1 and hbm2 are defined globally.  
             hbm1 = LoadBitmap((HANDLE) hinst, "OwnBit1");  
             hbm2 = LoadBitmap((HANDLE) hinst, "OwnBit2");    
             return TRUE;     
         case WM_DRAWITEM:  
             lpdis = (LPDRAWITEMSTRUCT) lParam;  
             hdcMem = CreateCompatibleDC(lpdis->hDC);     
             if (lpdis->itemState & ODS_SELECTED)  // if selected  
                 SelectObject(hdcMem, hbm2);  
             else  
                 SelectObject(hdcMem, hbm1);     
             // Destination  
             StretchBlt(  
                 lpdis->hDC,         // destination DC  
                 lpdis->rcItem.left, // x upper left    
                 lpdis->rcItem.top,  // y upper left     
                 // The next two lines specify the width and  
                 // height.  
                 lpdis->rcItem.right - lpdis->rcItem.left,  
                 lpdis->rcItem.bottom - lpdis->rcItem.top,  
                 hdcMem,    // source device context  
                 0, 0,      // x and y upper left  
                 32,        // source bitmap width  
                 32,        // source bitmap height    
                 SRCCOPY);  // raster operation     
             DeleteDC(hdcMem);  
             return TRUE;     
         case WM_COMMAND:  
             if (wParam == IDOK  
                 || wParam == IDCANCEL) {  
                 EndDialog(hDlg, TRUE);  
                 return TRUE;  
             }  
             if (HIWORD(wParam) == BN_CLICKED) {  
                 switch (LOWORD(wParam)) {  
                     case IDB_OWNERDRAW:     
                     .  
                     . // application-defined processing    
                     .     
                     break;  
                 }  
             }  
             break;     
         case WM_DESTROY:  
             DeleteObject(hbm1);  // delete bitmaps  
             DeleteObject(hbm2);     
             break;     
     }  
     return FALSE;  
         UNREFERENCED_PARAMETER(lParam);  
 }  
 [/more] 
 тебе ничего переводить не надо, просто разберись.