--- np2/win9xc/dialog/dialogs.cpp 2003/10/16 17:59:29 1.1 +++ np2/win9xc/dialog/dialogs.cpp 2005/03/20 08:58:20 1.4 @@ -1,129 +1,114 @@ #include "compiler.h" #include "strres.h" +#include "bmpdata.h" #include "dosio.h" #include "commng.h" #include "sysmng.h" #include "dialogs.h" -static const char str_nc[] = "N/C"; +static const TCHAR str_nc[] = _T("N/C"); -static char pathname[MAX_PATH]; -static char filename[MAX_PATH]; - -const char str_int0[] = "INT0"; -const char str_int1[] = "INT1"; -const char str_int2[] = "INT2"; -const char str_int4[] = "INT4"; -const char str_int5[] = "INT5"; -const char str_int6[] = "INT6"; +const TCHAR str_int0[] = _T("INT0"); +const TCHAR str_int1[] = _T("INT1"); +const TCHAR str_int2[] = _T("INT2"); +const TCHAR str_int4[] = _T("INT4"); +const TCHAR str_int5[] = _T("INT5"); +const TCHAR str_int6[] = _T("INT6"); // ---- file select -const char *dlgs_selectfile(HWND hWnd, const FILESEL *item, - const char *defname, char *folder, UINT size, int *ro) { +BOOL dlgs_selectfile(HWND hWnd, const FILESEL *item, + TCHAR *path, UINT size, int *ro) { OPENFILENAME ofn; - if ((defname) && (defname[0])) { - milstr_ncpy(pathname, defname, sizeof(pathname)); - } - else if (folder) { - milstr_ncpy(pathname, folder, sizeof(pathname)); - } - else { - pathname[0] = '\0'; + if ((item == NULL) || (path == NULL) || (size == 0)) { + return(FALSE); } - filename[0] = '\0'; - ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.lpstrFilter = item->filter; ofn.nFilterIndex = item->defindex; - ofn.lpstrFile = pathname; - ofn.lpstrFileTitle = filename; - ofn.nMaxFile = MAX_PATH; + ofn.lpstrFile = path; + ofn.nMaxFile = size; ofn.Flags = OFN_FILEMUSTEXIST; ofn.lpstrDefExt = item->ext; ofn.lpstrTitle = item->title; if (!GetOpenFileName(&ofn)) { - return(NULL); - } - if (folder) { - milstr_ncpy(folder, pathname, size); - sysmng_update(SYS_UPDATEOSCFG); + return(FALSE); } if (ro) { *ro = ofn.Flags & OFN_READONLY; } - return(pathname); + return(TRUE); } -const char *dlgs_selectwritefile(HWND hWnd, const FILESEL *item, - const char *defname, char *folder, UINT size) { +BOOL dlgs_selectwritefile(HWND hWnd, const FILESEL *item, + TCHAR *path, UINT size) { OPENFILENAME ofn; - if (defname) { - milstr_ncpy(pathname, defname, sizeof(pathname)); + if ((item == NULL) || (path == NULL) || (size == 0)) { + return(FALSE); } - else { - pathname[0] = '\0'; - } - filename[0] = '\0'; - ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.lpstrFilter = item->filter; - ofn.lpstrFile = pathname; - ofn.lpstrFileTitle = filename; ofn.nFilterIndex = item->defindex; - ofn.nMaxFile = MAX_PATH; - ofn.nMaxFileTitle = sizeof(filename); + ofn.lpstrFile = path; + ofn.nMaxFile = size; ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; ofn.lpstrDefExt = item->ext; ofn.lpstrTitle = item->title; if (!GetSaveFileName(&ofn)) { - return(NULL); + return(FALSE); } - if (folder) { - milstr_ncpy(folder, pathname, size); - sysmng_update(SYS_UPDATEOSCFG); - } - return(pathname); + return(TRUE); } -const char *dlgs_selectwritenum(HWND hWnd, const FILESEL *item, - const char *defname, char *folder, UINT size) { +BOOL dlgs_selectwritenum(HWND hWnd, const FILESEL *item, + TCHAR *path, UINT size) { - char numfile[MAX_PATH]; - char *p; - int i; + TCHAR *file; + TCHAR *p; + TCHAR *q; + UINT i; + BOOL r; - if (folder) { - milstr_ncpy(numfile, folder, sizeof(numfile)); + if ((item == NULL) || (path == NULL) || (size == 0)) { + return(FALSE); } - else { - numfile[0] = '\0'; - } - file_cutname(numfile); - p = numfile + strlen(numfile); + file = (TCHAR *)_MALLOC((size + 16) * sizeof(TCHAR), path); + if (file == NULL) { + return(FALSE); + } + p = file_getname(path); + milstr_ncpy(file, path, size); + file_cutname(file); + q = file + lstrlen(file); + for (i=0; i<10000; i++) { - wsprintf(p, defname, i); - if (file_attr(numfile) == -1) { + wsprintf(q, p, i); + if (file_attr(file) == (short)-1) { break; } } - return(dlgs_selectwritefile(hWnd, item, numfile, folder, size)); + r = dlgs_selectwritefile(hWnd, item, file, size); + if (r) { + milstr_ncpy(path, file, size); + } + _MFREE(file); + return(r); } // ---- list -void dlgs_setliststr(HWND hWnd, WORD res, const char **item, UINT items) { +void dlgs_setliststr(HWND hWnd, UINT res, const TCHAR **item, UINT items) { HWND wnd; UINT i; @@ -134,11 +119,11 @@ void dlgs_setliststr(HWND hWnd, WORD res } } -void dlgs_setlistuint32(HWND hWnd, WORD res, const UINT32 *item, UINT items) { +void dlgs_setlistuint32(HWND hWnd, UINT res, const UINT32 *item, UINT items) { HWND wnd; UINT i; - char str[16]; + TCHAR str[16]; wnd = GetDlgItem(hWnd, res); for (i=0; ibfOffBits)), + bmpdata_getdatasize(bi)); + hmdc = CreateCompatibleDC(hdc); + SelectObject(hmdc, hbmp); + if (inf.height < 0) { + inf.height *= -1; + } + BitBlt(hdc, 0, 0, inf.width, inf.height, hmdc, 0, 0, SRCCOPY); + DeleteDC(hmdc); + DeleteObject(hbmp); - image += (x / 2) - y * align; - if (x & 1) { - while(l--) { - *image &= 0xf0; - *image |= c; - image -= align; - } - } - else { - c <<= 4; - while(l--) { - *image &= 0x0f; - *image |= c; - image -= align; - } - } -} - - -// ---- jumper - -void dlgs_setjumperx(BYTE *image, int x, int y, int align) { - - int i; - - x *= 9; - y *= 9; - for (i=0; i<2; i++) { - dlgs_linex(image, x, y+0+i, 19, align, 0); - dlgs_linex(image, x, y+8+i, 19, align, 0); - dlgs_liney(image, x+ 0+i, y, 9, align, 0); - dlgs_liney(image, x+17+i, y, 9, align, 0); - } -} - -void dlgs_setjumpery(BYTE *image, int x, int y, int align) { - - int i; - - x *= 9; - y *= 9; - for (i=0; i<2; i++) { - dlgs_linex(image, x, y+ 0+i, 9, align, 0); - dlgs_linex(image, x, y+17+i, 9, align, 0); - dlgs_liney(image, x+0+i, y, 19, align, 0); - dlgs_liney(image, x+8+i, y, 19, align, 0); - } +dsdb_err1: + _MFREE(bmp); }