static BOOL CALLBACK DlgProcOptsQun(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CNetwork* network=(CNetwork*)GetWindowLong(GetParent(hwndDlg),GWL_USERDATA); switch (msg) { case WM_INITDIALOG: // Options dialog is being initialized { TranslateDialogDefault(hwndDlg); if (network) { // Check Options CHECK_CONTROL(IDC_SUPPRESSQUN,QQ_SUPPRESSQUNMSG); //CHECK_CONTROL(IDC_NEWCHAT,QQ_NEWCHAT); CHECK_CONTROL(IDC_ADDQUNNUMBER,QQ_ADDQUNNUMBER); CHECK_CONTROL(IDC_NOLOADQUNIMAGE,QQ_NOLOADQUNIMAGE); CHECK_CONTROL(IDC_NOSILENTQUNHISTORY,QQ_NOSILENTQUNHISTORY); } return TRUE; } case WM_COMMAND: // When a control is toggled SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: // When a notify is sent by Options Dialog (Property Sheet) if (network) { switch (((LPNMHDR)lParam)->code) case PSN_APPLY: // Apply Settings/ネキ。ヲノ靹テ { int reconnectRequired=0; // Check Options/シ・簷。マ・ CHECK_BYTE_SETTING(QQ_SUPPRESSQUNMSG,IDC_SUPPRESSQUN); WRITE_CHECK_SETTING(QQ_SUPPRESSQUNMSG,IDC_SUPPRESSQUN); //CHECK_BYTE_SETTING(QQ_NEWCHAT,IDC_NEWCHAT); //WRITE_BYTE_SETTING(QQ_NEWCHAT,(BYTE)IsDlgButtonChecked(hwndDlg,IDC_NEWCHAT)); CHECK_BYTE_SETTING(QQ_ADDQUNNUMBER,IDC_ADDQUNNUMBER); WRITE_CHECK_SETTING(QQ_ADDQUNNUMBER,IDC_ADDQUNNUMBER); WRITE_CHECK_SETTING(QQ_NOREMOVEQUNIMAGE,IDC_NOREMOVEQUNIMAGE); WRITE_CHECK_SETTING(QQ_NOLOADQUNIMAGE,IDC_NOLOADQUNIMAGE); WRITE_CHECK_SETTING(QQ_NOSILENTQUNHISTORY,IDC_NOSILENTQUNHISTORY); // Apply Options if(Packet::isClientKeySet() && reconnectRequired) MessageBox(hwndDlg,TranslateT("The changes you have made require you to reconnect to the QQ network before they take effect"),APPNAME,MB_OK); return TRUE; } } break; } return FALSE; }
static VALUE rb_gsl_odeiv_evolve_apply(VALUE obj, VALUE cc, VALUE ss, VALUE sss, VALUE tt, VALUE tt1, VALUE hh, VALUE yy) { gsl_odeiv_evolve *e = NULL; gsl_odeiv_control *c = NULL; gsl_odeiv_step *s = NULL; gsl_odeiv_system *sys = NULL; gsl_vector *y = NULL; double t, h; int status; CHECK_STEP(ss); CHECK_SYSTEM(sss); CHECK_VECTOR(yy); Data_Get_Struct(obj, gsl_odeiv_evolve, e); if (NIL_P(cc)) { c = NULL; } else { CHECK_CONTROL(cc); Data_Get_Struct(cc, gsl_odeiv_control, c); } Data_Get_Struct(ss, gsl_odeiv_step, s); Data_Get_Struct(sss, gsl_odeiv_system, sys); Data_Get_Struct(yy, gsl_vector, y); /* if (TYPE(tt) != T_FLOAT) rb_raise(rb_eTypeError, "argument 4 Float expected"); if (TYPE(hh) != T_FLOAT) rb_raise(rb_eTypeError, "argument 6 Float expected");*/ t = NUM2DBL(tt); h = NUM2DBL(hh); status = gsl_odeiv_evolve_apply(e, c, s, sys, &t, NUM2DBL(tt1), &h, y->data); /* RFLOAT(tt)->value = t; RFLOAT(hh)->value = h;*/ return rb_ary_new3(3, rb_float_new(t), rb_float_new(h), INT2FIX(status)); }
static VALUE rb_gsl_odeiv_solver_set_control(VALUE obj, VALUE cc) { gsl_odeiv_solver *gos = NULL; gsl_odeiv_control *c = NULL; CHECK_CONTROL(cc); Data_Get_Struct(obj, gsl_odeiv_solver, gos); Data_Get_Struct(cc, gsl_odeiv_control, c); gos->c = c; return obj; }
// DlgProcOpts(): Dialog Callback // hwndDlg: hWnd to options dialog // msg: Window message received // wParam: Depending on msg // lParam: Depending on msg static BOOL CALLBACK DlgProcOptsAcc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CNetwork* network=(CNetwork*)GetWindowLong(GetParent(hwndDlg),GWL_USERDATA); switch (msg) { case WM_INITDIALOG: // Options dialog is being initialized { DBVARIANT dbv; HWND hControl; char** pszServers=servers; TranslateDialogDefault(hwndDlg); // Add server to list hControl=GetDlgItem(hwndDlg,IDC_SERVER); while (*pszServers) { ADD_LIST_ITEM(*pszServers); pszServers++; } SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Head Image and User Head")); SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Head Image")); SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("QQ Show")); SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("None")); SendDlgItemMessage(hwndDlg,IDC_CONVERSION,CB_ADDSTRING,NULL,(LPARAM)TranslateT("No Message Conversion")); SendDlgItemMessage(hwndDlg,IDC_CONVERSION,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Receive: No Change, Send: Convert to Simplified")); SendDlgItemMessage(hwndDlg,IDC_CONVERSION,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Receive: Convert to Traditional, Send: No Change")); SendDlgItemMessage(hwndDlg,IDC_CONVERSION,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Receive: Convert to Traditional, Send: Convert to Simplified")); if (!(hControl=GetDlgItem(hwndDlg,IDC_NOTICE))) itoa(1,(LPSTR)hControl,10); SetWindowText(hControl,L"Miranda IM 专用的 QQ 插件 (MirandaQQ)\n版权所有(C) 2008 小熊工作室,保留所有权利。\n此插件使用 libeva QQ 库,版权所有(C) 云帆。\nThe QQ icon is from Cristal Icons pack, courtesy of Angeli-Ka. Used with permission from author.\n\n此插件是根据 GPL 第二版的条款而授权。你可以修改并重新发布基于此产品的成果,但你「必须保留所有原有的版权宣告」,并将有关之所有代码公开。若要更多信息,请参照 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 上的 GPL 合约条款,或 http://docs.huihoo.com/open_source/GPL-chinese.html 参考该条款的中文译本。\n最后,由于太多人滥用桥接功能 (桥接20个群过分么?),所以此功能将被永久移除。你们要加回去请自便,但不要再在支持群里询问有关问题。"); ShowWindow(hControl,SW_SHOWNORMAL); if (network) { SendMessage(GetDlgItem(hwndDlg,IDC_CONVERSION),CB_SETCURSEL,DBGetContactSettingByte(NULL,network->m_szModuleName,QQ_MESSAGECONVERSION,0),0); if(!DBGetContactSetting(NULL,network->m_szModuleName,QQ_LOGINSERVER2,&dbv)) { SetDlgItemTextA(hwndDlg,IDC_SERVER,dbv.pszVal); DBFreeVariant(&dbv); } else { SetDlgItemTextA(hwndDlg,IDC_SERVER,*servers); } // Login ID and Password if(!DBGetContactSetting(NULL,network->m_szModuleName,UNIQUEIDSETTING,&dbv)){ char szID[16]; ultoa(dbv.lVal,szID,10); SetDlgItemTextA(hwndDlg,IDC_LOGIN,szID); DBFreeVariant(&dbv); } SetDlgItemTextA(hwndDlg,IDC_PASSWORD,PASSWORDMASK); CHECK_CONTROL(IDC_FORCEINVISIBLE,QQ_INVISIBLE); //CHECK_CONTROL(IDC_FORCEUNICODE,QQ_FORCEUNICODE); CheckDlgButton(hwndDlg,IDC_FORCEUNICODE,BST_CHECKED); EnableWindow(GetDlgItem(hwndDlg,IDC_FORCEUNICODE),FALSE); //CHECK_CONTROL2(IDC_AUTOSERVER,QQ_NOAUTOSERVER); ShowWindow(GetDlgItem(hwndDlg,IDC_AUTOSERVER),SW_HIDE); // Version and Connection Information /* pszTemp=mir_strdup(szCheckoutTime); SetDlgItemTextA(hwndDlg,IDC_VERSION,pszTemp); mir_free(pszTemp); */ WCHAR szTemp[MAX_PATH]; swprintf(szTemp,TranslateT("This copy of MirandaQQ is based on EVA %S, Module: %S"),version,network->m_szModuleName); SetDlgItemText(hwndDlg,IDC_VERSION,szTemp); //if (qqSettings->unicode) SetDlgItemText(hwndDlg,IDC_UNICODEMSG,TranslateT("Unicode Messaging Support(UTF-8) is Enabled.")); /*else SetDlgItemText(hwndDlg,IDC_UNICODEMSG,TranslateT("Unicode Messaging Support is Disabled."));*/ } return TRUE; } case WM_COMMAND: // When a control is toggled switch (LOWORD(wParam)) { case IDC_LOGIN: case IDC_PASSWORD: //case IDC_SERVER: case IDC_VERSION: if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) return 0; break; case IDC_CONVERSION: case IDC_SERVER: if (HIWORD(wParam) != CBN_SELCHANGE) return 0; } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: // When a notify is sent by Options Dialog (Property Sheet) if (network && ((LPNMHDR)lParam)->code==PSN_APPLY) { int reconnectRequired=0; char str[128]; char login[128]; DBVARIANT dbv; // Login Information GetDlgItemTextA(hwndDlg,IDC_LOGIN,login,sizeof(login)); dbv.pszVal=NULL; dbv.lVal=0; if(DBGetContactSetting(NULL,network->m_szModuleName,UNIQUEIDSETTING,&dbv) || strtoul(login,NULL,10)!=dbv.dVal) reconnectRequired=1; if(dbv.lVal!=0) DBFreeVariant(&dbv); DBWriteContactSettingDword(NULL,network->m_szModuleName,UNIQUEIDSETTING,strtoul(login,NULL,10)); GetDlgItemTextA(hwndDlg,IDC_PASSWORD,str,sizeof(str)); if (strcmp(str,PASSWORDMASK)!=0) { CallService(MS_DB_CRYPT_ENCODESTRING,sizeof(str),(LPARAM)str); dbv.pszVal=NULL; if(DBGetContactSetting(NULL,network->m_szModuleName,QQ_PASSWORD,&dbv) || strcmp(str,dbv.pszVal)) reconnectRequired=1; if(dbv.pszVal!=NULL) DBFreeVariant(&dbv); DBWriteContactSettingString(NULL,network->m_szModuleName,QQ_PASSWORD,str); } // Server list GetDlgItemTextA(hwndDlg,IDC_SERVER,str,sizeof(str)); if(DBGetContactSetting(NULL,network->m_szModuleName,QQ_LOGINSERVER2,&dbv) || strcmp(str,dbv.pszVal)) reconnectRequired=1; if(dbv.pszVal!=NULL) DBFreeVariant(&dbv); DBWriteContactSettingString(NULL,network->m_szModuleName,QQ_LOGINSERVER2,str); CHECK_BYTE_SETTING(QQ_INVISIBLE,IDC_FORCEINVISIBLE); WRITE_CHECK_SETTING(QQ_INVISIBLE,IDC_FORCEINVISIBLE); CHECK_BYTE_SETTING(QQ_FORCEUNICODE,IDC_FORCEUNICODE); WRITE_CHECK_SETTING(QQ_FORCEUNICODE,IDC_FORCEUNICODE); /* CHECK_BYTE_SETTING2(QQ_NOAUTOSERVER,IDC_AUTOSERVER); WRITE_CHECK_SETTING2(QQ_NOAUTOSERVER,IDC_AUTOSERVER); */ if(Packet::isClientKeySet() && reconnectRequired) MessageBox(hwndDlg,TranslateT("The changes you have made require you to reconnect to the QQ network before they take effect"),APPNAME,MB_OK); DBWriteContactSettingByte(NULL,network->m_szModuleName,QQ_MESSAGECONVERSION,(BYTE)SendDlgItemMessage(hwndDlg,IDC_CONVERSION,CB_GETCURSEL,0,0)); return TRUE; } break; } return FALSE; }
static BOOL CALLBACK DlgProcOptsSettings(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CNetwork* network=(CNetwork*)GetWindowLong(GetParent(hwndDlg),GWL_USERDATA); switch (msg) { case WM_INITDIALOG: // Options dialog is being initialized { TranslateDialogDefault(hwndDlg); // Add server to list SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Head Image and User Head")); SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("Head Image")); SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("QQ Show")); SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_ADDSTRING,NULL,(LPARAM)TranslateT("None")); if (network) { SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_SETCURSEL,DBGetContactSettingByte(NULL,network->m_szModuleName,QQ_AVATARTYPE,0),0); // Check Options //CHECK_CONTROL(IDC_BBCODE,QQ_ENABLEBBCODE); //CHECK_CONTROL(IDC_SHOWCHAT, DBGetContactSettingByte(NULL,network->m_szModuleName,QQ_SHOWCHAT,0)); CHECK_CONTROL(IDC_NOADDIDENTITY,QQ_DISABLEIDENTITY); CHECK_CONTROL(IDC_REMOVENICKCHARS,QQ_REMOVENICKCHARS); CHECK_CONTROL(IDC_REPLYMODEMSG,QQ_REPLYMODEMSG); CHECK_CONTROL(IDC_CUSTOMBLOCK2,QQ_BLOCKEMPTYREQUESTS); CHECK_CONTROL(IDC_STATUSASPERSONAL,QQ_STATUSASPERSONAL); CHECK_CONTROL(IDC_WAITACK,QQ_WAITACK); CHECK_CONTROL(IDC_SHOWAD,QQ_SHOWAD); CHECK_CONTROL(IDC_MAILNOTIFY,QQ_MAILNOTIFY); CHECK_CONTROL(IDC_NOPROGRESSPOPUPS,QQ_NOPROGRESSPOPUPS); } return TRUE; } case WM_COMMAND: // When a control is toggled SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: // When a notify is sent by Options Dialog (Property Sheet) if (network && ((LPNMHDR)lParam)->code==PSN_APPLY) { int reconnectRequired=0; // Check Options WRITE_BYTE_SETTING(QQ_AVATARTYPE,SendDlgItemMessage(hwndDlg,IDC_AVATARTYPE,CB_GETCURSEL,0,0)); CHECK_BYTE_SETTING(QQ_DISABLEIDENTITY,IDC_NOADDIDENTITY); WRITE_CHECK_SETTING(QQ_DISABLEIDENTITY,IDC_NOADDIDENTITY); CHECK_BYTE_SETTING(QQ_REMOVENICKCHARS,IDC_REMOVENICKCHARS); WRITE_CHECK_SETTING(QQ_REMOVENICKCHARS,IDC_REMOVENICKCHARS); WRITE_CHECK_SETTING(QQ_REPLYMODEMSG,IDC_REPLYMODEMSG); WRITE_CHECK_SETTING(QQ_BLOCKEMPTYREQUESTS,IDC_CUSTOMBLOCK2); WRITE_CHECK_SETTING(QQ_STATUSASPERSONAL,IDC_STATUSASPERSONAL); //CHECK_BYTE_SETTING(QQ_WAITACK,IDC_WAITACK); WRITE_CHECK_SETTING(QQ_WAITACK,IDC_WAITACK); network->m_needAck=IsDlgButtonChecked(hwndDlg,IDC_WAITACK); WRITE_CHECK_SETTING(QQ_SHOWAD,IDC_SHOWAD); WRITE_CHECK_SETTING(QQ_MAILNOTIFY,IDC_MAILNOTIFY); WRITE_CHECK_SETTING(QQ_NOPROGRESSPOPUPS,IDC_NOPROGRESSPOPUPS); if(Packet::isClientKeySet() && reconnectRequired) MessageBox(hwndDlg,TranslateT("The changes you have made require you to reconnect to the QQ network before they take effect"),APPNAME,MB_OK); return TRUE; } break; } return FALSE; }