void TAbsenceDlg::GetData(void) { GetDlgItemTextU8(ABSENCEHEAD_EDIT, tmpAbsenceHead[currentChoice], MAX_NAMEBUF); GetDlgItemTextU8(ABSENCE_EDIT, tmpAbsenceStr[currentChoice], MAX_PATH_U8); for (int cnt=0; cnt < cfg->AbsenceMax; cnt++) { strcpy(cfg->AbsenceHead[cnt], tmpAbsenceHead[cnt]); strcpy(cfg->AbsenceStr[cnt], tmpAbsenceStr[cnt]); } cfg->AbsenceChoice = currentChoice; }
BOOL TPasswordDlg::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hWndCtl) { switch (wID) { case IDOK: { char _buf[MAX_NAMEBUF]; char *buf = outbuf ? outbuf : _buf; GetDlgItemTextU8(PASSWORD_EDIT, buf, MAX_NAMEBUF); if (cfg) { if (CheckPassword(cfg->PasswordStr, buf)) EndDialog(TRUE); else SetDlgItemTextU8(PASSWORD_EDIT, ""), MessageBoxU8(GetLoadStrU8(IDS_CANTAUTH)); } else EndDialog(TRUE); } return TRUE; case IDCANCEL: EndDialog(FALSE); return TRUE; } return FALSE; }
/* Window 生成時の CallBack */ BOOL TAboutDlg::EvCreate(LPARAM lParam) { SetDlgIcon(hWnd); char buf[512], buf2[512]; GetDlgItemTextU8(ABOUT_TEXT, buf, sizeof(buf)); wsprintf(buf2, buf, GetVersionStr()); SetDlgItemTextU8(ABOUT_TEXT, buf2); if (rect.left == CW_USEDEFAULT) { GetWindowRect(&rect); int xsize = rect.right - rect.left, ysize = rect.bottom - rect.top; int cx = ::GetSystemMetrics(SM_CXFULLSCREEN), cy = ::GetSystemMetrics(SM_CYFULLSCREEN); int x = (cx - xsize)/2; int y = (cy - ysize)/2; MoveWindow((x < 0) ? 0 : x % (cx - xsize), (y < 0) ? 0 : y % (cy - ysize), xsize, ysize, FALSE); } else MoveWindow(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, FALSE); return TRUE; }
int TFindDlg::FilterHost() { char buf[MAX_NAMEBUF] = ""; GetDlgItemTextU8(FIND_COMBO, buf, sizeof(buf)); cfg->FindAll = SendDlgItemMessage(ALLFIND_CHECK, BM_GETCHECK, 0, 0); return sendDlg->FilterHost(buf); }
BOOL TSetupSheet::CheckData() { char buf[MAX_PATH_U8]; int val; if (resId == SETUP_SHEET3) { GetDlgItemTextU8(LRUUSER_EDIT, buf, sizeof(buf)); if ((val = atoi(buf)) > MAX_LRUUSER || val < 0) { MessageBox(FmtStr(GetLoadStr(IDS_TOOMANYLRU), MAX_LRUUSER)); return FALSE; } } else if (resId == SETUP_SHEET4) { GetDlgItemTextU8(LOG_EDIT, buf, sizeof(buf)); if (GetDriveType(NULL) == DRIVE_REMOTE && !SendDlgItemMessage(LOG_CHECK, BM_GETCHECK, 0, 0) && strchr(buf, '\\')) { MessageBox(GetLoadStr(IDS_LOGALERT)); return FALSE; } } else if (resId == SETUP_SHEET5) { char buf1[MAX_NAMEBUF], buf2[MAX_NAMEBUF], buf3[MAX_NAMEBUF]; GetDlgItemTextU8(OLDPASSWORD_EDIT, buf1, sizeof(buf1)); GetDlgItemTextU8(NEWPASSWORD_EDIT, buf2, sizeof(buf2)); GetDlgItemTextU8(NEWPASSWORD_EDIT2, buf3, sizeof(buf3)); if (strcmp(buf2, buf3) != 0) { MessageBoxU8(GetLoadStrU8(IDS_NOTSAMEPASS)); return FALSE; } if (!CheckPassword(cfg->PasswordStr, buf1)) { if (*buf1 || *buf2 || *buf3) { SetDlgItemTextU8(PASSWORD_EDIT, ""); MessageBoxU8(GetLoadStrU8(IDS_CANTAUTH)); return FALSE; } } } return TRUE; }
/* 一行入力 */ BOOL TInputDlg::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl) { switch (wID) { case IDOK: GetDlgItemTextU8(INPUT_EDIT, dirBuf, MAX_PATH_U8); EndDialog(wID); return TRUE; case IDCANCEL: EndDialog(wID); return TRUE; } return FALSE; }
BOOL TFindDlg::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hWndCtl) { switch (wID) { case IDOK: int cnt; GetDlgItemTextU8(FIND_COMBO, cfg->FindStr[0], MAX_NAMEBUF); cfg->FindAll = SendDlgItemMessage(ALLFIND_CHECK, BM_GETCHECK, 0, 0); if (sendDlg->FindHost(cfg->FindStr[0])) { for (cnt=1; cnt < cfg->FindMax; cnt++) { if (stricmp(cfg->FindStr[cnt], cfg->FindStr[0]) == 0) break; } memmove(cfg->FindStr[2], cfg->FindStr[1], (cnt == cfg->FindMax ? cnt-2 : cnt-1) * MAX_NAMEBUF); memcpy(cfg->FindStr[1], cfg->FindStr[0], MAX_NAMEBUF); DWORD start, end; // エディット部の選択状態の保存 SendDlgItemMessage(FIND_COMBO, CB_GETEDITSEL, (WPARAM)&start, (LPARAM)&end); // CB_RESETCONTENT でエディット部がクリア // なお、DELETESTRING でも edit 同名stringの場合、同じくクリアされる SendDlgItemMessage(FIND_COMBO, CB_RESETCONTENT, 0, 0); for (cnt=1; cnt < cfg->FindMax && cfg->FindStr[cnt][0]; cnt++) { Wstr find_w(cfg->FindStr[cnt], BY_UTF8); SendDlgItemMessageW(FIND_COMBO, CB_INSERTSTRING, cnt-1, (LPARAM)find_w.Buf()); } SetDlgItemTextU8(FIND_COMBO, cfg->FindStr[0]); SendDlgItemMessage(FIND_COMBO, CB_SETEDITSEL, 0, MAKELPARAM(start, end)); } cfg->WriteRegistry(CFG_FINDHIST); return TRUE; case IDCANCEL: case CLOSE_BUTTON: sendDlg->FilterHost(""); EndDialog(FALSE); return TRUE; case FIND_COMBO: if (wNotifyCode == CBN_EDITCHANGE) { FilterHost(); } else if (wNotifyCode == CBN_SELCHANGE) { PostMessage(WM_FINDDLG_DELAY, 0, 0); } return TRUE; } return FALSE; }
BOOL TUninstDlg::UnInstall(void) { // 現在、起動中の ipmsg を終了 int st = TerminateIPMsg(); if (st == 1) return FALSE; if (st == 2) { if (!IsWinVista() || TIsUserAnAdmin() || !TIsEnableUAC()) { MessageBox(GetLoadStr(IDS_CANTTERMINATE), UNINSTALL_STR); return FALSE; } if (MessageBox(GetLoadStr(IDS_REQUIREADMIN_TERM), "", MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; return RunAsAdmin(hWnd); } if (!runasWnd && MessageBox(GetLoadStr(IDS_START), UNINSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; // 公開鍵削除 if (IsDlgButtonChecked(DELPUBKEY_CHECK)) { BOOL need_admin = FALSE; char contName[MAX_PATH_U8], userName[MAX_PATH_U8]; DWORD size = sizeof(userName); ::GetUserName(userName, &size); ::wsprintf(contName, "ipmsg.rsa2048.%s", userName); if (!DeleteKeySet(MS_ENHANCED_PROV, contName, CRYPT_MACHINE_KEYSET) || !DeleteKeySet(MS_ENHANCED_PROV, contName, 0)) need_admin = TRUE; ::wsprintf(contName, "ipmsg.rsa1024.%s", userName); if (!DeleteKeySet(MS_ENHANCED_PROV, contName, CRYPT_MACHINE_KEYSET) || !DeleteKeySet(MS_ENHANCED_PROV, contName, 0)) need_admin = TRUE; ::wsprintf(contName, "ipmsg.rsa512.%s", userName); if (!DeleteKeySet(MS_DEF_PROV, contName, CRYPT_MACHINE_KEYSET) || !DeleteKeySet(MS_DEF_PROV, contName, 0)) need_admin = TRUE; if (need_admin) { if (IsWinVista() && !TIsUserAnAdmin() && TIsEnableUAC()) { if (MessageBox(GetLoadStr(IDS_REQUIREADMIN_PUBKEY), "", MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; return RunAsAdmin(hWnd); } } } // スタートアップ&デスクトップから削除 TRegistry reg(HKEY_CURRENT_USER); if (reg.OpenKey(REGSTR_SHELLFOLDERS)) { char buf[MAX_PATH_U8]; char *regStr[] = { REGSTR_STARTUP, REGSTR_PROGRAMS, REGSTR_DESKTOP, NULL }; for (int i=0; regStr[i]; i++) { if (reg.GetStr(regStr[i], buf, sizeof(buf))) { if (i == 0) RemoveSameLink(buf); ::wsprintf(buf + strlen(buf), "\\%s", IPMSG_SHORTCUT_NAME); DeleteLink(buf); } } reg.CloseKey(); } // レジストリからユーザー設定情報を削除 if (reg.ChangeApp(HSTOOLS_STR)) reg.DeleteChildTree(GetLoadStr(IDS_REGIPMSG)); // レジストリからアプリケーション情報を削除 char setupDir[MAX_PATH_U8]; // セットアップディレクトリ情報を保存 GetDlgItemTextU8(RESETUP_EDIT, setupDir, sizeof(setupDir)); reg.ChangeTopKey(HKEY_LOCAL_MACHINE); if (reg.OpenKey(REGSTR_PATH_APPPATHS)) { if (reg.OpenKey(IPMSG_EXENAME)) { reg.GetStr(REGSTR_PATH, setupDir, sizeof(setupDir)); reg.CloseKey(); } reg.DeleteKey(IPMSG_EXENAME); reg.CloseKey(); } // レジストリからアンインストール情報を削除 if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) { reg.DeleteKey(IPMSG_NAME); reg.CloseKey(); } // 終了メッセージ MessageBox(GetLoadStr(IDS_UNINSTCOMPLETE)); // インストールディレクトリを開く if (GetDriveTypeEx(setupDir) != DRIVE_REMOTE) ShellExecuteU8(NULL, NULL, setupDir, 0, 0, SW_SHOW); ::PostQuitMessage(0); return TRUE; }
BOOL TAbsenceDlg::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hWndCtl) { switch (wID) { case IDOK: GetData(); cfg->WriteRegistry(CFG_ABSENCE); cfg->AbsenceCheck = FALSE; ::PostMessage(GetMainWnd(), WM_COMMAND, MENU_ABSENCE, 0); EndDialog(TRUE); return TRUE; case SET_BUTTON: GetData(); cfg->WriteRegistry(CFG_ABSENCE); if (cfg->AbsenceCheck) { cfg->AbsenceCheck = FALSE; ::PostMessage(GetMainWnd(), WM_COMMAND, MENU_ABSENCE, 0); } EndDialog(FALSE); return TRUE; case IDCANCEL: EndDialog(FALSE); return TRUE; case ABSENCEINIT_BUTTON: SetDlgItemTextU8(ABSENCEHEAD_EDIT, DefaultAbsenceHead[currentChoice]); SetDlgItemTextU8(ABSENCE_EDIT, DefaultAbsence[currentChoice]); return TRUE; case HIDE_ACCEL: ::PostMessage(GetMainWnd(), WM_HIDE_CHILDWIN, 0, 0); return TRUE; case ABSENCE_LIST: if (wNotifyCode == LBN_SELCHANGE) { int index; if ((index = (int)SendDlgItemMessage(ABSENCE_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR) { char oldAbsenceHead[MAX_NAMEBUF]; strcpy(oldAbsenceHead, tmpAbsenceHead[currentChoice]); GetDlgItemTextU8(ABSENCEHEAD_EDIT, tmpAbsenceHead[currentChoice], MAX_NAMEBUF); GetDlgItemTextU8(ABSENCE_EDIT, tmpAbsenceStr[currentChoice], MAX_PATH_U8); if (strcmp(oldAbsenceHead, tmpAbsenceHead[currentChoice])) { SendDlgItemMessage(ABSENCE_LIST, LB_DELETESTRING, currentChoice, 0); Wstr head_w(tmpAbsenceHead[currentChoice], BY_UTF8); SendDlgItemMessageW(ABSENCE_LIST, LB_INSERTSTRING, currentChoice, (LPARAM)head_w.Buf()); if (currentChoice == index) { SendDlgItemMessage(ABSENCE_LIST, LB_SETCURSEL, currentChoice, 0); return TRUE; } } currentChoice = index; PostMessage(WM_DELAYSETTEXT, 0, 0); } } else if (wNotifyCode == LBN_DBLCLK) PostMessage(WM_COMMAND, IDOK, 0); return TRUE; } return FALSE; }
BOOL TInstDlg::Install(void) { char buf[MAX_PATH_U8], setupDir[MAX_PATH_U8], setupPath[MAX_PATH_U8]; char installPath[MAX_PATH_U8]; BOOL extract_only = IsDlgButtonChecked(EXTRACT_CHECK); // 現在、起動中の ipmsg を終了 int st = extract_only ? 0 : TerminateIPMsg(); if (st == 1) return FALSE; // インストールパス設定 GetDlgItemTextU8(FILE_EDIT, setupDir, sizeof(setupDir)); if (IsWinVista() && !::IsUserAnAdmin() && TIsEnableUAC() && TIsVirtualizedDirW(U8toWs(setupDir))) { if (MessageBox(GetLoadStr(IDS_REQUIREADMIN), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; return RunAsAdmin(hWnd, TRUE); } CreateDirectoryU8(setupDir, NULL); DWORD attr = GetFileAttributesU8(setupDir); if (attr == 0xffffffff || (attr & FILE_ATTRIBUTE_DIRECTORY) == 0) return MessageBox(GetLoadStr(IDS_NOTCREATEDIR), INSTALL_STR), FALSE; MakePath(setupPath, setupDir, IPMSG_EXENAME); if (st == 2) { MessageBox(GetLoadStr(IDS_CANTTERMINATE), INSTALL_STR); return FALSE; } if (!runasImm && MessageBox(GetLoadStr(IDS_START), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) { return FALSE; } runasImm = FALSE; // ファイル生成 for (int i=0; SetupFiles[i]; i++) { MakePath(installPath, setupDir, SetupFiles[i]); CreateStatus cs = CreateFileBySelf(installPath, SetupFiles[i]); if (cs == CS_BROKEN) { MessageBox(GetLoadStr(IDS_BROKENARCHIVE), INSTALL_STR); return FALSE; } else if (cs == CS_ACCESS) { const char *msg = Fmt("%s\r\n%s", GetLoadStrU8(IDS_NOTCREATEFILE), installPath); MessageBoxU8(msg, INSTALL_STR); return FALSE; } } // 展開のみ if (extract_only) { ShellExecuteW(NULL, NULL, U8toWs(setupDir), 0, 0, SW_SHOW); return TRUE; } // スタートアップ&デスクトップに登録 TRegistry reg(HKEY_CURRENT_USER); if (reg.OpenKey(REGSTR_SHELLFOLDERS)) { char *regStr[] = { REGSTR_STARTUP, REGSTR_PROGRAMS, REGSTR_DESKTOP, NULL }; BOOL resId[] = { STARTUP_CHECK, PROGRAM_CHECK, DESKTOP_CHECK, NULL }; for (int i=0; regStr[i]; i++) { if (reg.GetStr(regStr[i], buf, sizeof(buf))) { if (i != 0 || !RemoveSameLink(buf, buf)) ::wsprintf(buf + strlen(buf), "\\%s", IPMSG_SHORTCUT_NAME); if (IsDlgButtonChecked(resId[i])) SymLink(setupPath, buf); else DeleteLink(buf); } } reg.CloseKey(); } // レジストリにアプリケーション情報を登録 reg.ChangeTopKey(HKEY_LOCAL_MACHINE); if (reg.OpenKey(REGSTR_PATH_APPPATHS)) { if (reg.CreateKey(IPMSG_EXENAME)) { reg.SetStr(NULL, setupPath); reg.SetStr(REGSTR_PATH, setupDir); reg.CloseKey(); } reg.CloseKey(); } // レジストリにアンインストール情報を登録 if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) { if (reg.CreateKey(IPMSG_NAME)) { MakePath(buf, setupDir, SETUP_EXENAME); strcat(buf, " /r"); reg.SetStr(REGSTR_VAL_UNINSTALLER_DISPLAYNAME, IPMSG_FULLNAME); reg.SetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, buf); reg.CloseKey(); } reg.CloseKey(); } // コピーしたアプリケーションを起動 const char *msg = GetLoadStr(IDS_SETUPCOMPLETE); int flg = MB_OKCANCEL|MB_ICONINFORMATION; // if (IsWinVista() && ::IsUserAnAdmin() && TIsEnableUAC()) { // msg = Fmt("%s%s", msg, GetLoadStr(IDS_COMPLETE_UACADD)); // flg |= MB_DEFBUTTON2; // } TLaunchDlg dlg(msg, this); if (dlg.Exec() == IDOK) { if (runasWnd) { Wstr wbuf(setupDir); if (::SendDlgItemMessageW(runasWnd, FILE_EDIT, WM_SETTEXT, 0, (LPARAM)wbuf.Buf())) { ::PostMessage(runasWnd, WM_IPMSG_QUIT, 1, 0); runasWnd = NULL; } } else { AppKick(); } } else { HWND hHelp = ShowHelpU8(0, setupDir, GetLoadStrU8(IDS_IPMSGHELP), "#history"); if (hHelp) { Show(SW_HIDE); while (::IsWindow(hHelp)) { this->Sleep(100); } } } if (runasWnd) { ::PostMessage(runasWnd, WM_IPMSG_QUIT, 0, 0); runasWnd = NULL; } // ShellExecuteU8(NULL, NULL, setupDir, 0, 0, SW_SHOW); ::PostQuitMessage(0); return TRUE; }
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; }
BOOL TSetupSheet::GetData() { char buf[MAX_PATH_U8]; int i; if (resId == SETUP_SHEET1) { BOOL need_broadcast = FALSE; GetDlgItemTextU8(NICKNAME_EDIT, buf, MAX_NAMEBUF); if (strcmp(cfg->NickNameStr, buf)) { need_broadcast = TRUE; strcpy(cfg->NickNameStr, buf); } GetDlgItemTextU8(GROUP_COMBO, buf, MAX_NAMEBUF); if (strcmp(cfg->GroupNameStr, buf)) { need_broadcast = TRUE; strcpy(cfg->GroupNameStr, buf); } if (need_broadcast) { ::PostMessage(GetMainWnd(), WM_IPMSG_BRNOTIFY, 0, IPMSG_DEFAULT_PORT); } if (SendDlgItemMessage(CLIPMODE_CHECK, BM_GETCHECK, 0, 0)) { cfg->ClipMode |= CLIP_ENABLE; } else { cfg->ClipMode &= ~CLIP_ENABLE; } if (SendDlgItemMessage(CLIPCONFIRM_CHECK, BM_GETCHECK, 0, 0)) { cfg->ClipMode |= CLIP_CONFIRM; } else { cfg->ClipMode &= ~CLIP_CONFIRM; } cfg->brList.Reset(); for (i=0; SendDlgItemMessage(BROADCAST_LIST, LB_GETTEXT, i, (LPARAM)buf) != LB_ERR; i++) cfg->brList.SetHostRaw(buf, ResolveAddr(buf)); cfg->DialUpCheck = (int)SendDlgItemMessage(DIALUP_CHECK, BM_GETCHECK, 0, 0); } else if (resId == SETUP_SHEET2) { cfg->BalloonNotify = (int)SendDlgItemMessage(BALLOONNOTIFY_CHECK, BM_GETCHECK, 0, 0); cfg->OpenCheck = (int)SendDlgItemMessage(OPEN_COMBO, CB_GETCURSEL, 0, 0); // cfg->OpenCheck = (int)SendDlgItemMessage(OPEN_CHECK, BM_GETCHECK, 0, 0); GetDlgItemTextU8(QUOTE_EDIT, cfg->QuoteStr, sizeof(cfg->QuoteStr)); cfg->HotKeyCheck = (int)SendDlgItemMessage(HOTKEY_CHECK, BM_GETCHECK, 0, 0); cfg->AbnormalButton = (int)SendDlgItemMessage(ABNORMALBTN_CHECK, BM_GETCHECK, 0, 0); if (::IsWindowEnabled(GetDlgItem(LCID_CHECK))) { cfg->lcid = IsDlgButtonChecked(LCID_CHECK) ? 0x409 : -1; } cfg->ExtendBroadcast = (int)SendDlgItemMessage(EXTBROADCAST_COMBO, CB_GETCURSEL, 0, 0); GetDlgItemTextU8(MAINICON_EDIT, cfg->IconFile, sizeof(cfg->IconFile)); GetDlgItemTextU8(REVICON_EDIT, cfg->RevIconFile, sizeof(cfg->RevIconFile)); ::SendMessage(GetMainWnd(), WM_IPMSG_INITICON, 0, 0); SetDlgIcon(hWnd); SetHotKey(cfg); } else if (resId == SETUP_SHEET3) { cfg->QuoteCheck = (int)SendDlgItemMessage(QUOTE_CHECK, BM_GETCHECK, 0, 0); cfg->SecretCheck = (int)SendDlgItemMessage(SECRET_CHECK, BM_GETCHECK, 0, 0); cfg->OneClickPopup = (int)SendDlgItemMessage(ONECLICK_CHECK, BM_GETCHECK, 0, 0); GetDlgItemTextU8(LRUUSER_EDIT, buf, sizeof(buf)); cfg->lruUserMax = atoi(buf); // ControlIME ... 0:off, 1:senddlg on (finddlg:off), 2:always on cfg->ControlIME = (int)SendDlgItemMessage(CONTROLIME_CHECK, BM_GETCHECK, 0, 0); if (cfg->ControlIME && SendDlgItemMessage(FINDDLGIME_CHECK, BM_GETCHECK, 0, 0) == 0) { cfg->ControlIME = 2; } cfg->NoPopupCheck = (int)SendDlgItemMessage(NOPOPUP_CHECK, BM_GETCHECK, 0, 0); cfg->NoBeep = (int)SendDlgItemMessage(NOBEEP_CHECK, BM_GETCHECK, 0, 0); cfg->AbsenceNonPopup = (int)SendDlgItemMessage(ABSENCENONPOPUP_CHECK, BM_GETCHECK, 0, 0); cfg->RecvLogonDisp = (int)SendDlgItemMessage(RECVLOGON_CHECK, BM_GETCHECK, 0, 0); cfg->RecvIPAddr = (int)SendDlgItemMessage(RECVIPADDR_CHECK, BM_GETCHECK, 0, 0); cfg->NoErase = (int)SendDlgItemMessage(NOERASE_CHECK, BM_GETCHECK, 0, 0); GetDlgItemTextU8(SOUND_EDIT, cfg->SoundFile, sizeof(cfg->SoundFile)); } else if (resId == SETUP_SHEET4) { cfg->LogCheck = (int)SendDlgItemMessage(LOG_CHECK, BM_GETCHECK, 0, 0); cfg->LogonLog = (int)SendDlgItemMessage(LOGONLOG_CHECK, BM_GETCHECK, 0, 0); cfg->IPAddrCheck = (int)SendDlgItemMessage(IPADDR_CHECK, BM_GETCHECK, 0, 0); if (SendDlgItemMessage(IMAGESAVE_CHECK, BM_GETCHECK, 0, 0)) { cfg->ClipMode |= 2; } else { cfg->ClipMode &= ~2; } cfg->LogUTF8 = (int)SendDlgItemMessage(LOGUTF8_CHECK, BM_GETCHECK, 0, 0); cfg->PasswdLogCheck = (int)SendDlgItemMessage(PASSWDLOG_CHECK, BM_GETCHECK, 0, 0); GetDlgItemTextU8(LOG_EDIT, cfg->LogFile, sizeof(cfg->LogFile)); if (cfg->LogCheck) LogMng::StrictLogFile(cfg->LogFile); } else if (resId == SETUP_SHEET5) { char buf[MAX_NAMEBUF]; GetDlgItemTextU8(OLDPASSWORD_EDIT, buf, sizeof(buf)); if (CheckPassword(cfg->PasswordStr, buf)) { GetDlgItemTextU8(NEWPASSWORD_EDIT, buf, sizeof(buf)); MakePassword(buf, cfg->PasswordStr); } } else if (resId == SETUP_SHEET6) { cfg->DefaultUrl = (int)SendDlgItemMessage(DEFAULTURL_CHECK, BM_GETCHECK, 0, 0); for (UrlObj *tmp_obj = (UrlObj *)tmpUrlList.TopObj(); tmp_obj; tmp_obj = (UrlObj *)tmpUrlList.NextObj(tmp_obj)) { UrlObj *obj = SearchUrlObj(&cfg->urlList, tmp_obj->protocol); if (!obj) { obj = new UrlObj; cfg->urlList.AddObj(obj); strcpy(obj->protocol, tmp_obj->protocol); } strcpy(obj->program, tmp_obj->program); } cfg->ShellExec = (int)SendDlgItemMessage(SHELLEXEC_CHECK, BM_GETCHECK, 0, 0); } return TRUE; }
BOOL TRecvDlg::EvCreate(LPARAM lParam) { editSub.AttachWnd(GetDlgItem(RECV_EDIT)); editSub.SendMessage(EM_AUTOURLDETECT, 1, 0); editSub.SendMessage(EM_SETBKGNDCOLOR, FALSE, ::GetSysColor(COLOR_3DFACE)); editSub.SendMessage(EM_SETTARGETDEVICE, 0, 0); // 折り返し SetDlgIcon(hWnd); SetDlgItemTextU8(RECV_HEAD, head); if (msg.command & IPMSG_BROADCASTOPT) SetDlgItemTextU8(RECV_TITLE, GetLoadStrU8(IDS_BROADCAST)); else if (msg.command & IPMSG_MULTICASTOPT) SetDlgItemTextU8(RECV_TITLE, GetLoadStrU8(IDS_MULTICAST)); else SetDlgItemTextU8(RECV_TITLE, GetLoadStrU8(IDS_UNICAST)); if (msg.command & IPMSG_AUTORETOPT) SetDlgItemTextU8(RECV_TITLE, GetLoadStrU8(IDS_UNIABSENCE)); char buf[MAX_LISTBUF]; if (msg.command & IPMSG_ENCRYPTOPT) { GetWindowText(buf, sizeof(buf)); strcat(buf, (cryptCapa & IPMSG_BLOWFISH_128) ? " +" : " -"); SetWindowText(buf); } wsprintf(head, "at %s", Ctime(&recvTime)); SetDlgItemTextU8(RECV_HEAD2, head); editSub.ExSetText(msg.msgBuf); if (msg.command & IPMSG_SECRETOPT) editSub.ShowWindow(SW_HIDE), ::ShowWindow(GetDlgItem(QUOTE_CHECK), SW_HIDE); else { ::ShowWindow(GetDlgItem(OPEN_BUTTON), SW_HIDE), openFlg = TRUE; if (shareInfo) SetFileButton(this, FILE_BUTTON, shareInfo); } if (msg.command & IPMSG_FILEATTACHOPT) { GetDlgItemTextU8(OPEN_BUTTON, buf, sizeof(buf)); strcat(buf, " "); strcat(buf, GetLoadStrU8(IDS_FILEATTACH)); SetDlgItemTextU8(OPEN_BUTTON, buf); } if (msg.command & IPMSG_PASSWORDOPT) { GetDlgItemTextU8(OPEN_BUTTON, buf, sizeof(buf)); strcat(buf, GetLoadStrU8(IDS_KEYOPEN)); SetDlgItemTextU8(OPEN_BUTTON, buf); } if (cfg->QuoteCheck) SendDlgItemMessage(QUOTE_CHECK, BM_SETCHECK, cfg->QuoteCheck, 0); if (cfg->AbnormalButton) SetDlgItemTextU8(IDOK, GetLoadStrU8(IDS_INTERCEPT)); SetFont(); SetSize(); HMENU hMenu = ::GetSystemMenu(hWnd, FALSE); AppendMenuU8(hMenu, MF_SEPARATOR, NULL, NULL); SetMainMenu(hMenu); if (IsNewShell() != TRUE) { ULONG style = GetWindowLong(GWL_STYLE); style &= 0xffffff0f; style |= 0x00000080; SetWindowLong(GWL_STYLE, style); } SetForegroundWindow(); if (msg.command & IPMSG_NOADDLISTOPT) ::EnableWindow(GetDlgItem(IDOK), FALSE); EvSize(SIZE_RESTORED, 0, 0); return TRUE; }