BOOL OpenFileDlg::Exec(char *target, int targ_size, char *title, char *filter, char *defaultDir, char *defaultExt) { if (targ_size <= 1) return FALSE; OPENFILENAME ofn; U8str fileName(targ_size); U8str dirName(targ_size); char *fname = NULL; if (*target && GetFullPathNameU8(target, targ_size, dirName.Buf(), &fname) != 0 && fname) { *(fname -1) = 0; strncpyz(fileName.Buf(), fname, targ_size); } else if (defaultDir) { strncpyz(dirName.Buf(), defaultDir, targ_size); } memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = parent ? parent->hWnd : NULL; ofn.lpstrFilter = filter; ofn.nFilterIndex = filter ? 1 : 0; ofn.lpstrFile = fileName.Buf(); ofn.lpstrDefExt = defaultExt; ofn.nMaxFile = targ_size; ofn.lpstrTitle = title; ofn.lpstrInitialDir = dirName.Buf(); ofn.lpfnHook = hook; ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|(hook ? OFN_ENABLEHOOK : 0); if (mode == OPEN || mode == MULTI_OPEN) ofn.Flags |= OFN_FILEMUSTEXIST | (mode == MULTI_OPEN ? OFN_ALLOWMULTISELECT : 0); else ofn.Flags |= (mode == NODEREF_SAVE ? OFN_NODEREFERENCELINKS : 0); ofn.Flags |= flags; U8str dirNameBak(targ_size); GetCurrentDirectoryU8(targ_size, dirNameBak.Buf()); BOOL ret = (mode == OPEN || mode == MULTI_OPEN) ? GetOpenFileNameU8(&ofn) : GetSaveFileNameU8(&ofn); SetCurrentDirectoryU8(dirNameBak.Buf()); if (ret) { if (mode == MULTI_OPEN) { memcpy(target, fileName.Buf(), targ_size); } else { strncpyz(target, ofn.lpstrFile, targ_size); } if (defaultDir) strncpyz(defaultDir, ofn.lpstrFile, ofn.nFileOffset); } return ret; }
BOOL OpenFileDlg::Exec(char *target, char *title, char *filter, char *defaultDir) { OPENFILENAME ofn; char szDirName[MAX_BUF_EX] = "", szFile[MAX_BUF_EX] = "", *fname = NULL; if (*target && GetFullPathNameU8(target, MAX_BUF, szDirName, &fname) != 0 && fname) *(fname -1) = 0, strncpyz(szFile, fname, MAX_PATH_U8); else if (defaultDir) strncpyz(szDirName, defaultDir, MAX_PATH_U8); memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = parent ? parent->hWnd : NULL; ofn.lpstrFilter = filter; ofn.nFilterIndex = filter ? 1 : 0; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrTitle = title; ofn.lpstrInitialDir = szDirName; ofn.lpfnHook = hook; ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|(hook ? OFN_ENABLEHOOK : 0); if (mode == OPEN || mode == MULTI_OPEN) ofn.Flags |= OFN_FILEMUSTEXIST | (mode == MULTI_OPEN ? OFN_ALLOWMULTISELECT : 0); else ofn.Flags |= (mode == NODEREF_SAVE ? OFN_NODEREFERENCELINKS : 0); char dirNameBak[MAX_PATH_U8]; GetCurrentDirectoryU8(sizeof(dirNameBak), dirNameBak); BOOL ret = (mode == OPEN || mode == MULTI_OPEN) ? GetOpenFileNameU8(&ofn) : GetSaveFileNameU8(&ofn); SetCurrentDirectoryU8(dirNameBak); if (ret) { if (mode == MULTI_OPEN) memcpy(target, szFile, sizeof(szFile)); else strncpyz(target, ofn.lpstrFile, MAX_PATH_U8); if (defaultDir) strncpyz(defaultDir, ofn.lpstrFile, ofn.nFileOffset); } return ret; }
BOOL TSetupSheet::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hWndCtl) { char buf[MAX_PATH_U8] = "", buf2[MAX_PATH_U8] = "", protocol[MAX_LISTBUF] = ""; int i; UrlObj *obj; if (resId == SETUP_SHEET1) { switch (wID) { case ADD_BUTTON: if (GetDlgItemText(BROADCAST_EDIT, buf, sizeof(buf)) <= 0) return TRUE; if (ResolveAddr(buf) == 0) return MessageBox(GetLoadStr(IDS_CANTRESOLVE)), TRUE; for (i=0; SendDlgItemMessage(BROADCAST_LIST, LB_GETTEXT, i, (LPARAM)buf2) != LB_ERR; i++) { if (stricmp(buf, buf2) == 0) return TRUE; } SendDlgItemMessage(BROADCAST_LIST, LB_ADDSTRING, 0, (LPARAM)buf); SetDlgItemText(BROADCAST_EDIT, ""); return TRUE; case DEL_BUTTON: while ((int)SendDlgItemMessage(BROADCAST_LIST, LB_GETSELCOUNT, 0, 0) > 0) { if (SendDlgItemMessage(BROADCAST_LIST, LB_GETSELITEMS, 1, (LPARAM)&i) != 1) break; SendDlgItemMessage(BROADCAST_LIST, LB_GETTEXT, (WPARAM)i, (LPARAM)buf); SetDlgItemText(BROADCAST_EDIT, buf); if (SendDlgItemMessage(BROADCAST_LIST, LB_DELETESTRING, (WPARAM)i, (LPARAM)buf) == LB_ERR) break; } return TRUE; } } else if (resId == SETUP_SHEET2) { switch (wID) { case MAINICON_BUTTON: case REVICON_BUTTON: OpenFileDlg(this).Exec(wID == MAINICON_BUTTON ? MAINICON_EDIT : REVICON_EDIT, GetLoadStrU8(IDS_OPENFILEICON), GetLoadStrAsFilterU8(IDS_OPENFILEICONFLTR)); return TRUE; } } else if (resId == SETUP_SHEET3) { switch (wID) { case SENDDETAIL_BUTTON: { TSortDlg(cfg, this).Exec(); return TRUE; } case SOUNDFILE_BUTTON: GetWindowsDirectoryU8(buf, sizeof(buf)); strcat(buf, "\\Media"); GetCurrentDirectoryU8(sizeof(buf2), buf2); OpenFileDlg(this).Exec(SOUND_EDIT, GetLoadStrU8(IDS_OPENFILESND), GetLoadStrAsFilterU8(IDS_OPENFILESNDFLTR), buf); SetCurrentDirectoryU8(buf2); return TRUE; case SOUNDPLAY_BUTTON: if (GetDlgItemTextU8(SOUND_EDIT, buf, sizeof(buf)) > 0) { PlaySoundU8(buf, 0, SND_FILENAME|SND_ASYNC); } return TRUE; } } else if (resId == SETUP_SHEET4) { switch (wID) { case LOGFILE_BUTTON: OpenFileDlg(this, OpenFileDlg::SAVE).Exec(LOG_EDIT, GetLoadStrU8(IDS_OPENFILELOG), GetLoadStrAsFilterU8(IDS_OPENFILELOGFLTR)); return TRUE; } } else if (resId == SETUP_SHEET6) { switch (wID) { case ADD_BUTTON: if ((i = (int)SendDlgItemMessage(URL_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR && SendDlgItemMessage(URL_LIST, LB_GETTEXT, (WPARAM)i, (LPARAM)protocol) != LB_ERR && (obj = SearchUrlObj(&tmpUrlList, protocol))) { wsprintf(buf, GetLoadStrU8(IDS_EXECPROGRAM), protocol); OpenFileDlg(this).Exec(URL_EDIT, buf, GetLoadStrAsFilterU8(IDS_OPENFILEPRGFLTR)); } return TRUE; case URL_LIST: if ((i = (int)SendDlgItemMessage(URL_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR && SendDlgItemMessage(URL_LIST, LB_GETTEXT, (WPARAM)i, (LPARAM)protocol) != LB_ERR && (obj = SearchUrlObj(&tmpUrlList, protocol))) { SetDlgItemTextU8(URL_EDIT, obj->program); } return TRUE; } } return FALSE; }