Diff for /np2/win9xc/dialog/d_mpu98.cpp between versions 1.1 and 1.2

version 1.1, 2003/10/16 17:59:24 version 1.2, 2003/11/21 06:51:15
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "resource.h"  
 #include        "strres.h"  #include        "strres.h"
   #include        "resource.h"
 #include        "np2.h"  #include        "np2.h"
 #include        "commng.h"  #include        "commng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
 #include        "pccore.h"  
 #include        "bit2res.h"  
 #include        "dialog.h"  #include        "dialog.h"
 #include        "dialogs.h"  #include        "dialogs.h"
   #include        "pccore.h"
   #include        "dipswbmp.h"
   
   
 #ifdef __cplusplus  #ifdef __cplusplus
Line 22  extern COMMNG cm_mpu98; Line 22  extern COMMNG cm_mpu98;
   
 static const char *mpuinterrupt[4] = {str_int0, str_int1, str_int2, str_int5};  static const char *mpuinterrupt[4] = {str_int0, str_int1, str_int2, str_int5};
   
 static  BYTE                    mpu = 0;  static  BYTE    mpu = 0;
 static  SUBCLASSPROC    oldidc_mpujmp = NULL;  
   
   
 static void setmpuiopara(HWND hWnd, WORD res, BYTE value) {  static void setmpuiopara(HWND hWnd, WORD res, BYTE value) {
Line 68  static void setmpujmp(HWND hWnd, BYTE va Line 67  static void setmpujmp(HWND hWnd, BYTE va
         }          }
 }  }
   
 static void setmpuiodip(BYTE *image, int px, int py, int align, BYTE v) {  
   
         int             i, j, y;  // ----
   
   static void mpucreate(HWND hWnd) {
   
         px *= 9;          UINT    i;
         px++;          char    buf[8];
         py *= 9;          HWND    sub;
         for (i=0; i<4; i++, px+=9, v<<=1) {  
                 y = py + ((v&0x80)?5:9);          mpu = np2cfg.mpuopt;
                 for (j=0; j<3; j++) {          for (i=0; i<16; i++) {
                         dlgs_linex(image, px, y+j, 7, align, 2);                  wsprintf(buf, str_4X, 0xC0D0 + (i << 10));
                 }                  SendDlgItemMessage(hWnd, IDC_MPUIO,
                                                                           CB_INSERTSTRING, (WPARAM)i, (LPARAM)buf);
         }          }
 }          setmpuiopara(hWnd, IDC_MPUIO, mpu);
           SETLISTSTR(hWnd, IDC_MPUINT, mpuinterrupt);
           setmpuintpara(hWnd, IDC_MPUINT, mpu);
   
 static void setmpuintdip(BYTE *image, int px, int py, int align, BYTE v) {          // SS_OWNERDRAWにすると IDEで不都合が出るので…
           sub = GetDlgItem(hWnd, IDC_MPUDIP);
           SetWindowLong(sub, GWL_STYLE, SS_OWNERDRAW +
                                                           (GetWindowLong(sub, GWL_STYLE) & (~SS_TYPEMASK)));
   
         dlgs_setjumpery(image, px + 3 - (mpu & 3), py, align);          SetFocus(GetDlgItem(hWnd, IDC_MPUIO));
 }  }
   
 static LRESULT CALLBACK mpujmp(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {  static void mpuupdate(HWND hWnd) {
   
         PAINTSTRUCT     ps;  
         HDC                     hdc;  
         HBITMAP         hBitmap;  
         HDC                     hMemDC;  
         BYTE            *image;  
         HANDLE          hwork;  
         BITMAPINFO      *work;  
         BYTE            *imgbtm;  
         int                     align;  
   
         switch(msg) {  
                 case WM_PAINT:  
                         hdc = BeginPaint(hWnd, &ps);  
                         if ((hwork = GlobalAlloc(GPTR, bit2res_getsize(&mpudip)))  
                                                                                                                                 == NULL) {  
                                 break;  
                         }  
                         if ((work = (BITMAPINFO *)GlobalLock(hwork)) == NULL) {  
                                 GlobalFree(hwork);  
                                 break;  
                         }  
                         bit2res_sethead(work, &mpudip);  
                         hBitmap = CreateDIBSection(hdc, work, DIB_RGB_COLORS,  
                                                                                                 (void **)&image, NULL, 0);  
                         bit2res_setdata(image, &mpudip);  
                         align = ((mpudip.x + 7) / 2) & ~3;  
                         imgbtm = image + align * (mpudip.y - 1);  
                         setmpuiodip(imgbtm, 2, 1, align, mpu);  
                         setmpuintdip(imgbtm, 9, 1, align, mpu);  
                         if ((hMemDC = CreateCompatibleDC(hdc)) != NULL) {  
                                 SelectObject(hMemDC, hBitmap);  
                                 StretchBlt(hdc, 0, 0, mpudip.x, mpudip.y, hMemDC,  
                                                                         0, 0, mpudip.x, mpudip.y, SRCCOPY);  
                                 DeleteDC(hMemDC);  
                         }  
                         DeleteObject(hBitmap);  
                         EndPaint(hWnd, &ps);  
                         GlobalUnlock(hwork);  
                         GlobalFree(hwork);  
                         break;  
                 default:  
                         return(CallWindowProc(oldidc_mpujmp, hWnd, msg, wp, lp));  
         }  
         return(FALSE);  
 }  
   
 static void updatempu(HWND hWnd) {  
   
         UINT    update;          UINT    update;
   
Line 151  static void updatempu(HWND hWnd) { Line 109  static void updatempu(HWND hWnd) {
 LRESULT CALLBACK MidiDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {  LRESULT CALLBACK MidiDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
   
         BYTE    b, bit;          BYTE    b, bit;
         int             i;  
         RECT    rect1;          RECT    rect1;
         RECT    rect2;          RECT    rect2;
         POINT   p;          POINT   p;
   
         switch(msg) {          switch(msg) {
                 case WM_INITDIALOG:                  case WM_INITDIALOG:
                         mpu = np2cfg.mpuopt;                          mpucreate(hWnd);
                         for (i=0; i<16; i++) {  
                                 char buf[8];  
                                 wsprintf(buf, str_4X, 0xC0D0 + (i << 10));  
                                 SendDlgItemMessage(hWnd, IDC_MPUIO,  
                                                                         CB_INSERTSTRING, (WPARAM)i, (LPARAM)buf);  
                         }  
                         setmpuiopara(hWnd, IDC_MPUIO, mpu);  
                         SETLISTSTR(hWnd, IDC_MPUINT, mpuinterrupt);  
                         setmpuintpara(hWnd, IDC_MPUINT, mpu);  
   
                         oldidc_mpujmp = (SUBCLASSPROC)GetWindowLong(GetDlgItem(hWnd,  
                                                                                                 IDC_MPUDIP), GWL_WNDPROC);  
                         SetWindowLong(GetDlgItem(hWnd, IDC_MPUDIP), GWL_WNDPROC,  
                                                                                                         (LONG)mpujmp);  
                         SetFocus(GetDlgItem(hWnd, IDC_MPUIO));                                  // ver0.30  
                         return(FALSE);                          return(FALSE);
   
                 case WM_COMMAND:                  case WM_COMMAND:
                         switch(LOWORD(wp)) {                          switch(LOWORD(wp)) {
                                 case IDOK:                                  case IDOK:
                                         updatempu(hWnd);                                          mpuupdate(hWnd);
                                         EndDialog(hWnd, IDOK);                                          EndDialog(hWnd, IDOK);
                                         break;                                          break;
   
Line 234  LRESULT CALLBACK MidiDialogProc(HWND hWn Line 176  LRESULT CALLBACK MidiDialogProc(HWND hWn
                         }                          }
                         break;                          break;
   
                   case WM_DRAWITEM:
                           if (LOWORD(wp) == IDC_MPUDIP) {
                                   dlgs_drawbmp(((LPDRAWITEMSTRUCT)lp)->hDC,
                                                                                                           dipswbmp_getmpu(mpu));
                           }
                           return(FALSE);
   
                 case WM_CLOSE:                  case WM_CLOSE:
                         PostMessage(hWnd, WM_COMMAND, IDCANCEL, 0);                          PostMessage(hWnd, WM_COMMAND, IDCANCEL, 0);
                         break;                          break;

Removed from v.1.1  
changed lines
  Added in v.1.2


RetroPC.NET-CVS <cvs@retropc.net>