您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CallProtoService函数代码示例

51自学网 2021-06-01 20:09:04
  C++
这篇教程C++ CallProtoService函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CallProtoService函数的典型用法代码示例。如果您正苦于以下问题:C++ CallProtoService函数的具体用法?C++ CallProtoService怎么用?C++ CallProtoService使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CallProtoService函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ChooseFilesThread

void __cdecl ChooseFilesThread(void* param){	HWND hwndDlg = (HWND)param;	FileDlgData *dat = (FileDlgData*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);	TCHAR *buf = (TCHAR*)mir_alloc(sizeof(TCHAR) * 32767);	if (buf == NULL) {		PostMessage(hwndDlg, M_FILECHOOSEDONE, 0, NULL);		return;	}	TCHAR filter[128];	mir_tstrcpy(filter, TranslateT("All files"));	mir_tstrcat(filter, _T(" (*)"));	TCHAR *pfilter = filter + mir_tstrlen(filter) + 1;	mir_tstrcpy(pfilter, _T("*"));	pfilter = filter + mir_tstrlen(filter) + 1;	pfilter[0] = '/0';	OPENFILENAME ofn = { 0 };	ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;	ofn.hwndOwner = hwndDlg;	ofn.lpstrFilter = filter;	ofn.lpstrFile = buf; *buf = 0;	ofn.nMaxFile = 32767;	ofn.Flags = OFN_NOCHANGEDIR | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_HIDEREADONLY | OFN_DONTADDTORECENT;		char *szProto = GetContactProto(dat->hContact);	if (!(CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_4, 0) & PF4_SINGLEFILEONLY))		ofn.Flags |= OFN_ALLOWMULTISELECT;	if (GetOpenFileName(&ofn))		PostMessage(hwndDlg, M_FILECHOOSEDONE, 0, (LPARAM)buf);	else {		mir_free(buf);		PostMessage(hwndDlg, M_FILECHOOSEDONE, 0, NULL);	}}
开发者ID:ybznek,项目名称:miranda-ng,代码行数:38,


示例2: SSC_OnProtocolAck

int SSC_OnProtocolAck(WPARAM, LPARAM lParam){	if (g_bMirandaIsShutdown)		return 0;	ACKDATA* pAckData = reinterpret_cast<ACKDATA*>(lParam);	if (pAckData->type != ACKTYPE_STATUS || pAckData->result != ACKRESULT_SUCCESS || !pAckData->szModule)		return 0;	if (!g_Options.IsProtocolExcluded(pAckData->szModule)) {		int nStatus = CallProtoService(pAckData->szModule, PS_GETSTATUS, 0, 0);		for (size_t i = 0; i < _countof(g_aStatusCode); ++i) {			const CMirandaStatus2SkypeStatus& ms = g_aStatusCode[i];			if (ms.m_nMirandaStatus == nStatus) {				int nPrevStatus;				if ((false == g_Options.IsProtocolStatusExcluded(pAckData->szModule, nStatus))					&& ((false == g_Options.GetSyncStatusStateFlag())						|| (false == g_Options.GetPreviousStatus(pAckData->szModule, nPrevStatus))						|| (nPrevStatus != nStatus))) {							{								mir_cslock guard(g_csStatusInfo);								g_CurrStatusInfo.StatusIndex(i);								g_CurrStatusInfo.Module(pAckData->szModule);							}							if (0 == ::PostMessage(HWND_BROADCAST, g_MsgIDSkypeControlAPIDiscover, (WPARAM)g_wndMainWindow, 0)) {								mir_cslock guard(g_csStatusInfo);								g_CurrStatusInfo.StatusIndex(INVALID_INDEX);								g_CurrStatusInfo.Module(NULL);							}							else g_Options.SetPreviousStatus(pAckData->szModule, nStatus);				}				break;			}		}	}	return 0;}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:38,


示例3: Proto_GetAvatarMaxSize

void Proto_GetAvatarMaxSize(const char *proto, int *width, int *height){	if (ProtoServiceExists(proto, PS_GETAVATARCAPS)) {		POINT maxSize;		CallProtoService(proto, PS_GETAVATARCAPS, AF_MAXSIZE, (LPARAM)&maxSize);		*width = maxSize.y;		*height = maxSize.x;	}	else {		*width = 300;		*height = 300;	}	if (*width < 0)		*width = 0;	else if (*width > 300)		*width = 300;	if (*height < 0)		*height = 0;	else if (*height > 300)		*height = 300;}
开发者ID:martok,项目名称:miranda-ng,代码行数:23,


示例4: SetProtocolsOffline

void SetProtocolsOffline(){	if ( GetSettingBool("GlobalSettings", "SetProtocolsOffline", TRUE) ) {		PROTOACCOUNT **accounts;		int count;		Proto_EnumAccounts(&count, &accounts);		for (int i = 0; i < count; i++) {			/*if (protos[i]->type != PROTOTYPE_PROTOCOL)				continue;*/			if (!accounts[i]->bIsEnabled)				continue;			if (accounts[i]->szModuleName == NULL || accounts[i]->szModuleName[0] == '/0')				continue;			CallProtoService(accounts[i]->szModuleName, PS_SETSTATUS, ID_STATUS_OFFLINE, 0);		}		// Give some time to make it really offline		Sleep(2000);	}}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:23,


示例5: ChangeAllProtoStatuses

static int ChangeAllProtoStatuses(unsigned statusMode, TCHAR *msg){	for (int i=0; i < protoCount; i++)	{		unsigned status = CallProtoService(proto[i]->szModuleName,PS_GETSTATUS,0,0);		if (			(g_wMask & OPT_ONLINEONLY) ? // check "Change only if current status is Online" option			((status == ID_STATUS_ONLINE) || (status == ID_STATUS_FREECHAT)) // process only "online" and "free for chat"			:			((status > ID_STATUS_OFFLINE) && (status < ID_STATUS_IDLE) && (status != ID_STATUS_INVISIBLE))) // process all existing statuses except for "invisible" & "offline"		{			if (g_wMask & OPT_SETONLINEBACK){ // need to save old statuses & status messages				oldStatus[i] = status;				if (ProtoServiceExists(proto[i]->szModuleName, PS_GETMYAWAYMSG))					oldStatusMsg[i] = (TCHAR*)ProtoCallService(proto[i]->szModuleName, PS_GETMYAWAYMSG, 0, SGMA_TCHAR);				else					oldStatusMsg[i] = GetDefStatusMsg(status, proto[i]->szModuleName);			}			SetStatus(proto[i]->szModuleName, statusMode, msg);		}	}	return 0;}
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:23,


示例6: SplitmsgModulesLoaded

static int SplitmsgModulesLoaded(WPARAM wParam, LPARAM lParam){	CLISTMENUITEM mi;	PROTOCOLDESCRIPTOR **protocol;	int protoCount, i;	ReloadGlobals();	RegisterIcoLibIcons();	RegisterFontServiceFonts();	LoadGlobalIcons();	LoadMsgLogIcons();	LoadProtocolIcons();	ZeroMemory(&mi, sizeof(mi));	mi.cbSize = sizeof(mi);	mi.position = -2000090000;	mi.flags = 0;	mi.hIcon = LoadSkinnedIcon(SKINICON_EVENT_MESSAGE);	mi.pszName = Translate("&Message");	mi.pszService = MS_MSG_SENDMESSAGE;	CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM) & protoCount, (LPARAM) & protocol);	for (i = 0; i < protoCount; i++) {		if (protocol[i]->type != PROTOTYPE_PROTOCOL)			continue;		if (CallProtoService(protocol[i]->szName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_IMSEND) {			mi.pszContactOwner = protocol[i]->szName;			hMsgMenuItem = realloc(hMsgMenuItem, (hMsgMenuItemCount + 1) * sizeof(HANDLE));			hMsgMenuItem[hMsgMenuItemCount++] = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) & mi);		}	}	HookEvent(ME_CLIST_DOUBLECLICKED, SendMessageCommand);	HookEvent(ME_SMILEYADD_OPTIONSCHANGED, SmileySettingsChanged);	HookEvent(ME_IEVIEW_OPTIONSCHANGED, SmileySettingsChanged);	HookEvent(ME_AV_MYAVATARCHANGED, MyAvatarChanged);	HookEvent(ME_AV_AVATARCHANGED, AvatarChanged);	RestoreUnreadMessageAlerts();	return 0;}
开发者ID:BackupTheBerlios,项目名称:mgoodies-svn,代码行数:37,


示例7: convertContact

static MCONTACT convertContact(MCONTACT hContact){    // Check what protocol this contact belongs to    char szProto[100];    if (myGetS(hContact, "Protocol", "p", szProto))        return INVALID_CONTACT_ID;    // Protocol installed?    if (!IsProtocolLoaded(szProto))        return INVALID_CONTACT_ID;    // Is contact in database?    char* pszUniqueSetting = (char*)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);    // Skip protocols with no unique id setting (some non IM protocols return NULL)    MCONTACT hDst = INVALID_CONTACT_ID;    if (pszUniqueSetting && (INT_PTR)pszUniqueSetting != CALLSERVICE_NOTFOUND) {        DBVARIANT dbv;        if (!myGet(hContact, szProto, pszUniqueSetting, &dbv)) {            switch (dbv.type) {            case DBVT_DWORD:                hDst = HContactFromNumericID(szProto, pszUniqueSetting, dbv.dVal);                break;            case DBVT_ASCIIZ:                hDst = HContactFromID(szProto, pszUniqueSetting, _A2T(dbv.pszVal));                break;            case DBVT_WCHAR:                hDst = HContactFromID(szProto, pszUniqueSetting, dbv.ptszVal);                break;            }            srcDb->FreeVariant(&dbv);        }    }    return hDst;}
开发者ID:0xmono,项目名称:miranda-ng,代码行数:37,


示例8: Proto_GetAccount

void CSAMWindow::setCombo(){	PROTOACCOUNT *pdescr = Proto_GetAccount(m_parent->m_protoName);	if (pdescr == nullptr)		return;	const char *szUniqueID = Proto_GetUniqueId(pdescr->szModuleName);	if (szUniqueID == nullptr)		return;	DBVARIANT dbv;	if (db_get(NULL, pdescr->szModuleName, szUniqueID, &dbv))		return;	db_free(&dbv);	WPARAM iStatus;	wchar_t tszName[100];	CUSTOM_STATUS cs = { sizeof(cs) };	cs.flags = CSSF_MASK_NAME | CSSF_DEFAULT_NAME | CSSF_UNICODE;	cs.ptszName = tszName;	cs.wParam = &iStatus;	SendMessage(m_hCombo, CBEM_SETIMAGELIST, 0, (LPARAM)m_parent->m_icons);	for (int i = 1; i <= m_parent->m_statusCount; i++) {		iStatus = i;		if (CallProtoService(pdescr->szModuleName, PS_GETCUSTOMSTATUSEX, 0, (LPARAM)&cs) != 0)			continue;		COMBOBOXEXITEM cbi = { 0 };		cbi.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;		cbi.iItem = -1;		cbi.iImage = cbi.iSelectedImage = i - 1;		cbi.pszText = TranslateW(tszName);		SendMessage(m_hCombo, CBEM_INSERTITEM, 0, (LPARAM)&cbi);	}	SendMessage(m_hCombo, CB_SETCURSEL, 0, 0); // first 0 sets selection to top}
开发者ID:tweimer,项目名称:miranda-ng,代码行数:37,


示例9: OnProtoAck

int CDropbox::OnProtoAck(WPARAM, LPARAM lParam){	ACKDATA *ack = (ACKDATA*)lParam;	if (!mir_strcmp(ack->szModule, MODULE))		return 0; // don't rebroadcast our own acks	if (ack->type == ACKTYPE_STATUS) {		WORD status = ack->lParam;		bool canSendOffline = (CallProtoService(ack->szModule, PS_GETCAPS, PFLAGNUM_4, 0) & PF4_IMSENDOFFLINE) > 0;		MessageWindowInputData msgwi = { sizeof(msgwi) };		msgwi.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH;		for (MCONTACT hContact = db_find_first(ack->szModule); hContact; hContact = db_find_next(hContact, ack->szModule)) {			msgwi.hContact = hContact;			MessageWindowData msgw;			msgw.cbSize = sizeof(msgw);			if (!CallService(MS_MSG_GETWINDOWDATA, (WPARAM)&msgwi, (LPARAM)&msgw) && msgw.uState & MSG_WINDOW_STATE_EXISTS) {				BBButton bbd = { sizeof(bbd) };				bbd.pszModuleName = MODULE;				bbd.dwButtonID = BBB_ID_FILE_SEND;				bbd.bbbFlags = BBSF_RELEASED;				if (status == ID_STATUS_OFFLINE && !canSendOffline)					bbd.bbbFlags = BBSF_DISABLED;				CallService(MS_BB_SETBUTTONSTATE, hContact, (LPARAM)&bbd);			}		}	}	return 0;}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:36,


示例10: CreateImageList

void CreateImageList(HWND hWnd){	// Create and populate image list	HIMAGELIST hImList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON),	ILC_MASK | ILC_COLOR32, nProtocol, 0);	for(NudgeElementList *n = NudgeList;n != NULL; n = n->next)	{		INT_PTR res = CallProtoService(n->item.ProtocolName, PS_LOADICON,PLI_PROTOCOL | PLIF_SMALL | PLIF_ICOLIB, 0);		if(res==CALLSERVICE_NOTFOUND)		{			res = CallService(MS_SKIN2_GETICONBYHANDLE,0,(LPARAM)n->item.hIcoLibItem);		}		HICON hIcon = (HICON) res;		ImageList_AddIcon(hImList, hIcon);	}	//ADD default Icon for nudge	HICON hIcon = (HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_NUDGE), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0);	ImageList_AddIcon(hImList, hIcon);	DestroyIcon(hIcon);	HWND hLstView = GetDlgItem(hWnd, IDC_PROTOLIST);	TreeView_SetImageList(hLstView, hImList, TVSIL_NORMAL);}
开发者ID:TonyAlloa,项目名称:miranda-dev,代码行数:24,


示例11: getActiveContact

int CContactCache::getMaxMessageLength(){	MCONTACT hContact = getActiveContact();	LPCSTR szProto = getActiveProto();	if (szProto) {		m_nMax = CallProtoService(szProto, PS_GETCAPS, PFLAG_MAXLENOFMESSAGE, hContact);		if (m_nMax) {			if (M.GetByte("autosplit", 0)) {				if (m_hwnd)					::SendDlgItemMessage(m_hwnd, IDC_MESSAGE, EM_EXLIMITTEXT, 0, 20000);			}			else {				if (m_hwnd)					::SendDlgItemMessage(m_hwnd, IDC_MESSAGE, EM_EXLIMITTEXT, 0, (LPARAM)m_nMax);			}		}		else {			if (m_hwnd)				::SendDlgItemMessage(m_hwnd, IDC_MESSAGE, EM_EXLIMITTEXT, 0, 20000);			m_nMax = 20000;		}	}	return m_nMax;}
开发者ID:kmdtukl,项目名称:miranda-ng,代码行数:24,


示例12: GetContactProto

int TSendContactsData::SendContacts(HWND hwndDlg){	char *szProto = GetContactProto(hContact);	int nMaxContacts = CallProtoService(szProto, PS_GETCAPS, PFLAG_MAXCONTACTSPERPACKET, (LPARAM)hContact);	if (!nMaxContacts) {		ShowErrorDlg(hwndDlg, "The selected contact does not support receiving contacts.", FALSE);		return FALSE;	}	// hook event - we want to receive protocol acknowledgements	HookProtoAck(hwndDlg);	// send in packets, each of nMaxContacts contacts	for (int j = 0; j < nContacts / nMaxContacts; j++)		if (!SendContactsPacket(hwndDlg, aContacts + j*nMaxContacts, nMaxContacts))			return FALSE;	if (nContacts%nMaxContacts != 0)		if (!SendContactsPacket(hwndDlg, aContacts + nContacts / nMaxContacts*nMaxContacts, nContacts%nMaxContacts))			return FALSE;	return TRUE;}
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:24,


示例13: DlgProcMirOTROptsProto

static INT_PTR CALLBACK DlgProcMirOTROptsProto(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){	HWND lv = GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS);	int sel;	switch (msg) {	case WM_INITDIALOG:		TranslateDialogDefault(hwndDlg);		{			HWND cmb = GetDlgItem(hwndDlg, IDC_CMB_PROTO_POLICY);			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_DEFAULT));			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_ALWAYS));			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_OPP));			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_MANUAL));			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_NEVER));			SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_SETCURSEL, (LPARAM)-1, 0);			EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_PROTO_POLICY), FALSE);			EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_NEWKEY), FALSE);			EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_FORGET), FALSE);		}		SendMessage(lv, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT);// | LVS_EX_CHECKBOXES);		{			// add list columns			LVCOLUMN lvc;			// Initialize the LVCOLUMN structure.			// The mask specifies that the format, width, text, and			// subitem members of the structure are valid.			lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;			lvc.fmt = LVCFMT_LEFT;			lvc.iSubItem = 0;			lvc.pszText = TranslateT(LANG_PROTO);			lvc.cx = 85;     // width of column in pixels			ListView_InsertColumn(lv, 0, &lvc);			lvc.iSubItem = 1;			lvc.pszText = TranslateT(LANG_POLICY);			lvc.cx = 80;     // width of column in pixels			ListView_InsertColumn(lv, 1, &lvc);			lvc.iSubItem = 2;			lvc.pszText = TranslateT(LANG_FINGERPRINT);			lvc.cx = 275;     // width of column in pixels			ListView_InsertColumn(lv, 2, &lvc);		}		PostMessage(hwndDlg, WMU_REFRESHPROTOLIST, 0, 0);		return TRUE;	case WMU_REFRESHPROTOLIST:		ListView_DeleteAllItems(lv);		{			LV_ITEM item = { 0 };			int num_protocols;			PROTOACCOUNT **pppDesc;			Proto_EnumAccounts(&num_protocols, &pppDesc);			for (int i = 0; i < num_protocols; i++) {				if (!mir_strcmp(pppDesc[i]->szModuleName, META_PROTO))					continue;				if ((CallProtoService(pppDesc[i]->szModuleName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_IM) == 0)					continue;				item.mask = LVIF_TEXT | LVIF_PARAM;				item.pszText = pppDesc[i]->tszAccountName;				item.lParam = (LPARAM)pppDesc[i]->szModuleName;				int ilvItem = ListView_InsertItem(lv, &item);				ListView_SetItemText(lv, ilvItem, 1, (TCHAR*)policy_to_string(db_get_dw(0, MODULENAME"_ProtoPol", pppDesc[i]->szModuleName, CONTACT_DEFAULT_POLICY)));				char fprint[45];				if (otrl_privkey_fingerprint(otr_user_state, fprint, pppDesc[i]->szModuleName, pppDesc[i]->szModuleName)) {					TCHAR *temp = mir_a2t(fprint);					ListView_SetItemText(lv, ilvItem, 2, temp);					mir_free(temp);				}			}		}		return TRUE;	case WM_COMMAND:		switch (HIWORD(wParam)) {		case BN_CLICKED:			switch (LOWORD(wParam)) {			case IDC_BTN_PROTO_NEWKEY:				sel = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS));				if (sel != -1) {					PROTOREGENKEYOPTIONS *opts = new PROTOREGENKEYOPTIONS();					opts->refresh = hwndDlg;					ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS), sel, 0, opts->proto, _countof(opts->proto));					CloseHandle((HANDLE)_beginthreadex(0, 0, regen_key_thread, opts, 0, 0));				}				break;						case IDC_BTN_PROTO_FORGET:				sel = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS));				if (sel != -1) {					TCHAR buff_proto[128];					ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS), sel, 0, buff_proto, _countof(buff_proto));					TCHAR buff[512];//.........这里部分代码省略.........
开发者ID:Seldom,项目名称:miranda-ng,代码行数:101,


示例14: addEvent

INT addEvent(WPARAM hContact, LPARAM hDBEvent){	BOOL fEnabled = db_get_b(NULL, protocolname, KEY_ENABLED, 1);	if (!fEnabled || !hContact || !hDBEvent)		return FALSE;	/// unspecifyed error	char* pszProto = GetContactProto(hContact);	int status = CallProtoService(pszProto, PS_GETSTATUS, 0, 0);	if (status == ID_STATUS_ONLINE || status == ID_STATUS_FREECHAT || status == ID_STATUS_INVISIBLE)		return FALSE;	DBEVENTINFO dbei = {sizeof(dbei)};	db_event_get(hDBEvent, &dbei); /// detect size of msg	if ((dbei.eventType != EVENTTYPE_MESSAGE) || (dbei.flags == DBEF_READ))		return FALSE; /// we need EVENTTYPE_MESSAGE event..	else	{	/// needed event has occured..		DBVARIANT dbv;		if (!dbei.cbBlob)	/// invalid size			return FALSE;		if (db_get_ts(hContact,"Protocol","p",&dbv))			// Contact with no protocol ?!!			return FALSE;		else			db_free(&dbv);		if(db_get_b(hContact, "CList", "NotOnList", 0))			return FALSE;		if(db_get_b(hContact, protocolname, "TurnedOn", 0))			return FALSE;		if (!( dbei.flags & DBEF_SENT))		{			int timeBetween=time(NULL)-db_get_dw(hContact,protocolname,"LastReplyTS",0);			if (timeBetween>interval || db_get_w(hContact,protocolname,"LastStatus",0)!=status)			{				char szStatus[6]={0};				int msgLen=1;				int isQun=db_get_b(hContact,pszProto,"IsQun",0);				if (isQun)					return FALSE;				mir_snprintf(szStatus,_countof(szStatus),"%d",status);				if (!db_get_ts(NULL,protocolname,szStatus,&dbv))				{					if (*dbv.ptszVal)					{						DBVARIANT dbvHead={0}, dbvNick={0};						CMString ptszTemp;						TCHAR *ptszTemp2;						db_get_ts(hContact,pszProto,"Nick",&dbvNick);						if (mir_tstrcmp(dbvNick.ptszVal, NULL) == 0)						{							db_free(&dbvNick);							return FALSE;						}						msgLen += (int)mir_tstrlen(dbv.ptszVal);						if (!db_get_ts(NULL,protocolname,KEY_HEADING,&dbvHead))						{							ptszTemp = dbvHead.ptszVal;							ptszTemp.Replace(_T("%user%"), dbvNick.ptszVal);							msgLen += (int)(mir_tstrlen(ptszTemp));						}						ptszTemp2 = (TCHAR*)mir_alloc(sizeof(TCHAR) * (msgLen+5));						mir_sntprintf(ptszTemp2, msgLen+5, _T("%s/r/n/r/n%s"), ptszTemp.c_str(), dbv.ptszVal);						if (ServiceExists(MS_VARS_FORMATSTRING))						{							FORMATINFO fi = { 0 };							fi.cbSize = sizeof(fi);							fi.flags = FIF_TCHAR;							fi.tszFormat = ptszTemp2;							ptszTemp = (TCHAR*)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0);						}						else ptszTemp = Utils_ReplaceVarsT(ptszTemp2);												T2Utf pszUtf(ptszTemp);						CallContactService(hContact, PSS_MESSAGE, 0, pszUtf);						dbei.cbSize = sizeof(dbei);						dbei.eventType = EVENTTYPE_MESSAGE;						dbei.flags = DBEF_UTF | DBEF_SENT; //DBEF_READ;						dbei.szModule = pszProto;						dbei.timestamp = time(NULL);						dbei.cbBlob = (int)mir_strlen(pszUtf) + 1;						dbei.pBlob = (PBYTE)pszUtf;						db_event_add(hContact, &dbei);						mir_free(ptszTemp2);						if (dbvNick.ptszVal)							db_free(&dbvNick);						if (dbvHead.ptszVal)							db_free(&dbvHead);					}					db_free(&dbv);//.........这里部分代码省略.........
开发者ID:kmdtukl,项目名称:miranda-ng,代码行数:101,


示例15: DlgProcGenOpts

INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){	switch (msg) {	case WM_USER+1:		{			HANDLE hContact = (HANDLE) wParam;			DBCONTACTWRITESETTING *ws = (DBCONTACTWRITESETTING *) lParam;			if (hContact == NULL && ws != NULL && ws->szModule != NULL && ws->szSetting != NULL && lstrcmpiA(ws->szModule, "CList") == 0 && lstrcmpiA(ws->szSetting, "UseGroups") == 0 && IsWindowVisible(hwndDlg)) {				CheckDlgButton(hwndDlg, IDC_DISABLEGROUPS, ws->value.bVal == 0);		  }		  break;	  }  case WM_DESTROY:		UnhookEvent((HANDLE) GetWindowLongPtr(hwndDlg, GWLP_USERDATA));		break;		case WM_INITDIALOG:		opt_gen_opts_changed = 0;		TranslateDialogDefault(hwndDlg);		SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) HookEventMessage(ME_DB_CONTACT_SETTINGCHANGED, hwndDlg, WM_USER + 1));		CheckDlgButton(hwndDlg, IDC_ONTOP, cfg::getByte("CList", "OnTop", SETTING_ONTOP_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_HIDEOFFLINE, cfg::getByte(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_HIDEEMPTYGROUPS, cfg::getByte("CList", "HideEmptyGroups", SETTING_HIDEEMPTYGROUPS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_DISABLEGROUPS, cfg::getByte("CList", "UseGroups", SETTING_USEGROUPS_DEFAULT) ? BST_UNCHECKED : BST_CHECKED);		CheckDlgButton(hwndDlg, IDC_CONFIRMDELETE, cfg::getByte("CList", "ConfirmDelete", SETTING_CONFIRMDELETE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		{			DWORD caps = CallService(MS_CLUI_GETCAPS, CLUICAPS_FLAGS1, 0);			if (!(caps & CLUIF_HIDEEMPTYGROUPS))				ShowWindow(GetDlgItem(hwndDlg, IDC_HIDEEMPTYGROUPS), SW_HIDE);			if (!(caps & CLUIF_DISABLEGROUPS))				ShowWindow(GetDlgItem(hwndDlg, IDC_DISABLEGROUPS), SW_HIDE);			if (caps & CLUIF_HASONTOPOPTION)				ShowWindow(GetDlgItem(hwndDlg, IDC_ONTOP), SW_HIDE);			if (caps & CLUIF_HASAUTOHIDEOPTION) {			}		}		CheckDlgButton(hwndDlg, IDC_SHOWBUTTONBAR, cfg::dat.dwFlags & CLUI_FRAME_SHOWTOPBUTTONS);		CheckDlgButton(hwndDlg, IDC_SHOWBOTTOMBUTTONS, cfg::dat.dwFlags & CLUI_FRAME_SHOWBOTTOMBUTTONS);		CheckDlgButton(hwndDlg, IDC_CLISTSUNKEN, cfg::dat.dwFlags & CLUI_FRAME_CLISTSUNKEN);		CheckDlgButton(hwndDlg, IDC_EVENTAREAAUTOHIDE, cfg::dat.dwFlags & CLUI_FRAME_AUTOHIDENOTIFY);		CheckDlgButton(hwndDlg, IDC_EVENTAREASUNKEN, (cfg::dat.dwFlags & CLUI_FRAME_EVENTAREASUNKEN) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_ONECLK, cfg::getByte("CList", "Tray1Click", SETTING_TRAY1CLICK_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_ALWAYSSTATUS, cfg::getByte("CList", "AlwaysStatus", SETTING_ALWAYSSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_ALWAYSMULTI, !cfg::getByte("CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_DONTCYCLE, cfg::getByte("CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_SINGLE ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_CYCLE, cfg::getByte("CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_CYCLE ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_MULTITRAY, cfg::getByte("CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_DISABLEBLINK, cfg::getByte("CList", "DisableTrayFlash", 0) == 1 ? BST_CHECKED : BST_UNCHECKED);		CheckDlgButton(hwndDlg, IDC_ICONBLINK, cfg::getByte("CList", "NoIconBlink", 0) == 1 ? BST_CHECKED : BST_UNCHECKED);		if (IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE)) {			Utils::enableDlgControl(hwndDlg, IDC_CYCLETIMESPIN, FALSE);			Utils::enableDlgControl(hwndDlg, IDC_CYCLETIME, FALSE);			Utils::enableDlgControl(hwndDlg, IDC_ALWAYSMULTI, FALSE);		}		if (IsDlgButtonChecked(hwndDlg, IDC_CYCLE)) {			Utils::enableDlgControl(hwndDlg, IDC_PRIMARYSTATUS, FALSE);			Utils::enableDlgControl(hwndDlg, IDC_ALWAYSMULTI, FALSE);		}		if (IsDlgButtonChecked(hwndDlg, IDC_MULTITRAY)) {			Utils::enableDlgControl(hwndDlg, IDC_CYCLETIMESPIN, FALSE);			Utils::enableDlgControl(hwndDlg, IDC_CYCLETIME, FALSE);			Utils::enableDlgControl(hwndDlg, IDC_PRIMARYSTATUS, FALSE);		}		SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETRANGE, 0, MAKELONG(120, 1));		SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETPOS, 0, MAKELONG(cfg::getWord("CList", "CycleTime", SETTING_CYCLETIME_DEFAULT), 0)); {			int i, count, item;			PROTOACCOUNT **accs;			DBVARIANT dbv = {				DBVT_DELETED			};			DBGetContactSetting(NULL, "CList", "PrimaryStatus", &dbv);			ProtoEnumAccounts( &count, &accs );			item = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_ADDSTRING, 0, (LPARAM) TranslateT("Global"));			SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETITEMDATA, item, (LPARAM) 0);			for (i = 0; i < count; i++) {				if ( !IsAccountEnabled(accs[i]) || CallProtoService(accs[i]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0) == 0)					continue;								item = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_ADDSTRING, 0, (LPARAM) accs[i]->tszAccountName);				SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETITEMDATA, item, (LPARAM)accs[i] );				if (dbv.type == DBVT_ASCIIZ && !lstrcmpA(dbv.pszVal, accs[i]->szModuleName ))					SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETCURSEL, item, 0);			}		}		if (-1 == (int) SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_GETCURSEL, 0, 0))			SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETCURSEL, 0, 0);		SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETBUDDY, (WPARAM) GetDlgItem(hwndDlg, IDC_BLINKTIME), 0);       // set buddy            		SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETRANGE, 0, MAKELONG(0x3FFF, 250));		SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETPOS, 0, MAKELONG(cfg::getWord("CList", "IconFlashTime", 550), 0));		CheckDlgButton(hwndDlg, IDC_NOTRAYINFOTIPS, cfg::dat.bNoTrayTips ? 1 : 0);		CheckDlgButton(hwndDlg, IDC_APPLYLASTVIEWMODE, cfg::getByte("CList", "AutoApplyLastViewMode", 0) ? 1 : 0);		return TRUE;	case WM_COMMAND:		if (LOWORD(wParam) == IDC_DONTCYCLE || LOWORD(wParam) == IDC_CYCLE || LOWORD(wParam) == IDC_MULTITRAY) {			Utils::enableDlgControl(hwndDlg, IDC_PRIMARYSTATUS, IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE));			Utils::enableDlgControl(hwndDlg, IDC_CYCLETIME, IsDlgButtonChecked(hwndDlg, IDC_CYCLE));			Utils::enableDlgControl(hwndDlg, IDC_CYCLETIMESPIN, IsDlgButtonChecked(hwndDlg, IDC_CYCLE));//.........这里部分代码省略.........
开发者ID:raoergsls,项目名称:miranda,代码行数:101,


示例16: DlgProcAuthReq

INT_PTR CALLBACK DlgProcAuthReq(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){	HANDLE hDbEvent = (HANDLE)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);	switch (msg) {	case WM_INITDIALOG:		TranslateDialogDefault(hwndDlg);		Button_SetIcon_IcoLib(hwndDlg, IDC_DETAILS, SKINICON_OTHER_USERDETAILS, LPGEN("View user's details"));		Button_SetIcon_IcoLib(hwndDlg, IDC_ADD, SKINICON_OTHER_ADDCONTACT, LPGEN("Add contact permanently to list"));		{			hDbEvent = (HANDLE)lParam;			SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam);			//blob is: uin(DWORD), hcontact(HANDLE), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ), reason(ASCIIZ)			DBEVENTINFO dbei = { sizeof(dbei) };			dbei.cbBlob = db_event_getBlobSize(hDbEvent);			dbei.pBlob = (PBYTE)alloca(dbei.cbBlob);			db_event_get(hDbEvent, &dbei);			DWORD uin = *(PDWORD)dbei.pBlob;			HANDLE hContact = DbGetAuthEventContact(&dbei);			char *nick = (char*)dbei.pBlob + sizeof(DWORD)*2;			char *first = nick  + strlen(nick)  + 1;			char *last = first + strlen(first) + 1;			char *email = last  + strlen(last)  + 1;			char *reason = email + strlen(email) + 1;			SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0));			SendMessage(hwndDlg, WM_SETICON, ICON_BIG, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_LARGE, 0));			PROTOACCOUNT* acc = ProtoGetAccount(dbei.szModule);			ptrT lastT(dbei.flags & DBEF_UTF ? Utf8DecodeT(last) : mir_a2t(last));			ptrT firstT(dbei.flags & DBEF_UTF ? Utf8DecodeT(first) : mir_a2t(first));			ptrT nickT(dbei.flags & DBEF_UTF ? Utf8DecodeT(nick) : mir_a2t(nick));			ptrT emailT(dbei.flags & DBEF_UTF ? Utf8DecodeT(email) : mir_a2t(email));			ptrT reasonT(dbei.flags & DBEF_UTF ? Utf8DecodeT(reason) : mir_a2t(reason));			TCHAR name[128] = _T("");			int off = 0;			if (firstT[0] && lastT[0])				off = mir_sntprintf(name, SIZEOF(name), _T("%s %s"), (TCHAR*)firstT, (TCHAR*)lastT);			else if (firstT[0])				off = mir_sntprintf(name, SIZEOF(name), _T("%s"), (TCHAR*)firstT);			else if (lastT[0])				off = mir_sntprintf(name, SIZEOF(name), _T("%s"), (TCHAR*)lastT);			if (nickT[0]) {				if (off)					mir_sntprintf(name + off, SIZEOF(name) - off, _T(" (%s)"), (TCHAR*)nickT);				else					mir_sntprintf(name, SIZEOF(name), _T("%s"), (TCHAR*)nickT);			}			if ( !name[0])				_tcscpy(name, TranslateT("<Unknown>"));			TCHAR hdr[256];			if (uin && emailT[0])				mir_sntprintf(hdr, SIZEOF(hdr), TranslateT("%s requested authorization/n%u (%s) on %s"), name, uin, (TCHAR*)emailT, acc->tszAccountName);			else if (uin)				mir_sntprintf(hdr, SIZEOF(hdr), TranslateT("%s requested authorization/n%u on %s"), name, uin, acc->tszAccountName);			else				mir_sntprintf(hdr, SIZEOF(hdr), TranslateT("%s requested authorization/n%s on %s"), name, emailT[0] ? (TCHAR*)emailT : TranslateT("(Unknown)"), acc->tszAccountName);			SetDlgItemText(hwndDlg, IDC_HEADERBAR, hdr);			SetDlgItemText(hwndDlg, IDC_REASON, reasonT);			if (hContact == INVALID_HANDLE_VALUE || !db_get_b(hContact, "CList", "NotOnList", 0))				ShowWindow(GetDlgItem(hwndDlg, IDC_ADD), FALSE);			SendDlgItemMessage(hwndDlg, IDC_DENYREASON, EM_LIMITTEXT, 255, 0);			if (CallProtoService(dbei.szModule, PS_GETCAPS, PFLAGNUM_4, 0) & PF4_NOAUTHDENYREASON) {				EnableWindow(GetDlgItem(hwndDlg, IDC_DENYREASON), FALSE);				SetDlgItemText(hwndDlg, IDC_DENYREASON, TranslateT("Feature is not supported by protocol"));			}			if ( !db_get_b(hContact, "CList", "NotOnList", 0)) {				EnableWindow(GetDlgItem(hwndDlg, IDC_ADDCHECK), FALSE);				CheckDlgButton(hwndDlg, IDC_ADDCHECK, BST_UNCHECKED);			}			else CheckDlgButton(hwndDlg, IDC_ADDCHECK, BST_CHECKED);			SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_DETAILS), GWLP_USERDATA, (LONG_PTR)hContact);		}		return TRUE;	case WM_COMMAND:		switch (LOWORD(wParam)) {		case IDC_DETAILS:			CallService(MS_USERINFO_SHOWDIALOG, GetWindowLongPtr((HWND)lParam, GWLP_USERDATA), 0);			break;		case IDC_DECIDELATER:			DestroyWindow(hwndDlg);			break;		case IDOK:			{				DBEVENTINFO dbei = { sizeof(dbei) };				db_event_get(hDbEvent, &dbei);				CallProtoService(dbei.szModule, PS_AUTHALLOW, (WPARAM)hDbEvent, 0);//.........这里部分代码省略.........
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:101,


示例17: DlgProcAdded

INT_PTR CALLBACK DlgProcAdded(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){	HANDLE hDbEvent = (HANDLE)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);	switch (msg) {	case WM_INITDIALOG:		{			TranslateDialogDefault(hwndDlg);			Button_SetIcon_IcoLib(hwndDlg, IDC_DETAILS, SKINICON_OTHER_USERDETAILS, LPGEN("View user's details"));			Button_SetIcon_IcoLib(hwndDlg, IDC_ADD, SKINICON_OTHER_ADDCONTACT, LPGEN("Add contact permanently to list"));			hDbEvent = (HANDLE)lParam;			SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam);			//blob is: uin(DWORD), hcontact(HANDLE), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ)			DBEVENTINFO dbei = { sizeof(dbei) };			dbei.cbBlob = db_event_getBlobSize(hDbEvent);			dbei.pBlob = (PBYTE)alloca(dbei.cbBlob);			db_event_get(hDbEvent, &dbei);			DWORD uin = *(PDWORD)dbei.pBlob;			HANDLE hContact = DbGetAuthEventContact(&dbei);			char* nick = (char*)dbei.pBlob + sizeof(DWORD)*2;			char* first = nick  + strlen(nick)  + 1;			char* last = first + strlen(first) + 1;			char* email = last  + strlen(last)  + 1;			SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0));			SendMessage(hwndDlg, WM_SETICON, ICON_BIG, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_LARGE, 0));			PROTOACCOUNT* acc = ProtoGetAccount(dbei.szModule);			TCHAR* lastT = dbei.flags & DBEF_UTF ? Utf8DecodeT(last) : mir_a2t(last);			TCHAR* firstT = dbei.flags & DBEF_UTF ? Utf8DecodeT(first) : mir_a2t(first);			TCHAR* nickT = dbei.flags & DBEF_UTF ? Utf8DecodeT(nick) : mir_a2t(nick);			TCHAR* emailT = dbei.flags & DBEF_UTF ? Utf8DecodeT(email) : mir_a2t(email);			TCHAR name[128] = _T("");			int off = 0;			if (firstT[0] && lastT[0])				off = mir_sntprintf(name, SIZEOF(name), _T("%s %s"), firstT, lastT);			else if (firstT[0])				off = mir_sntprintf(name, SIZEOF(name), _T("%s"), firstT);			else if (lastT[0])				off = mir_sntprintf(name, SIZEOF(name), _T("%s"), lastT);			if (nickT[0])			{				if (off)					mir_sntprintf(name + off, SIZEOF(name) - off, _T(" (%s)"), nickT);				else					mir_sntprintf(name, SIZEOF(name), _T("%s"), nickT);			}			if ( !name[0])				_tcscpy(name, TranslateT("<Unknown>"));			TCHAR hdr[256];			if (uin && emailT[0])				mir_sntprintf(hdr, SIZEOF(hdr), TranslateT("%s added you to the contact list/n%u (%s) on %s"), name, uin, emailT, acc->tszAccountName);			else if (uin)				mir_sntprintf(hdr, SIZEOF(hdr), TranslateT("%s added you to the contact list/n%u on %s"), name, uin, acc->tszAccountName);			else				mir_sntprintf(hdr, SIZEOF(hdr), TranslateT("%s added you to the contact list/n%s on %s"), name, emailT[0] ? emailT : TranslateT("(Unknown)"), acc->tszAccountName);			SetDlgItemText(hwndDlg, IDC_HEADERBAR, hdr);			mir_free(lastT);			mir_free(firstT);			mir_free(nickT);			mir_free(emailT);			SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_DETAILS), GWLP_USERDATA, (LONG_PTR)hContact);			if (hContact == INVALID_HANDLE_VALUE || !db_get_b(hContact, "CList", "NotOnList", 0))				ShowWindow(GetDlgItem(hwndDlg, IDC_ADD), FALSE);		}		return TRUE;	case WM_COMMAND:		switch (LOWORD(wParam)) {		case IDC_ADD:		{			ADDCONTACTSTRUCT acs = {0};			acs.handle = hDbEvent;			acs.handleType = HANDLE_EVENT;			acs.szProto = "";			CallService(MS_ADDCONTACT_SHOW, (WPARAM)hwndDlg, (LPARAM)&acs);			HANDLE hContact = (HANDLE)GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_DETAILS), GWLP_USERDATA);               if ((hContact == INVALID_HANDLE_VALUE) || !db_get_b(hContact, "CList", "NotOnList", 0))                  ShowWindow(GetDlgItem(hwndDlg, IDC_ADD), FALSE);			break;		}		case IDC_DETAILS:		{			HANDLE hContact = (HANDLE)GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_DETAILS), GWLP_USERDATA);			CallService(MS_USERINFO_SHOWDIALOG, (WPARAM)hContact, 0);			break;		}		case IDOK://.........这里部分代码省略.........
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:101,


示例18: MIRANDA_HOOK_EVENT

MIRANDA_HOOK_EVENT(ME_DB_EVENT_FILTER_ADD, w, l){	MCONTACT hContact = (MCONTACT)w;	if (!l) //fix potential DEP crash		return 0;	DBEVENTINFO * dbei = (DBEVENTINFO*)l;	// if event is in protocol that is not despammed	if (!ProtoInList(dbei->szModule)) {		// ...let the event go its way		return 0;	}	//do not check excluded contact	if (db_get_b(hContact, pluginName, "Answered", 0))		return 0;	if (db_get_b(hContact, pluginName, "Excluded", 0)) {		if (!db_get_b(hContact, "CList", "NotOnList", 0))			db_unset(hContact, pluginName, "Excluded");		return 0;	}	//we want block not only messages, i seen many types other eventtype flood	if (dbei->flags & DBEF_READ)		// ...let the event go its way		return 0;	//mark contact which we trying to contact for exclude from check	if ((dbei->flags & DBEF_SENT) && db_get_b(hContact, "CList", "NotOnList", 0)		&& (!gbMaxQuestCount || db_get_dw(hContact, pluginName, "QuestionCount", 0) < gbMaxQuestCount) && gbExclude) {		db_set_b(hContact, pluginName, "Excluded", 1);		return 0;	}	// if message is from known or marked Answered contact	if (!db_get_b(hContact, "CList", "NotOnList", 0))		// ...let the event go its way		return 0;	// if message is corrupted or empty it cannot be an answer.	if (!dbei->cbBlob || !dbei->pBlob)		// reject processing of the event		return 1;	tstring message;	if (dbei->flags & DBEF_UTF) {		wchar_t* msg_u;		char* msg_a = mir_strdup((char*)dbei->pBlob);		mir_utf8decode(msg_a, &msg_u);		message = msg_u;	}	else		message = mir_a2u((char*)(dbei->pBlob));	// if message contains right answer...	boost::algorithm::erase_all(message, "/r");	boost::algorithm::erase_all(message, "/n");	bool bSendMsg = true;	if (gbInvisDisable) {		if (CallProtoService(dbei->szModule, PS_GETSTATUS, 0, 0) == ID_STATUS_INVISIBLE)			bSendMsg = false;		else if (db_get_w(hContact, dbei->szModule, "ApparentMode", 0) == ID_STATUS_OFFLINE)			bSendMsg = false; //is it useful ?	}	bool answered = false;	if (gbMathExpression) {		if (boost::algorithm::all(message, boost::is_digit())) {			int num = _ttoi(message.c_str());			int math_answer = db_get_dw(hContact, pluginName, "MathAnswer", 0);			if (num && math_answer)				answered = (num == math_answer);		}	}	else if (!gbRegexMatch)		answered = gbCaseInsensitive ? (!Stricmp(message.c_str(), (variables_parse(gbAnswer, hContact).c_str()))) : (!mir_tstrcmp(message.c_str(), (variables_parse(gbAnswer, hContact).c_str())));	else {		if (gbCaseInsensitive) {			std::string check(toUTF8(variables_parse(gbAnswer, hContact))), msg(toUTF8(message));			boost::algorithm::to_upper(check);			boost::algorithm::to_upper(msg);			boost::regex expr(check);			answered = boost::regex_search(msg.begin(), msg.end(), expr);		}		else {			std::string check(toUTF8(variables_parse(gbAnswer, hContact))), msg(toUTF8(message));			boost::regex expr(check);			answered = boost::regex_search(msg.begin(), msg.end(), expr);		}	}	if (answered) {		// unhide contact		db_unset(hContact, "CList", "Hidden");		db_unset(hContact, pluginName, "MathAnswer");		// mark contact as Answered		db_set_b(hContact, pluginName, "Answered", 1);		//add contact permanently		if (gbAddPermanent) //do not use this )			db_unset(hContact, "CList", "NotOnList");//.........这里部分代码省略.........
开发者ID:truefriend-cz,项目名称:miranda-ng,代码行数:101,


示例19: CallProtoService

void VoiceProvider::Call(HANDLE hContact, const TCHAR *number){	CallProtoService(name, PS_VOICE_CALL, (WPARAM) hContact, (LPARAM) number);}
开发者ID:Robyer,项目名称:miranda-plugins,代码行数:4,


示例20: IgnoreDialogProc

static INT_PTR CALLBACK IgnoreDialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){	HANDLE hContact = (HANDLE)GetWindowLongPtr(hWnd, GWLP_USERDATA);	switch(msg) {	case WM_INITDIALOG:		{			DWORD dwMask;			struct ClcContact *contact = NULL;			int pCaps;			HWND hwndAdd;			hContact = (HANDLE)lParam;			SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)hContact);			dwMask = cfg::getDword(hContact, "Ignore", "Mask1", 0);			SendMessage(hWnd, WM_USER + 100, (WPARAM)hContact, dwMask);			SendMessage(hWnd, WM_USER + 120, 0, 0);			TranslateDialogDefault(hWnd);			hwndAdd = GetDlgItem(hWnd, IDC_IGN_ADDPERMANENTLY); // CreateWindowEx(0, _T("CLCButtonClass"), _T("FOO"), WS_VISIBLE | BS_PUSHBUTTON | WS_CHILD | WS_TABSTOP, 200, 276, 106, 24, hWnd, (HMENU)IDC_IGN_ADDPERMANENTLY, g_hInst, NULL);			SendMessage(hwndAdd, BUTTONSETASFLATBTN, 0, 1);			SendMessage(hwndAdd, BUTTONSETASFLATBTN + 10, 0, 1);			SendMessage(hwndAdd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(210), IMAGE_ICON, 16, 16, LR_SHARED));			SetWindowText(hwndAdd, TranslateT("Add permanently"));			EnableWindow(hwndAdd, cfg::getByte(hContact, "CList", "NotOnList", 0));            hwndAdd = GetDlgItem(hWnd, IDC_DSP_LOADDEFAULT); // CreateWindowEx(0, _T("CLCButtonClass"), _T("FOO"), WS_VISIBLE | BS_PUSHBUTTON | WS_CHILD | WS_TABSTOP, 200, 276, 106, 24, hWnd, (HMENU)IDC_IGN_ADDPERMANENTLY, g_hInst, NULL);            SendMessage(hwndAdd, BUTTONSETASFLATBTN, 0, 1);            SendMessage(hwndAdd, BUTTONSETASFLATBTN + 10, 0, 1);            SendMessage(hwndAdd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_DELETE), IMAGE_ICON, 16, 16, LR_SHARED));            SetWindowText(hwndAdd, TranslateT("Revert to default"));            EnableWindow(hwndAdd, TRUE);            SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Default (global setting)"));            SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Show always when available"));            SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Hide always"));            SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Default (global setting)"));            SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Never"));            SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always"));            SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When space is available"));            SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When needed by status message"));			if(cfg::clcdat) {				FindItem(pcli->hwndContactTree, cfg::clcdat, hContact, &contact, NULL, NULL);                 if(contact && contact->type != CLCIT_CONTACT) {                    DestroyWindow(hWnd);                    return FALSE;                } else {                    TCHAR szTitle[512];                    DWORD dwFlags = cfg::getDword(hContact, "CList", "CLN_Flags", 0);                    BYTE  bSecondLine = cfg::getByte(hContact, "CList", "CLN_2ndline", -1);                    DWORD dwXMask = cfg::getDword(hContact, "CList", "CLN_xmask", 0);                    int   i = 0;                    mir_sntprintf(szTitle, 512, TranslateT("Contact list display and ignore options for %s"), contact ? contact->szText : (TCHAR *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR));                    SetWindowText(hWnd, szTitle);                    SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_MIRANDA));                    pCaps = CallProtoService(contact ? contact->proto : (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0), PS_GETCAPS, PFLAGNUM_1, 0);                    Utils::enableDlgControl(hWnd, IDC_IGN_ALWAYSONLINE, pCaps & PF1_INVISLIST ? TRUE : FALSE);                    Utils::enableDlgControl(hWnd, IDC_IGN_ALWAYSOFFLINE, pCaps & PF1_VISLIST ? TRUE : FALSE);                    CheckDlgButton(hWnd, IDC_IGN_PRIORITY, cfg::getByte(hContact, "CList", "Priority", 0) ? 1 : 0);                    Utils::enableDlgControl(hWnd, IDC_IGN_PRIORITY, TRUE);                    Utils::enableDlgControl(hWnd, IDC_AVATARDISPMODE, TRUE);                    Utils::enableDlgControl(hWnd, IDC_SECONDLINEMODE, TRUE);                    if(dwFlags & ECF_FORCEAVATAR)                        SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_SETCURSEL, 1, 0);                    else if(dwFlags & ECF_HIDEAVATAR)                        SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_SETCURSEL, 2, 0);                    else                        SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_SETCURSEL, 0, 0);                    if(dwFlags & ECF_FORCEOVERLAY)                        SendDlgItemMessage(hWnd, IDC_OVERLAYICON, BM_SETCHECK, BST_CHECKED, 0);                    else if(dwFlags & ECF_HIDEOVERLAY)                        SendDlgItemMessage(hWnd, IDC_OVERLAYICON, BM_SETCHECK, BST_UNCHECKED, 0);                    else                        SendDlgItemMessage(hWnd, IDC_OVERLAYICON, BM_SETCHECK, BST_INDETERMINATE, 0);                    if(dwFlags & ECF_FORCELOCALTIME)                        SendDlgItemMessage(hWnd, IDC_SHOWLOCALTIME1, BM_SETCHECK, BST_CHECKED, 0);                    else if(dwFlags & ECF_HIDELOCALTIME)                        SendDlgItemMessage(hWnd, IDC_SHOWLOCALTIME1, BM_SETCHECK, BST_UNCHECKED, 0);                    else                        SendDlgItemMessage(hWnd, IDC_SHOWLOCALTIME1, BM_SETCHECK, BST_INDETERMINATE, 0);                    if(dwFlags & ECF_FORCEVISIBILITY)                        SendDlgItemMessage(hWnd, IDC_SHOWVISIBILITY, BM_SETCHECK, BST_CHECKED, 0);                    else if(dwFlags & ECF_HIDEVISIBILITY)                        SendDlgItemMessage(hWnd, IDC_SHOWVISIBILITY, BM_SETCHECK, BST_UNCHECKED, 0);                    else                        SendDlgItemMessage(hWnd, IDC_SHOWVISIBILITY, BM_SETCHECK, BST_INDETERMINATE, 0);                    while(xImgCtrlIds[i] != 0) {                        if(dwXMask & (1 << (2 * xImgCtrlBits[i])))                            SendDlgItemMessage(hWnd, xImgCtrlIds[i], BM_SETCHECK, BST_CHECKED, 0);                        else if(dwXMask & (1 << (2 * xImgCtrlBits[i] + 1)))                            SendDlgItemMessage(hWnd, xImgCtrlIds[i], BM_SETCHECK, BST_UNCHECKED, 0);//.........这里部分代码省略.........
开发者ID:raoergsls,项目名称:miranda,代码行数:101,


示例21: IgnoreDialogProc

// dialog procedure for handling the contact ignore dialog (available from the contact menustatic INT_PTR CALLBACK IgnoreDialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){	MCONTACT hContact = (MCONTACT)GetWindowLongPtr(hWnd, GWLP_USERDATA);	switch (msg) {	case WM_INITDIALOG:		{			DWORD dwMask;			ClcContact *contact = nullptr;			int pCaps;			HWND hwndAdd;			hContact = lParam;			SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)hContact);			dwMask = db_get_dw(hContact, "Ignore", "Mask1", 0);			SendMessage(hWnd, WM_USER + 100, hContact, dwMask);			SendMessage(hWnd, WM_USER + 120, 0, 0);			TranslateDialogDefault(hWnd);			hwndAdd = GetDlgItem(hWnd, IDC_IGN_ADDPERMANENTLY); // CreateWindowEx(0, L"CLCButtonClass", L"FOO", WS_VISIBLE | BS_PUSHBUTTON | WS_CHILD | WS_TABSTOP, 200, 276, 106, 24, hWnd, (HMENU)IDC_IGN_ADDPERMANENTLY, g_plugin.getInst(), NULL);			CustomizeButton(hwndAdd, false, true, false);			SendMessage(hwndAdd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)Skin_LoadIcon(SKINICON_OTHER_ADDCONTACT));			SetWindowText(hwndAdd, TranslateT("Add permanently"));			EnableWindow(hwndAdd, db_get_b(hContact, "CList", "NotOnList", 0));			hwndAdd = GetDlgItem(hWnd, IDC_DSP_LOADDEFAULT); // CreateWindowEx(0, L"CLCButtonClass", L"FOO", WS_VISIBLE | BS_PUSHBUTTON | WS_CHILD | WS_TABSTOP, 200, 276, 106, 24, hWnd, (HMENU)IDC_IGN_ADDPERMANENTLY, g_plugin.getInst(), NULL);			CustomizeButton(hwndAdd, false, true, false);			SendMessage(hwndAdd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)Skin_LoadIcon(SKINICON_OTHER_DELETE));			SetWindowText(hwndAdd, TranslateT("Revert to default"));			EnableWindow(hwndAdd, TRUE);			SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Default (global setting)"));			SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Show always when available"));			SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Hide always"));			SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Default (global setting)"));			SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Never"));			SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always"));			SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When space is available"));			SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When needed by status message"));			if (cfg::clcdat) {				Clist_FindItem(g_clistApi.hwndContactTree, cfg::clcdat, hContact, &contact, nullptr, nullptr);				if (contact && contact->type != CLCIT_CONTACT) {					DestroyWindow(hWnd);					return FALSE;				}				else {					wchar_t szTitle[512];					DWORD dwFlags = db_get_dw(hContact, "CList", "CLN_Flags", 0);					BYTE bSecondLine = db_get_b(hContact, "CList", "CLN_2ndline", -1);					mir_snwprintf(szTitle, TranslateT("Contact list display and ignore options for %s"), contact ? contact->szText : Clist_GetContactDisplayName(hContact));					SetWindowText(hWnd, szTitle);					Window_SetSkinIcon_IcoLib(hWnd, SKINICON_OTHER_MIRANDA);					pCaps = CallProtoService(contact ? contact->proto : GetContactProto(hContact), PS_GETCAPS, PFLAGNUM_1, 0);					Utils::enableDlgControl(hWnd, IDC_IGN_ALWAYSONLINE, pCaps & PF1_INVISLIST ? TRUE : FALSE);					Utils::enableDlgControl(hWnd, IDC_IGN_ALWAYSOFFLINE, pCaps & PF1_VISLIST ? TRUE : FALSE);					CheckDlgButton(hWnd, IDC_IGN_PRIORITY, db_get_b(hContact, "CList", "Priority", 0) ? BST_CHECKED : BST_UNCHECKED);					Utils::enableDlgControl(hWnd, IDC_IGN_PRIORITY, TRUE);					Utils::enableDlgControl(hWnd, IDC_AVATARDISPMODE, TRUE);					Utils::enableDlgControl(hWnd, IDC_SECONDLINEMODE, TRUE);					if (dwFlags & ECF_FORCEAVATAR)						SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_SETCURSEL, 1, 0);					else if (dwFlags & ECF_HIDEAVATAR)						SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_SETCURSEL, 2, 0);					else						SendDlgItemMessage(hWnd, IDC_AVATARDISPMODE, CB_SETCURSEL, 0, 0);					if (dwFlags & ECF_FORCEOVERLAY)						CheckDlgButton(hWnd, IDC_OVERLAYICON, BST_CHECKED);					else if (dwFlags & ECF_HIDEOVERLAY)						CheckDlgButton(hWnd, IDC_OVERLAYICON, BST_UNCHECKED);					else						CheckDlgButton(hWnd, IDC_OVERLAYICON, BST_INDETERMINATE);					if (dwFlags & ECF_FORCELOCALTIME)						CheckDlgButton(hWnd, IDC_SHOWLOCALTIME1, BST_CHECKED);					else if (dwFlags & ECF_HIDELOCALTIME)						CheckDlgButton(hWnd, IDC_SHOWLOCALTIME1, BST_UNCHECKED);					else						CheckDlgButton(hWnd, IDC_SHOWLOCALTIME1, BST_INDETERMINATE);					if (bSecondLine == 0xff)						SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_SETCURSEL, 0, 0);					else						SendDlgItemMessage(hWnd, IDC_SECONDLINEMODE, CB_SETCURSEL, (WPARAM)(bSecondLine + 1), 0);				}			}			WindowList_Add(hWindowListIGN, hWnd, hContact);			ShowWindow(hWnd, SW_SHOWNORMAL);		}		return TRUE;	case WM_COMMAND:		switch (LOWORD(wParam)) {		case IDC_IGN_PRIORITY://.........这里部分代码省略.........
开发者ID:tweimer,项目名称:miranda-ng,代码行数:101,


示例22: sttNickListHook

static void sttNickListHook( JABBER_LIST_ITEM* item, GCHOOK* gch ){	JABBER_RESOURCE_STATUS *me = NULL, *him = NULL;	for ( int i=0; i < item->resourceCount; i++ ) {		JABBER_RESOURCE_STATUS& p = item->resource[i];		if ( !lstrcmp( p.resourceName, item->nick  )) me = &p;		if ( !lstrcmp( p.resourceName, gch->ptszUID )) him = &p;	}	if ( him == NULL || me == NULL )		return;	TCHAR szBuffer[ 1024 ];	switch( gch->dwData ) {	case IDM_LEAVE:		JabberGcQuit( item, 0, 0 );		break;	case IDM_VCARD:	{		HANDLE hContact;		JABBER_SEARCH_RESULT jsr;//		_tcsncpy(jsr.jid, him->jid, SIZEOF(jsr.jid));		mir_sntprintf(jsr.jid, SIZEOF(jsr.jid), _T("%s/%s"), item->jid, him->resourceName );		jsr.hdr.cbSize = sizeof(JABBER_SEARCH_RESULT);				JABBER_LIST_ITEM* item = JabberListAdd( LIST_VCARD_TEMP, jsr.jid );		JabberListAddResource( LIST_VCARD_TEMP, jsr.jid, him->status, him->statusMessage);		hContact=(HANDLE)CallProtoService(jabberProtoName, PS_ADDTOLIST, PALF_TEMPORARY,(LPARAM)&jsr);		int iqId = JabberSerialNext(); // Requesto for version		XmlNodeIq iq( "get", iqId, jsr.jid );		XmlNode* query = iq.addQuery( "jabber:iq:version" );		JabberSend( jabberThreadInfo->s, iq );				CallService(MS_USERINFO_SHOWDIALOG,(WPARAM)hContact,0);		break;	}	case IDM_KICK:	{		mir_sntprintf( szBuffer, SIZEOF(szBuffer), _T("%s %s"), TranslateT( "Reason to kick" ), him->resourceName );		if ( JabberEnterString( szBuffer, SIZEOF(szBuffer))) {			XmlNodeIq iq( "set", NOID, item->jid );			XmlNode* query = iq.addQuery( xmlnsAdmin );			XmlNode* item = query->addChild( "item" ); item->addAttr( "nick", him->resourceName ); item->addAttr( "role", "none" );			item->addChild( "reason", szBuffer );			JabberSend( jabberThreadInfo->s, iq );		}		break;	}	case IDM_BAN:		mir_sntprintf( szBuffer, SIZEOF(szBuffer), _T("%s %s"), TranslateT( "Reason to ban" ), him->resourceName );		if ( JabberEnterString( szBuffer, SIZEOF(szBuffer))) {			XmlNodeIq iq( "set", NOID, item->jid );			XmlNode* query = iq.addQuery( xmlnsAdmin );			XmlNode* item = query->addChild( "item" ); item->addAttr( "nick", him->resourceName ); item->addAttr( "affiliation", "outcast" );			item->addChild( "reason", szBuffer );			JabberSend( jabberThreadInfo->s, iq );		}		break;	case IDM_VOICE:		JabberAdminSet( item->jid, xmlnsAdmin, "nick", him->resourceName,			"role", ( him->role == ROLE_PARTICIPANT ) ? _T("visitor") : _T("participant"));		break;	case IDM_MODERATOR:		JabberAdminSet( item->jid, xmlnsAdmin, "nick", him->resourceName,			"role", ( him->role == ROLE_MODERATOR ) ? _T("participant") : _T("moderator"));		break;	case IDM_ADMIN:		JabberAdminSet( item->jid, xmlnsAdmin, "nick", him->resourceName,			"affiliation", ( him->affiliation==AFFILIATION_ADMIN )? _T("member") : _T("admin"));		break;	case IDM_OWNER:		JabberAdminSet( item->jid, xmlnsAdmin, "nick", him->resourceName,			"affiliation", ( him->affiliation==AFFILIATION_OWNER ) ? _T("admin") : _T("owner"));		break;}	}
开发者ID:BackupTheBerlios,项目名称:mgoodies-svn,代码行数:83,


示例23: sizeof

int CMimAPI::MessageEventAdded(WPARAM hContact, LPARAM lParam){	TCHAR szName[CONTAINER_NAMELEN + 1];	HANDLE hDbEvent = (HANDLE)lParam;	DBEVENTINFO dbei = { sizeof(dbei) };	db_event_get(hDbEvent, &dbei);	HWND hwnd = M.FindWindow(hContact);	if (hwnd == NULL)		hwnd = M.FindWindow(db_event_getContact(hDbEvent));	BOOL isCustomEvent = IsCustomEvent(dbei.eventType);	BOOL isShownCustomEvent = DbEventIsForMsgWindow(&dbei);	if (dbei.markedRead() || (isCustomEvent && !isShownCustomEvent))		return 0;	CallServiceSync(MS_CLIST_REMOVEEVENT, hContact, 1);	bool bAllowAutoCreate = false;	bool bAutoPopup = M.GetByte(SRMSGSET_AUTOPOPUP, SRMSGDEFSET_AUTOPOPUP) != 0;	bool bAutoCreate = M.GetByte("autotabs", 1) != 0;	bool bAutoContainer = M.GetByte("autocontainer", 1) != 0;	DWORD dwStatusMask = M.GetDword("autopopupmask", -1);	if (hwnd) {		TContainerData *pTargetContainer = 0;		SendMessage(hwnd, DM_QUERYCONTAINER, 0, (LPARAM)&pTargetContainer);		if (pTargetContainer == NULL || !PluginConfig.m_HideOnClose || IsWindowVisible(pTargetContainer->hwnd))			return 0;		WINDOWPLACEMENT wp = { 0 };		wp.length = sizeof(wp);		GetWindowPlacement(pTargetContainer->hwnd, &wp);		GetContainerNameForContact(hContact, szName, CONTAINER_NAMELEN);		if (bAutoPopup || bAutoCreate) {			if (bAutoPopup) {				if (wp.showCmd == SW_SHOWMAXIMIZED)					ShowWindow(pTargetContainer->hwnd, SW_SHOWMAXIMIZED);				else					ShowWindow(pTargetContainer->hwnd, SW_SHOWNOACTIVATE);				return 0;			}			TContainerData *pContainer = FindContainerByName(szName);			if (pContainer != NULL) {				if (bAutoContainer) {					ShowWindow(pTargetContainer->hwnd, SW_SHOWMINNOACTIVE);					return 0;				}				goto nowindowcreate;			}			else if (bAutoContainer) {				ShowWindow(pTargetContainer->hwnd, SW_SHOWMINNOACTIVE);				return 0;			}		}	}	else {		switch (dbei.eventType) {		case EVENTTYPE_AUTHREQUEST:		case EVENTTYPE_ADDED:			return 0;		case EVENTTYPE_FILE:			tabSRMM_ShowPopup(hContact, hDbEvent, dbei.eventType, 0, 0, 0, dbei.szModule, 0);			return 0;		}	}	// if no window is open, we are not interested in anything else but unread message events	// new message 	if (!nen_options.iNoSounds)		SkinPlaySound("AlertMsg");	if (nen_options.iNoAutoPopup)		goto nowindowcreate;	GetContainerNameForContact(hContact, szName, CONTAINER_NAMELEN);	if (dwStatusMask == -1)		bAllowAutoCreate = true;	else {		char *szProto = GetContactProto(hContact);		if (szProto && !strcmp(szProto, META_PROTO))			szProto = GetContactProto(db_mc_getSrmmSub(hContact));		if (szProto) {			DWORD dwStatus = (DWORD)CallProtoService(szProto, PS_GETSTATUS, 0, 0);			if (dwStatus == 0 || dwStatus <= ID_STATUS_OFFLINE || ((1 << (dwStatus - ID_STATUS_ONLINE)) & dwStatusMask))           // should never happen, but...				bAllowAutoCreate = true;		}	}	if (bAllowAutoCreate && (bAutoPopup || bAutoCreate)) {		if (bAutoPopup) {			TContainerData *pContainer = FindContainerByName(szName);			if (pContainer == NULL)				pContainer = CreateContainer(szName, FALSE, hContact);//.........这里部分代码省略.........
开发者ID:0xmono,项目名称:miranda-ng,代码行数:101,



注:本文中的CallProtoService函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CallQueryInterface函数代码示例
C++ CallNextEventHandler函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。