这篇教程C++ CallService函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CallService函数的典型用法代码示例。如果您正苦于以下问题:C++ CallService函数的具体用法?C++ CallService怎么用?C++ CallService使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CallService函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: buildUinListchar* CIcqProto::buildUinList(int subtype, size_t wMaxLen, MCONTACT *hContactResume){ MCONTACT hContact; WORD wCurrentLen = 0; DWORD dwUIN; uid_str szUID; int add; char *szList = (char*)SAFE_MALLOC(CallService(MS_DB_CONTACT_GETCOUNT, 0, 0) * UINMAXLEN); char szLen[2]; szLen[1] = '/0'; if (*hContactResume) hContact = *hContactResume; else hContact = db_find_first(m_szModuleName); while (hContact != NULL) { if (!getContactUid(hContact, &dwUIN, &szUID)) { szLen[0] = (char)mir_strlen(strUID(dwUIN, szUID)); switch (subtype) { case BUL_VISIBLE: add = ID_STATUS_ONLINE == getWord(hContact, "ApparentMode", 0); break; case BUL_INVISIBLE: add = ID_STATUS_OFFLINE == getWord(hContact, "ApparentMode", 0); break; case BUL_TEMPVISIBLE: add = getByte(hContact, "TemporaryVisible", 0); // clear temporary flag // Here we assume that all temporary contacts will be in one packet setByte(hContact, "TemporaryVisible", 0); break; default: add = 1; // If we are in SS mode, we only add those contacts that are // not in our SS list, or are awaiting authorization, to our // client side list if (m_bSsiEnabled && getWord(hContact, DBSETTING_SERVLIST_ID, 0) && !getByte(hContact, "Auth", 0)) add = 0; // Never add hidden contacts to CS list if (db_get_b(hContact, "CList", "Hidden", 0)) add = 0; break; } if (add) { wCurrentLen += szLen[0] + 1; if (wCurrentLen > wMaxLen) { *hContactResume = hContact; return szList; } strcat(szList, szLen); strcat(szList, szUID); } } hContact = db_find_next(hContact, m_szModuleName); } *hContactResume = NULL; return szList;}
开发者ID:martok,项目名称:miranda-ng,代码行数:73,
示例2: FrameIsFloatingbool FrameIsFloating() { if(Frameid == -1) return true; // no frames, always floating return (CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLOATING, Frameid), 0) != 0);}
开发者ID:darkscout,项目名称:sje-miranda-plugins,代码行数:6,
示例3: Parserint Parser(){ static NETLIBPACKETRECVER nlpr = {0}; char *ptr; char tmp[256]; int i; char *buf; static char ver[16]; nlpr.cbSize = sizeof(nlpr); nlpr.dwTimeout = 5; if(!ghConnection) { mir_forkthread(&Start, 0); } if(ghConnection) { int recvResult;/* do { recvResult = CallService(MS_NETLIB_GETMOREPACKETS,(WPARAM)ghPacketReciever, (LPARAM)&nlpr); if(recvResult == SOCKET_ERROR) { ReStart(); return 1; } } while(recvResult > 0);*/ if(!Connected) { char tmp[128]; char *tmp2 = mir_t2a(gbPassword); recvResult = CallService(MS_NETLIB_GETMOREPACKETS,(WPARAM)ghPacketReciever, (LPARAM)&nlpr); if(recvResult == SOCKET_ERROR) { mir_forkthread(&ReStart, 0);// ReStart(); return 1; } if(mir_strlen(tmp2) > 2) { mir_strcpy(tmp, "password "); mir_strcat(tmp, tmp2); mir_strcat(tmp, "/n"); Netlib_Send(ghConnection, tmp, (int)mir_strlen(tmp), 0); recvResult = CallService(MS_NETLIB_GETMOREPACKETS,(WPARAM)ghPacketReciever, (LPARAM)&nlpr); if(recvResult == SOCKET_ERROR) { mir_forkthread(&ReStart, 0); return 1; } } mir_free(tmp2); } Netlib_Send(ghConnection, "status/n", (int)mir_strlen("status/n"), 0); recvResult = CallService(MS_NETLIB_GETMOREPACKETS,(WPARAM)ghPacketReciever, (LPARAM)&nlpr); if(recvResult == SOCKET_ERROR) { mir_forkthread(&ReStart, 0); return 1; } Netlib_Send(ghConnection, "currentsong/n", (int)mir_strlen("currentsong/n"), 0); recvResult = CallService(MS_NETLIB_GETMOREPACKETS,(WPARAM)ghPacketReciever, (LPARAM)&nlpr); if(recvResult == SOCKET_ERROR) { mir_forkthread(&ReStart, 0); return 1; } nlpr.bytesUsed = nlpr.bytesAvailable; } buf = (char*)nlpr.buffer; if(ptr = strstr(buf, "MPD")) { Connected = TRUE; ptr = &ptr[4]; for(i = 0; ((ptr[i] != '/n') && (ptr[i] != '/0')); i++) tmp[i] = ptr[i]; tmp[i] = '/0'; strncpy_s(ver, tmp, _TRUNCATE); SongInfo.txtver = mir_utf8decodeT(tmp); } else SongInfo.txtver = mir_utf8decodeT(ver); if(ptr = strstr(buf, "file:")) { ptr = &ptr[6]; for(i = 0; ((ptr[i] != '/n') && (ptr[i] != '/0')); i++) tmp[i] = ptr[i]; tmp[i] = '/0'; SongInfo.mfile = mir_utf8decodeT(tmp); } else SongInfo.mfile = mir_tstrdup(_T("")); if(ptr = strstr(buf, "Time:")) { ptr = &ptr[6]; for(i = 0; ((ptr[i] != '/n') && (ptr[i] != '/0')); i++) tmp[i] = ptr[i]; tmp[i] = '/0'; SongInfo.total = atoi(tmp); }//.........这里部分代码省略.........
开发者ID:kmdtukl,项目名称:miranda-ng,代码行数:101,
示例4: debugLogvoid CSametimeProto::DeinitConferenceMenu(){ debugLog(_T("CSametimeProto::DeinitConferenceMenu()")); CallService(MO_REMOVEMENUITEM, (WPARAM)hLeaveChatMenuItem, 0); CallService(MO_REMOVEMENUITEM, (WPARAM)hCreateChatMenuItem, 0);}
开发者ID:martok,项目名称:miranda-ng,代码行数:6,
示例5: YmsgrLinksUninitvoid YmsgrLinksUninit(void){ DestroyServiceFunction(hServiceParseLink); CallService(MS_ASSOCMGR_REMOVEURLTYPE, 0, (LPARAM)"ymsgr:");}
开发者ID:Ganster41,项目名称:miranda-ng,代码行数:5,
示例6: DlgProcRecvFileINT_PTR CALLBACK DlgProcRecvFile(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){ FileDlgData *dat = (FileDlgData*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); { TCHAR szPath[450]; CLISTEVENT* cle = (CLISTEVENT*)lParam; dat = (FileDlgData*)mir_calloc(sizeof(FileDlgData)); SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)dat); dat->hContact = cle->hContact; dat->hDbEvent = cle->hDbEvent; dat->hPreshutdownEvent = HookEventMessage(ME_SYSTEM_PRESHUTDOWN, hwndDlg, M_PRESHUTDOWN); dat->dwTicks = GetTickCount(); EnumChildWindows(hwndDlg, ClipSiblingsChildEnumProc, 0); Window_SetIcon_IcoLib(hwndDlg, SKINICON_EVENT_FILE); Button_SetIcon_IcoLib(hwndDlg, IDC_ADD, SKINICON_OTHER_ADDCONTACT, LPGEN("Add contact permanently to list")); Button_SetIcon_IcoLib(hwndDlg, IDC_DETAILS, SKINICON_OTHER_USERDETAILS, LPGEN("View user's details")); Button_SetIcon_IcoLib(hwndDlg, IDC_HISTORY, SKINICON_OTHER_HISTORY, LPGEN("View user's history")); Button_SetIcon_IcoLib(hwndDlg, IDC_USERMENU, SKINICON_OTHER_DOWNARROW, LPGEN("User menu")); TCHAR *contactName = pcli->pfnGetContactDisplayName(dat->hContact, 0); SetDlgItemText(hwndDlg, IDC_FROM, contactName); GetContactReceivedFilesDir(dat->hContact, szPath, SIZEOF(szPath), TRUE); SetDlgItemText(hwndDlg, IDC_FILEDIR, szPath); SHAutoComplete(GetWindow(GetDlgItem(hwndDlg, IDC_FILEDIR), GW_CHILD), 1); for (int i = 0; i < MAX_MRU_DIRS; i++) { char idstr[32]; mir_snprintf(idstr, SIZEOF(idstr), "MruDir%d", i); DBVARIANT dbv; if (db_get_ts(NULL, "SRFile", idstr, &dbv)) break; SendDlgItemMessage(hwndDlg, IDC_FILEDIR, CB_ADDSTRING, 0, (LPARAM)dbv.ptszVal); db_free(&dbv); } db_event_markRead(dat->hContact, dat->hDbEvent); DBEVENTINFO dbei = { sizeof(dbei) }; dbei.cbBlob = db_event_getBlobSize(dat->hDbEvent); if (dbei.cbBlob > 4 && dbei.cbBlob <= 8196) { dbei.pBlob = (PBYTE)alloca(dbei.cbBlob + 1); db_event_get(dat->hDbEvent, &dbei); dbei.pBlob[dbei.cbBlob] = 0; dat->fs = cle->lParam ? (HANDLE)cle->lParam : (HANDLE)*(PDWORD)dbei.pBlob; char *str = (char*)dbei.pBlob + 4; ptrT ptszFileName(DbGetEventStringT(&dbei, str)); SetDlgItemText(hwndDlg, IDC_FILENAMES, ptszFileName); unsigned len = (unsigned)strlen(str) + 1; if (len + 4 < dbei.cbBlob) { str += len; ptrT ptszDescription(DbGetEventStringT(&dbei, str)); SetDlgItemText(hwndDlg, IDC_MSG, ptszDescription); } } else DestroyWindow(hwndDlg); TCHAR datetimestr[64]; tmi.printTimeStamp(NULL, dbei.timestamp, _T("t d"), datetimestr, SIZEOF(datetimestr), 0); SetDlgItemText(hwndDlg, IDC_DATE, datetimestr); char* szProto = GetContactProto(dat->hContact); if (szProto) { int hasName = 0; char buf[128]; CONTACTINFO ci = { 0 }; ci.cbSize = sizeof(ci); ci.hContact = dat->hContact; ci.szProto = szProto; ci.dwFlag = CNF_UNIQUEID; if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM)&ci)) { switch (ci.type) { case CNFT_ASCIIZ: hasName = 1; mir_snprintf(buf, SIZEOF(buf), "%s", ci.pszVal); mir_free(ci.pszVal); break; case CNFT_DWORD: hasName = 1; mir_snprintf(buf, SIZEOF(buf), "%u", ci.dVal); break; } } if (hasName) SetDlgItemTextA(hwndDlg, IDC_NAME, buf); else SetDlgItemText(hwndDlg, IDC_NAME, contactName); } if (db_get_b(dat->hContact, "CList", "NotOnList", 0)) {//.........这里部分代码省略.........
开发者ID:Ganster41,项目名称:miranda-ng,代码行数:101,
示例7: AddEventstruct CListEvent* AddEvent(CLISTEVENT *cle){ struct CListEvent* p = saveAddEvent(cle); if ( p == NULL ) return NULL; if (1) { if (p->cle.hContact != 0 && p->cle.hDbEvent != (HANDLE) 1 && !(p->cle.flags & CLEF_ONLYAFEW)) { int j; struct NotifyMenuItemExData *nmi = 0; char *szProto; TCHAR *szName; MENUITEMINFO mii = {0}; mii.cbSize = sizeof(mii); mii.fMask = MIIM_DATA | MIIM_BITMAP | MIIM_ID; if (p->cle.pszService && !strncmp("SRMsg/ReadMessage", p->cle.pszService, 17)) { // dup check only for msg events for (j = 0; j < GetMenuItemCount(cfg::dat.hMenuNotify); j++) { if (GetMenuItemInfo(cfg::dat.hMenuNotify, j, TRUE, &mii) != 0) { nmi = (struct NotifyMenuItemExData *) mii.dwItemData; if (nmi != 0 && (HANDLE) nmi->hContact == (HANDLE) p->cle.hContact && nmi->iIcon == p->imlIconIndex) return p; } } } szProto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) p->cle.hContact, 0); szName = pcli->pfnGetContactDisplayName(p->cle.hContact, 0); if (szProto && szName) { nmi = (struct NotifyMenuItemExData *) malloc(sizeof(struct NotifyMenuItemExData)); if (nmi) { TCHAR szBuffer[128]; TCHAR* szStatus = pcli->pfnGetStatusModeDescription(cfg::getWord(p->cle.hContact, szProto, "Status", ID_STATUS_OFFLINE), 0);#if defined(_UNICODE) TCHAR szwProto[64]; MultiByteToWideChar(CP_ACP, 0, szProto, -1, szwProto, 64); szwProto[63] = 0; _snwprintf(szBuffer, SIZEOF(szBuffer), L"%s: %s (%s)", szwProto, szName, szStatus);#else _snprintf(szBuffer, SIZEOF(szBuffer), "%s: %s (%s)", szProto, szName, szStatus);#endif szBuffer[127] = 0; AppendMenu(cfg::dat.hMenuNotify, MF_BYCOMMAND | MF_STRING, cfg::dat.wNextMenuID, szBuffer); mii.hbmpItem = HBMMENU_CALLBACK; nmi->hContact = p->cle.hContact; nmi->iIcon = p->imlIconIndex; nmi->hIcon = p->cle.hIcon; nmi->hDbEvent = p->cle.hDbEvent; mii.dwItemData = (ULONG_PTR) nmi; mii.wID = cfg::dat.wNextMenuID; SetMenuItemInfo(cfg::dat.hMenuNotify, cfg::dat.wNextMenuID, FALSE, &mii); p-> menuId = cfg::dat.wNextMenuID; cfg::dat.wNextMenuID++; if (cfg::dat.wNextMenuID > 0x7fff) cfg::dat.wNextMenuID = 1; cfg::dat.hIconNotify = p->imlIconIndex; } } } else if (p->cle.hContact != 0 && (p->cle.flags & CLEF_ONLYAFEW)) { cfg::dat.hIconNotify = p->imlIconIndex; cfg::dat.hUpdateContact = p->cle.hContact; } if (cfg::dat.dwFlags & CLUI_STICKYEVENTS) { HANDLE hItem = (HANDLE) SendMessage(pcli->hwndContactTree, CLM_FINDCONTACT, (WPARAM) p->cle.hContact, 0); if (hItem) { SendMessage(pcli->hwndContactTree, CLM_SETSTICKY, (WPARAM) hItem, 1); pcli->pfnClcBroadcast(INTM_PROTOCHANGED, (WPARAM) p->cle.hContact, 0); } } if (pcli->events.count > 0) { cfg::dat.bEventAreaEnabled = TRUE; if (cfg::dat.notifyActive == 0) { cfg::dat.notifyActive = 1; HideShowNotifyFrame(); } } InvalidateRect(hwndEventFrame, NULL, FALSE); if(cfg::dat.bUseFloater & CLUI_USE_FLOATER && cfg::dat.bUseFloater & CLUI_FLOATER_EVENTS) SFL_Update(0, 0, 0, NULL, FALSE); } return p;}
开发者ID:raoergsls,项目名称:miranda,代码行数:81,
示例8: EventAreaWndProcLRESULT CALLBACK EventAreaWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ switch(msg) { case WM_CREATE: hwndEventFrame = hwnd; return FALSE; case WM_MEASUREITEM: { MEASUREITEMSTRUCT *lpi = (LPMEASUREITEMSTRUCT) lParam; MENUITEMINFOA mii = {0}; mii.cbSize = sizeof(mii); mii.fMask = MIIM_DATA | MIIM_ID; if (GetMenuItemInfoA(cfg::dat.hMenuNotify, lpi->itemID, FALSE, &mii) != 0) { if (mii.dwItemData == lpi->itemData) { lpi->itemWidth = 8 + 16; lpi->itemHeight = 0; return TRUE; } } break; } case WM_NCCALCSIZE: return FrameNCCalcSize(hwnd, DefWindowProc, wParam, lParam, wndFrameEventArea ? wndFrameEventArea->TitleBar.ShowTitleBar : 0); case WM_NCPAINT: return FrameNCPaint(hwnd, DefWindowProc, wParam, lParam, wndFrameEventArea ? wndFrameEventArea->TitleBar.ShowTitleBar : 0); case WM_DRAWITEM: { LPDRAWITEMSTRUCT dis = (LPDRAWITEMSTRUCT) lParam; if (dis->hwndItem == (HWND) cfg::dat.hMenuNotify) { MENUITEMINFOA mii = {0}; struct NotifyMenuItemExData *nmi = 0; int iIcon; HICON hIcon; mii.cbSize = sizeof(mii); mii.fMask = MIIM_DATA; if (GetMenuItemInfoA(cfg::dat.hMenuNotify, (UINT) dis->itemID, FALSE, &mii) != 0) { nmi = (struct NotifyMenuItemExData *) mii.dwItemData; if (nmi) { iIcon = CallService(MS_CLIST_GETCONTACTICON, (WPARAM) nmi->hContact, 0); hIcon = ImageList_GetIcon(hCListImages, iIcon, ILD_NORMAL); pcli->pfnDrawMenuItem(dis, hIcon, nmi->hIcon); return TRUE; } } } break; } case WM_LBUTTONUP: if(cfg::dat.bEventAreaEnabled) SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_NOTIFYBUTTON, 0), 0); break; case WM_COMMAND: if(LOWORD(wParam) == IDC_NOTIFYBUTTON) { int iSelection; MENUITEMINFO mii = {0}; POINT pt; struct NotifyMenuItemExData *nmi = 0; int iCount = GetMenuItemCount(cfg::dat.hMenuNotify); BOOL result; GetCursorPos(&pt); mii.cbSize = sizeof(mii); mii.fMask = MIIM_DATA; if (iCount > 1) iSelection = TrackPopupMenu(cfg::dat.hMenuNotify, TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL); else iSelection = GetMenuItemID(cfg::dat.hMenuNotify, 0); result = GetMenuItemInfo(cfg::dat.hMenuNotify, (UINT) iSelection, FALSE, &mii); if (result != 0) { nmi = (struct NotifyMenuItemExData *) mii.dwItemData; if (nmi) { CLISTEVENT *cle = MyGetEvent(iSelection); if (cle) { CLISTEVENT *cle1 = NULL; CallService(cle->pszService, (WPARAM) NULL, (LPARAM) cle); // re-obtain the pointer, it may already be invalid/point to another event if the // event we're interested in was removed by the service (nasty one...) cle1 = MyGetEvent(iSelection); if (cle1 != NULL) CallService(MS_CLIST_REMOVEEVENT, (WPARAM) cle->hContact, (LPARAM) cle->hDbEvent); } } } break; } break; case WM_ERASEBKGND: return TRUE; case WM_PAINT: { PAINTSTRUCT ps; RECT rc, rcClient;//.........这里部分代码省略.........
开发者ID:raoergsls,项目名称:miranda,代码行数:101,
示例9: ContactListSubclassProc//.........这里部分代码省略......... else { TreeView_SetItemState(hWnd, hItem, 0, TVIS_SELECTED); dat->SelectedItems.RemoveElem(nIndex); } dat->SelectGroups(hItem, nIndex == -1); NMCLIST nm; nm.hdr.code = MCLN_SELCHANGED; nm.hdr.hwndFrom = hWnd; nm.hdr.idFrom = GetDlgCtrlID(hWnd); nm.OldSelection = &OldSelection; nm.NewSelection = &dat->SelectedItems; SendMessage(GetParent(hWnd), WM_NOTIFY, 0, (LPARAM)&nm); return 0; } // if it was a click on the selected item and there's need to do something in this case, then send SELCHANGED notification by ourselves, as the tree control doesn't do anything if (hItem == TreeView_GetSelection(hWnd) && (dat->SelectedItems.GetSize() != 1 || (dat->SelectedItems.GetSize() == 1 && dat->SelectedItems[0] != hItem))) { TreeView_SetItemState(hWnd, hItem, TVIS_SELECTED, TVIS_SELECTED); NMTREEVIEW nm = { 0 }; nm.hdr.code = TVN_SELCHANGED; nm.hdr.hwndFrom = hWnd; nm.hdr.idFrom = GetDlgCtrlID(hWnd); nm.itemOld.hItem = TreeView_GetSelection(hWnd); nm.itemOld.mask = TVIF_HANDLE | TVIF_STATE | TVIF_PARAM; TreeView_GetItem(hWnd, &nm.itemOld); nm.itemNew = nm.itemOld; SendMessage(GetParent(hWnd), WM_NOTIFY, 0, (LPARAM)&nm); } } } break; case WM_SETFOCUS: case WM_KILLFOCUS: for (int i = 0; i < dat->SelectedItems.GetSize(); i++) { RECT rc; if (TreeView_GetItemRect(hWnd, dat->SelectedItems[i], &rc, false)) InvalidateRect(hWnd, &rc, false); } break; case WM_SIZE: case WM_HSCROLL: InvalidateRect(hWnd, NULL, false); break; case WM_MEASUREITEM: if (!wParam) // if the message was sent by a menu return Menu_MeasureItem((LPMEASUREITEMSTRUCT)lParam); break; case WM_DRAWITEM: if (!wParam) // if the message was sent by a menu return Menu_DrawItem((LPDRAWITEMSTRUCT)lParam); break; case WM_CONTEXTMENU: { POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; HTREEITEM hItem = NULL; if (pt.x == -1 && pt.y == -1) { if (dat->SelectedItems.GetSize() == 1) { hItem = dat->SelectedItems[0]; TreeView_EnsureVisible(hWnd, hItem); RECT rc; TreeView_GetItemRect(hWnd, hItem, &rc, true); pt.x = rc.left; pt.y = rc.bottom; } } else { DWORD hitFlags; ScreenToClient(hWnd, &pt); hItem = dat->HitTest(&pt, &hitFlags); if (!(hitFlags & MCLCHT_ONITEM)) hItem = NULL; } if (hItem) { MCONTACT hContact = dat->GetItemData(hItem).hContact; if (IsHContactContact(hContact)) { HMENU hMenu = Menu_BuildContactMenu(hContact); if (hMenu) { ClientToScreen(hWnd, &pt); CallService(MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM(TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hWnd, NULL), MPCF_CONTACTMENU), hContact); DestroyMenu(hMenu); return 0; } } } } break; case WM_DESTROY: if (dat->ExtraImageList) ImageList_Destroy(dat->ExtraImageList); dat->SelectedItems.RemoveAll(); dat->Items.RemoveAll(); break; } return CallWindowProc(dat->OrigTreeViewProc, hWnd, Msg, wParam, lParam);}
开发者ID:Seldom,项目名称:miranda-ng,代码行数:101,
示例10: DlgProcAddedINT_PTR CALLBACK DlgProcAdded(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){ MEVENT hDbEvent = (MEVENT)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 = 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; MCONTACT hContact = DbGetAuthEventContact(&dbei); char* nick = (char*)dbei.pBlob + sizeof(DWORD) * 2; char* first = nick + mir_strlen(nick) + 1; char* last = first + mir_strlen(first) + 1; char* email = last + mir_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 = Proto_GetAccount(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, _T("%s %s"), firstT, lastT); else if (firstT[0]) off = mir_sntprintf(name, _T("%s"), firstT); else if (lastT[0]) off = mir_sntprintf(name, _T("%s"), lastT); if (nickT[0]) { if (off) mir_sntprintf(name + off, _countof(name) - off, _T(" (%s)"), nickT); else _tcsncpy_s(name, nickT, _TRUNCATE); } if (!name[0]) _tcsncpy_s(name, TranslateT("<Unknown>"), _TRUNCATE); TCHAR hdr[256]; if (uin && emailT[0]) mir_sntprintf(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, TranslateT("%s added you to the contact list/n%u on %s"), name, uin, acc->tszAccountName); else mir_sntprintf(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_CONTACT_ID || !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.hDbEvent = hDbEvent; acs.handleType = HANDLE_EVENT; acs.szProto = ""; CallService(MS_ADDCONTACT_SHOW, (WPARAM)hwndDlg, (LPARAM)&acs); MCONTACT hContact = (MCONTACT)GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_DETAILS), GWLP_USERDATA); if ((hContact == INVALID_CONTACT_ID) || !db_get_b(hContact, "CList", "NotOnList", 0)) ShowWindow(GetDlgItem(hwndDlg, IDC_ADD), FALSE); } break; case IDC_DETAILS: { MCONTACT hContact = (MCONTACT)GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_DETAILS), GWLP_USERDATA); CallService(MS_USERINFO_SHOWDIALOG, hContact, 0); } break; case IDOK: {//.........这里部分代码省略.........
开发者ID:truefriend-cz,项目名称:miranda-ng,代码行数:101,
示例11: DlgProcAuthReqINT_PTR CALLBACK DlgProcAuthReq(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam){ MEVENT hDbEvent = (MEVENT)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 = 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; MCONTACT hContact = DbGetAuthEventContact(&dbei); char *nick = (char*)dbei.pBlob + sizeof(DWORD) * 2; char *first = nick + mir_strlen(nick) + 1; char *last = first + mir_strlen(first) + 1; char *email = last + mir_strlen(last) + 1; char *reason = email + mir_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 = Proto_GetAccount(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, _T("%s %s"), (TCHAR*)firstT, (TCHAR*)lastT); else if (firstT[0]) off = mir_sntprintf(name, _T("%s"), (TCHAR*)firstT); else if (lastT[0]) off = mir_sntprintf(name, _T("%s"), (TCHAR*)lastT); if (mir_tstrlen(nickT)) { if (off) mir_sntprintf(name + off, _countof(name) - off, _T(" (%s)"), (TCHAR*)nickT); else _tcsncpy_s(name, nickT, _TRUNCATE); } if (!name[0]) _tcsncpy_s(name, TranslateT("<Unknown>"), _TRUNCATE); TCHAR hdr[256]; if (uin && emailT[0]) mir_sntprintf(hdr, TranslateT("%s requested authorization/n%u (%s) on %s"), name, uin, (TCHAR*)emailT, acc->tszAccountName); else if (uin) mir_sntprintf(hdr, TranslateT("%s requested authorization/n%u on %s"), name, uin, acc->tszAccountName); else mir_sntprintf(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_CONTACT_ID || !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:truefriend-cz,项目名称:miranda-ng,代码行数:101,
示例12: getContactXStatus//.........这里部分代码省略......... wAdditionalData += 16; if (m_bXStatusEnabled && bXStatus != 0) wAdditionalData += 16;#ifdef DBG_CAPHTML wAdditionalData += 16;#endif#ifdef DBG_AIMCONTACTSEND wAdditionalData += 16;#endif wAdditionalData += CustomCapList.getCount() * 16; //MIM/PackName bool bHasPackName = false; DBVARIANT dbv; if (!db_get_s(NULL, "ICQCaps", "PackName", &dbv)) { //MIM/PackName bHasPackName = true; wAdditionalData += 16; } serverPacketInit(&packet, 62 + wAdditionalData); packFNACHeader(&packet, ICQ_LOCATION_FAMILY, ICQ_LOCATION_SET_USER_INFO); /* TLV(5): capability data */ packWord(&packet, 0x0005); packWord(&packet, WORD(48 + wAdditionalData));#ifdef DBG_CAPMTN packDWord(&packet, 0x563FC809); // CAP_TYPING packDWord(&packet, 0x0B6F41BD); packDWord(&packet, 0x9F794226); packDWord(&packet, 0x09DFA2F3);#endif packShortCapability(&packet, 0x1349); // AIM_CAPS_ICQSERVERRELAY // Broadcasts the capability to receive UTF8 encoded messages if (m_bUtfEnabled) packShortCapability(&packet, 0x134E); // CAP_UTF8MSGS#ifdef DBG_NEWCAPS // Tells server we understand to new format of caps packShortCapability(&packet, 0x0000); // CAP_SHORTCAPS#endif#ifdef DBG_CAPXTRAZ packDWord(&packet, 0x1a093c6c); // CAP_XTRAZ packDWord(&packet, 0xd7fd4ec5); // Broadcasts the capability to handle packDWord(&packet, 0x9d51a647); // Xtraz packDWord(&packet, 0x4e34f5a0);#endif if (m_bAvatarsEnabled) packShortCapability(&packet, 0x134C); // CAP_DEVILS#ifdef DBG_OSCARFT // Broadcasts the capability to receive Oscar File Transfers packShortCapability(&packet, 0x1343); // CAP_AIM_FILE#endif // Tells the server we can speak to AIM if (m_bAimEnabled) packShortCapability(&packet, 0x134D); // CAP_AIM_COMPATIBLE#ifdef DBG_AIMCONTACTSEND packShortCapability(&packet, 0x134B); // CAP_SENDBUDDYLIST#endif if (m_bXStatusEnabled && bXStatus != 0) packBuffer(&packet, capXStatus[bXStatus - 1], BINARY_CAP_SIZE); packShortCapability(&packet, 0x1344); // CAP_ICQDIRECT#ifdef DBG_CAPHTML packShortCapability(&packet, 0x0002); // CAP_HTMLMSGS#endif packDWord(&packet, 0x4D697261); // Miranda Signature packDWord(&packet, 0x6E64614E); WORD v[4]; CallService(MS_SYSTEM_GETFILEVERSION, 0, (LPARAM)v); packWord(&packet, v[0]); packWord(&packet, v[1]); packWord(&packet, v[2]); packWord(&packet, v[3]); //MIM/PackName if (bHasPackName) { packBuffer(&packet, (BYTE*)dbv.pszVal, 0x10); db_free(&dbv); } if (CustomCapList.getCount()) for (int i = 0; i < CustomCapList.getCount(); i++) packBuffer(&packet, (PBYTE)CustomCapList[i].caps, 0x10); sendServPacket(&packet);}
开发者ID:martok,项目名称:miranda-ng,代码行数:101,
示例13: lstrcmpiAint GGPROTO::gc_event(WPARAM wParam, LPARAM lParam){ GCHOOK *gch = (GCHOOK *)lParam; GGGC *chat = NULL; uin_t uin; // Check if we got our protocol, and fields are set if (!gch || !gch->pDest || !gch->pDest->ptszID || !gch->pDest->pszModule || lstrcmpiA(gch->pDest->pszModule, m_szModuleName) || !(uin = getDword(GG_KEY_UIN, 0)) || !(chat = gc_lookup(gch->pDest->ptszID))) return 0; // Window terminated (Miranda exit) if (gch->pDest->iType == SESSION_TERMINATE) { debugLog(_T("gc_event(): Terminating chat %x, id %s from chat window..."), chat, gch->pDest->ptszID); // Destroy chat entry free(chat->recipients); list_remove(&chats, chat, 1); // Remove contact from contact list (duh!) should be done by chat.dll !! for (HANDLE hContact = db_find_first(); hContact; ) { HANDLE hNext = db_find_next(hContact); DBVARIANT dbv; if (!getTString(hContact, "ChatRoomID", &dbv)) { if (dbv.ptszVal && !_tcscmp(gch->pDest->ptszID, dbv.ptszVal)) CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0); db_free(&dbv); } hContact = hNext; } return 1; } // Message typed / send only if online if (isonline() && (gch->pDest->iType == GC_USER_MESSAGE) && gch->ptszText) { TCHAR id[32]; UIN2IDT(uin, id); DBVARIANT dbv; GCDEST gcd = { m_szModuleName, gch->pDest->ptszID, GC_EVENT_MESSAGE }; GCEVENT gce = { sizeof(gce), &gcd }; gce.ptszUID = id; gce.ptszText = gch->ptszText; TCHAR* nickT; if (!getTString(GG_KEY_NICK, &dbv)){ nickT = mir_tstrdup(dbv.ptszVal); db_free(&dbv); } else nickT = mir_tstrdup(TranslateT("Me")); gce.ptszNick = nickT; // Get rid of CRLF at back int lc = (int)_tcslen(gch->ptszText) - 1; while(lc >= 0 && (gch->ptszText[lc] == '/n' || gch->ptszText[lc] == '/r')) gch->ptszText[lc --] = 0; gce.time = time(NULL); gce.bIsMe = 1; gce.dwFlags = GCEF_ADDTOLOG; debugLog(_T("gc_event(): Sending conference message to room %s, /"%s/"."), gch->pDest->ptszID, gch->ptszText); CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); mir_free(nickT); char* pszText_utf8 = mir_utf8encodeT(gch->ptszText); gg_EnterCriticalSection(&sess_mutex, "gc_event", 57, "sess_mutex", 1); gg_send_message_confer(sess, GG_CLASS_CHAT, chat->recipients_count, chat->recipients, (BYTE*)pszText_utf8); gg_LeaveCriticalSection(&sess_mutex, "gc_event", 57, 1, "sess_mutex", 1); mir_free(pszText_utf8); return 1; } // Privmessage selected if (gch->pDest->iType == GC_USER_PRIVMESS) { HANDLE hContact = NULL; if ((uin = _ttoi(gch->ptszUID)) && (hContact = getcontact(uin, 1, 0, NULL))) CallService(MS_MSG_SENDMESSAGE, (WPARAM)hContact, 0); } debugLog(_T("gc_event(): Unhandled event %d, chat %x, uin %d, text /"%s/"."), gch->pDest->iType, chat, uin, gch->ptszText); return 0;}
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:88,
示例14: GetSubMenu// IDocHostUIHandlerSTDMETHODIMP IEView::ShowContextMenu(DWORD dwID, POINT *ppt, IUnknown *pcmdTarget, IDispatch *pdispReserved) { IOleCommandTarget * pOleCommandTarget; IOleWindow * pOleWindow; HWND hSPWnd; if (builder == NULL) { // return S_OK; }#ifdef GECKO { return E_NOTIMPL;/* HMENU hMenu; hMenu = GetSubMenu(LoadMenu(hInstance, MAKEINTRESOURCE(IDR_CONTEXTMENU)),0); CallService(MS_LANGPACK_TRANSLATEMENU,(WPARAM)hMenu,0); if (dwID == 6) { // anchor EnableMenuItem(hMenu, ID_MENU_COPYLINK, MF_BYCOMMAND | MF_ENABLED); } else if (dwID == 5) { // text select EnableMenuItem(hMenu, ID_MENU_COPY, MF_BYCOMMAND | MF_ENABLED); } else if (dwID == 1) { // control (image) EnableMenuItem(hMenu, ID_MENU_SAVEIMAGE, MF_BYCOMMAND | MF_ENABLED); } if (builder!=NULL) { } int iSelection = TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, ppt->x, ppt->y, 0, hwnd, (RECT*)NULL); DestroyMenu(hMenu); if (iSelection == ID_MENU_CLEARLOG) { clear(NULL); } else { SendMessage(hSPWnd, WM_COMMAND, iSelection, (LPARAM) NULL); }*/ }#else if (SUCCEEDED(pcmdTarget->QueryInterface(IID_IOleCommandTarget, (void**)&pOleCommandTarget))) { if (SUCCEEDED(pOleCommandTarget->QueryInterface(IID_IOleWindow, (void**)&pOleWindow))) { pOleWindow->GetWindow(&hSPWnd); HMENU hMenu; hMenu = GetSubMenu(LoadMenu(hInstance, MAKEINTRESOURCE(IDR_CONTEXTMENU)),0); CallService(MS_LANGPACK_TRANSLATEMENU,(WPARAM)hMenu,0); if (dwID == 5) { // anchor EnableMenuItem(hMenu, ID_MENU_COPYLINK, MF_BYCOMMAND | MF_ENABLED); } else if (dwID == 4) { // text select EnableMenuItem(hMenu, ID_MENU_COPY, MF_BYCOMMAND | MF_ENABLED); } else if (dwID == 1) { // control (image) EnableMenuItem(hMenu, ID_MENU_SAVEIMAGE, MF_BYCOMMAND | MF_ENABLED); } if (builder!=NULL) { } int iSelection = TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, ppt->x, ppt->y, 0, hwnd, (RECT*)NULL); DestroyMenu(hMenu); if (iSelection == ID_MENU_CLEARLOG) { clear(NULL); } else { SendMessage(hSPWnd, WM_COMMAND, iSelection, (LPARAM) NULL); } pOleWindow->Release(); } pOleCommandTarget->Release(); }#endif return S_OK;}
开发者ID:BackupTheBerlios,项目名称:mgoodies-svn,代码行数:77,
示例15: mir_strncpyint FacebookProto::OnBuildStatusMenu(WPARAM, LPARAM){ char text[200]; mir_strncpy(text, m_szModuleName, 100); char *tDest = text + strlen(text); CLISTMENUITEM mi = { sizeof(mi) }; mi.pszService = text; HGENMENU hRoot = MO_GetProtoRootMenu(m_szModuleName); if (hRoot == NULL) { CLISTMENUITEM miRoot = { sizeof(miRoot) }; miRoot.popupPosition = 500085000; miRoot.hParentMenu = HGENMENU_ROOT; miRoot.flags = CMIF_ROOTPOPUP | CMIF_TCHAR | CMIF_KEEPUNTRANSLATED | (this->isOnline() ? 0 : CMIF_GRAYED); miRoot.icolibItem = GetIconHandle("facebook"); miRoot.ptszName = m_tszUserName; hRoot = m_hMenuRoot = Menu_AddProtoMenuItem(&miRoot); } else { if (m_hMenuRoot) CallService(MO_REMOVEMENUITEM, (WPARAM)m_hMenuRoot, 0); m_hMenuRoot = NULL; } mi.flags = CMIF_CHILDPOPUP | (this->isOnline() ? 0 : CMIF_GRAYED); mi.position = 201001; mi.hParentMenu = hRoot; //CreateProtoService(m_szModuleName,"/Mind",&FacebookProto::OnMind,this); strcpy(tDest, "/Mind"); mi.pszName = LPGEN("Share status..."); mi.icolibItem = GetIconHandle("mind"); m_hStatusMind = Menu_AddProtoMenuItem(&mi); //CreateProtoService("/VisitProfile",&FacebookProto::VisitProfile); strcpy(tDest, "/VisitProfile"); mi.flags = CMIF_CHILDPOPUP; mi.pszName = LPGEN("Visit profile"); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_EVENT_URL); // TODO RM: remember and properly free in destructor? /*m_hStatusMind = */Menu_AddProtoMenuItem(&mi); //CreateProtoService("/VisitNotifications", &FacebookProto::VisitNotifications); strcpy(tDest, "/VisitNotifications"); mi.pszName = LPGEN("Visit notifications"); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_EVENT_URL); Menu_AddProtoMenuItem(&mi); // Services... mi.pszName = LPGEN("Services..."); strcpy(tDest, "/Services"); mi.flags = CMIF_CHILDPOPUP | (this->isOnline() ? 0 : CMIF_GRAYED); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_HELP); m_hMenuServicesRoot = Menu_AddProtoMenuItem(&mi); CreateProtoService("/RefreshBuddyList", &FacebookProto::RefreshBuddyList); strcpy(tDest, "/RefreshBuddyList"); mi.flags = CMIF_ROOTHANDLE; mi.pszName = LPGEN("Refresh Buddy List"); mi.pszPopupName = LPGEN("Services"); mi.icolibItem = GetIconHandle("friendship"); mi.hParentMenu = m_hMenuServicesRoot; Menu_AddProtoMenuItem(&mi); CreateProtoService("/CheckFriendRequests", &FacebookProto::CheckFriendRequests); strcpy(tDest, "/CheckFriendRequests"); mi.flags = CMIF_ROOTHANDLE; mi.pszName = LPGEN("Check Friends Requests"); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); mi.hParentMenu = m_hMenuServicesRoot; Menu_AddProtoMenuItem(&mi); CreateProtoService("/CheckNewsfeeds", &FacebookProto::CheckNewsfeeds); strcpy(tDest, "/CheckNewsfeeds"); mi.flags = CMIF_ROOTHANDLE; mi.pszName = LPGEN("Check Newsfeeds"); mi.pszPopupName = LPGEN("Services"); mi.icolibItem = GetIconHandle("newsfeed"); mi.hParentMenu = m_hMenuServicesRoot; Menu_AddProtoMenuItem(&mi); return 0;}
开发者ID:martok,项目名称:miranda-ng,代码行数:84,
示例16: SortContactsTimerstatic VOID CALLBACK SortContactsTimer(HWND hwnd, UINT message, UINT idEvent, DWORD dwTime){ KillTimer(NULL, resortTimerId); resortTimerId = 0; CallService(MS_CLUI_SORTLIST, 0, 0);}
开发者ID:dineshkummarc,项目名称:miranda-im-v0.9.47-src,代码行数:6,
示例17: ServiceParseYmsgrLink/* add user: ymsgr:addfriend?ID send message: ymsgr:sendim?ID&m=MESSAGE add chatroom: ymsgr:chat?ROOM*/static INT_PTR ServiceParseYmsgrLink(WPARAM wParam, LPARAM lParam){ TCHAR *arg = (TCHAR*)lParam; if (arg == NULL) return 1; /* sanity check */ /* skip leading prefix */ arg = _tcschr(arg, ':'); if (arg == NULL) return 1; /* parse failed */ for (++arg; *arg == '/'; ++arg) {} if (g_instances.getCount() == 0) return 0; CYahooProto *proto = g_instances[0]; for (int i = 0; i < g_instances.getCount(); ++i) { if (g_instances[i]->m_iStatus > ID_STATUS_OFFLINE) { proto = g_instances[i]; break; } } if (!proto) return 1; /* add a contact to the list */ if (!_tcsnicmp(arg, _T("addfriend?"), 10)) { arg += 10; char *id = get_buddy(&arg); if (!id) return 1; if (proto->getbuddyH(id) == NULL) /* does not yet check if id is current user */ { ADDCONTACTSTRUCT acs = {0}; PROTOSEARCHRESULT psr = {0}; acs.handleType = HANDLE_SEARCHRESULT; acs.szProto = proto->m_szModuleName; acs.psr = &psr; psr.cbSize = sizeof(PROTOSEARCHRESULT); psr.id = (TCHAR*)id; CallService(MS_ADDCONTACT_SHOW, 0, (LPARAM)&acs); } mir_free(id); return 0; } /* send a message to a contact */ else if (!_tcsnicmp(arg, _T("sendim?"), 7)) { arg += 7; char *id = get_buddy(&arg); if (!id) return 1; TCHAR *msg = NULL; while (arg) { if (!_tcsnicmp(arg, _T("m="), 2)) { msg = arg + 2; url_decode(msg); break; } arg = _tcschr(arg + 1, '&'); /* first token */ if (arg) *arg = 0; } MCONTACT hContact = proto->add_buddy(id, id, 0, PALF_TEMPORARY); /* ensure contact is on list */ if (hContact) CallService(MS_MSG_SENDMESSAGET, hContact, (LPARAM)msg); mir_free(id); return 0; } /* open a chatroom */ else if (!_tcsnicmp(arg, _T("chat?"), 5)) { arg += 5;// char *id = get_buddy(&arg);// if (!id) return 1; /* not yet implemented (rm contains name of chatroom)*/ return 0; } return 1; /* parse failed */}
开发者ID:Ganster41,项目名称:miranda-ng,代码行数:97,
示例18: InitFontsvoid InitFonts(){ colourBg.cbSize = sizeof(ColourIDT); _tcscpy(colourBg.group, LPGENT("Tooltips")); _tcscpy(colourBg.name, LPGENT("Background")); strcpy(colourBg.dbSettingsGroup, MODULE); strcpy(colourBg.setting, "ColourBg"); colourBg.defcolour = RGB(219, 219, 219); colourBg.order = 0; colourBorder.cbSize = sizeof(ColourIDT); _tcscpy(colourBorder.group, LPGENT("Tooltips")); _tcscpy(colourBorder.name, LPGENT("Border")); strcpy(colourBorder.dbSettingsGroup, MODULE); strcpy(colourBorder.setting, "BorderCol"); colourBorder.defcolour = 0; colourBorder.order = 0; colourAvatarBorder.cbSize = sizeof(ColourIDT); _tcscpy(colourAvatarBorder.group, LPGENT("Tooltips")); _tcscpy(colourAvatarBorder.name, LPGENT("Avatar border")); strcpy(colourAvatarBorder.dbSettingsGroup, MODULE); strcpy(colourAvatarBorder.setting, "AvBorderCol"); colourAvatarBorder.defcolour = 0; colourAvatarBorder.order = 0; colourDivider.cbSize = sizeof(ColourIDT); _tcscpy(colourDivider.group, LPGENT("Tooltips")); _tcscpy(colourDivider.name, LPGENT("Dividers")); strcpy(colourDivider.dbSettingsGroup, MODULE); strcpy(colourDivider.setting, "DividerCol"); colourDivider.defcolour = 0; colourDivider.order = 0; colourSidebar.cbSize = sizeof(ColourIDT); _tcscpy(colourSidebar.group, LPGENT("Tooltips")); _tcscpy(colourSidebar.name, LPGENT("Sidebar")); strcpy(colourSidebar.dbSettingsGroup, MODULE); strcpy(colourSidebar.setting, "SidebarCol"); colourSidebar.defcolour = RGB(192, 192, 192); colourSidebar.order = 0; CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourBg, 0); CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourBorder, 0); CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourAvatarBorder, 0); CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourDivider, 0); CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourSidebar, 0); fontTitle.cbSize = sizeof(FontIDT); fontTitle.flags = FIDF_ALLOWEFFECTS; _tcscpy(fontTitle.group, LPGENT("Tooltips")); _tcscpy(fontTitle.name, LPGENT("Title")); strcpy(fontTitle.dbSettingsGroup, MODULE); strcpy(fontTitle.prefix, "FontFirst"); _tcscpy(fontTitle.backgroundGroup, LPGENT("Tooltips")); _tcscpy(fontTitle.backgroundName, LPGENT("Background")); fontTitle.order = 0; _tcscpy(fontTitle.deffontsettings.szFace, _T("Verdana")); fontTitle.deffontsettings.charset = DEFAULT_CHARSET; fontTitle.deffontsettings.size = -16; fontTitle.deffontsettings.style = DBFONTF_BOLD; fontTitle.deffontsettings.colour = RGB(255, 0, 0); fontTitle.flags |= FIDF_DEFAULTVALID; fontLabels.cbSize = sizeof(FontIDT); fontLabels.flags = FIDF_ALLOWEFFECTS; _tcscpy(fontLabels.group, LPGENT("Tooltips")); _tcscpy(fontLabels.name, LPGENT("Labels")); strcpy(fontLabels.dbSettingsGroup, MODULE); strcpy(fontLabels.prefix, "FontLabels"); _tcscpy(fontLabels.backgroundGroup, LPGENT("Tooltips")); _tcscpy(fontLabels.backgroundName, LPGENT("Background")); fontLabels.order = 1; _tcscpy(fontLabels.deffontsettings.szFace, _T("Verdana")); fontLabels.deffontsettings.charset = DEFAULT_CHARSET; fontLabels.deffontsettings.size = -11; fontLabels.deffontsettings.style = DBFONTF_BOLD; fontLabels.deffontsettings.colour = RGB(128, 128, 128); fontLabels.flags |= FIDF_DEFAULTVALID; fontValues.cbSize = sizeof(FontIDT); fontValues.flags = FIDF_ALLOWEFFECTS; _tcscpy(fontValues.group, LPGENT("Tooltips")); _tcscpy(fontValues.name, LPGENT("Values")); strcpy(fontValues.dbSettingsGroup, MODULE); strcpy(fontValues.prefix, "FontValues"); _tcscpy(fontValues.backgroundGroup, LPGENT("Tooltips")); _tcscpy(fontValues.backgroundName, LPGENT("Background")); fontValues.order = 2; _tcscpy(fontValues.deffontsettings.szFace, _T("Verdana")); fontValues.deffontsettings.charset = DEFAULT_CHARSET; fontValues.deffontsettings.size = -11; fontValues.deffontsettings.style = 0; fontValues.deffontsettings.colour = RGB(0, 0, 0); fontValues.flags |= FIDF_DEFAULTVALID; fontTrayTitle.cbSize = sizeof(FontIDT);//.........这里部分代码省略.........
开发者ID:TonyAlloa,项目名称:miranda-dev,代码行数:101,
示例19: SvcHomepageEnableExtraIcons/** * Enable or disable the replacement of clist extra icons. * * @param bEnable - determines whether icons are enabled or not * @param bUpdateDB - if true the database setting is updated, too. **/VOID SvcHomepageEnableExtraIcons(BOOLEAN bEnable, BOOLEAN bUpdateDB) { if (myGlobals.HaveCListExtraIcons) { if (bUpdateDB) { DB::Setting::WriteByte(SET_CLIST_EXTRAICON_HOMEPAGE, bEnable); } if (bEnable) { // hook events if (hChangedHook == NULL) { hChangedHook = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, (MIRANDAHOOK)OnContactSettingChanged); } if (hApplyIconHook == NULL) { hApplyIconHook = HookEvent(ME_CLIST_EXTRA_IMAGE_APPLY, (MIRANDAHOOK)OnCListApplyIcons); } if (myGlobals.ExtraIconsServiceExist) { if (ghExtraIconSvc == INVALID_HANDLE_VALUE) { EXTRAICON_INFO ico; ZeroMemory(&ico, sizeof(ico)); ico.cbSize = sizeof(ico); ico.type = EXTRAICON_TYPE_ICOLIB; ico.name = "homepage"; //must be the same as the group name in extraicon ico.description = "Homepage (uinfoex)"; ico.descIcon = ICO_BTN_GOTO; ghExtraIconSvc = (HANDLE)CallService(MS_EXTRAICON_REGISTER, (WPARAM)&ico, 0); } } else if (hRebuildIconsHook == NULL) { hRebuildIconsHook = HookEvent(ME_CLIST_EXTRA_LIST_REBUILD, OnCListRebuildIcons); OnCListRebuildIcons(0, 0); } } else { if (hChangedHook) { UnhookEvent(hChangedHook); hChangedHook = NULL; } if (hApplyIconHook) { UnhookEvent(hApplyIconHook); hApplyIconHook = NULL; } if (hRebuildIconsHook) { UnhookEvent(hRebuildIconsHook); hRebuildIconsHook = NULL; } } SvcHomepageApplyCListIcons(); }}
开发者ID:TonyAlloa,项目名称:miranda-dev,代码行数:68,
示例20: clearMirandaAccountsvoidMirfoxData::initializeMirandaAccounts(){ clearMirandaAccounts(); int accountsCount = 0; PROTOACCOUNT **accounts; //get accounts from Miranda by CallService MS_PROTO_ENUMACCOUNTS CallService(MS_PROTO_ENUMACCOUNTS, (WPARAM)&accountsCount, (LPARAM)&accounts); uint64_t protocolId = 1; for(int i=0; i<accountsCount; i++) { //checking account if(accounts[i]->bIsEnabled == 0){ continue; } if(accounts[i]->bDynDisabled != 0){ continue; } //add to list MirandaAccount* mirandaAccountItemPtr = new MirandaAccount( protocolId, accounts[i]->szModuleName, accounts[i]->tszAccountName, accounts[i]->szProtoName, accounts[i]->iOrder ); MFLogger* logger = MFLogger::getInstance(); logger->log_p(L"initializeMirandaAccounts: tszAccountName: [%s] protocol: [%S]", accounts[i]->tszAccountName, accounts[i]->szProtoName ); protocolId++; std::string mirandaAccountDBKey("ACCOUNTSTATE_"); mirandaAccountDBKey += accounts[i]->szModuleName; int keyValue = db_get_b(0, PLUGIN_DB_ID, mirandaAccountDBKey.c_str(), 0); if (keyValue == 1 || keyValue == 2){ //setting exist if (keyValue == 1){ mirandaAccountItemPtr->accountState = MFENUM_MIRANDAACCOUNT_STATE_ON; //1 } else { mirandaAccountItemPtr->accountState = MFENUM_MIRANDAACCOUNT_STATE_OFF; //2 } } else { //setting does not exist, or is invalid -> save default setting (1 - ON) if (MirfoxData::getAccountDefaultState(mirandaAccountItemPtr) == 1){ //on = 1 mirandaAccountItemPtr->accountState = MFENUM_MIRANDAACCOUNT_STATE_ON; //1 db_set_b(0, PLUGIN_DB_ID, mirandaAccountDBKey.c_str(), 1); } else { //off = 2 mirandaAccountItemPtr->accountState = MFENUM_MIRANDAACCOUNT_STATE_OFF; //2 db_set_b(0, PLUGIN_DB_ID, mirandaAccountDBKey.c_str(), 2); } } addMirandaAccount(mirandaAccountItemPtr); } //TODO - sort by mirandaAccount.displayOrder}
开发者ID:0xmono,项目名称:miranda-ng,代码行数:67,
示例21: InternetDownloadFileint InternetDownloadFile(char *szUrl, char *cookie, char *userAgent, TCHAR **szData){ if (userAgent == NULL || userAgent[0] == 0) userAgent = NETLIB_USER_AGENT; NETLIBHTTPHEADER headers[5]; headers[0].szName = "User-Agent"; headers[0].szValue = userAgent; headers[1].szName = "Cache-Control"; headers[1].szValue = "no-cache"; headers[2].szName = "Pragma"; headers[2].szValue = "no-cache"; headers[3].szName = "Connection"; headers[3].szValue = "close"; headers[4].szName = "Cookie"; headers[4].szValue = cookie; // initialize the netlib request NETLIBHTTPREQUEST nlhr = { sizeof(nlhr) }; nlhr.requestType = REQUEST_GET; nlhr.flags = NLHRF_DUMPASTEXT | NLHRF_HTTP11 | NLHRF_PERSISTENT | NLHRF_REDIRECT; nlhr.szUrl = szUrl; nlhr.nlc = hNetlibHttp; nlhr.headers = headers; nlhr.headersCount = _countof(headers); if (cookie == NULL || cookie[0] == 0) --nlhr.headersCount; // download the page NETLIBHTTPREQUEST *nlhrReply = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hNetlibUser, (LPARAM)&nlhr); if (nlhrReply == 0) { // if the data does not downloaded successfully (ie. disconnected), then return 1000 as error code *szData = (TCHAR*)mir_alloc(512); // store the error code in szData mir_tstrcpy(*szData, _T("NetLib error occurred!!")); hNetlibHttp = NULL; return NLHRF_REDIRECT; } // if the recieved code is 200 OK int result; if (nlhrReply->resultCode == 200) { if (nlhrReply->dataLength) { bool bIsUtf = false; result = 0; // allocate memory and save the retrieved data int i = findHeader(nlhrReply, "Content-Type"); if (i != -1 && strstr(_strlwr((char*)nlhrReply->headers[i].szValue), "utf-8")) bIsUtf = true; else { char* end = nlhrReply->pData; for (;;) { char* beg = strstr(end, "<meta"); if (beg == NULL) break; else { char* method, tmp; end = strchr(beg, '>'); tmp = *end; *end = 0; method = strstr(beg, "http-equiv=/""); if (method && _strnicmp(method + 12, "Content-Type", 12) == 0 && strstr(method, "utf-8")) { bIsUtf = true; break; } else *end = tmp; } } } TCHAR *retVal = NULL; if (bIsUtf) retVal = mir_utf8decodeT(nlhrReply->pData); if (retVal == NULL) retVal = mir_a2t(nlhrReply->pData); *szData = retVal; } else result = DATA_EMPTY; } // return error code if the recieved code is neither 200 OK nor 302 Moved else { *szData = (TCHAR*)mir_alloc(512); // store the error code in szData mir_sntprintf(*szData, 512, _T("Error occured! HTTP Error: %i/n"), nlhrReply->resultCode); result = (int)nlhrReply->resultCode; } hNetlibHttp = nlhrReply->nlc; // make a copy of the retrieved data, then free the memory of the http reply CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)nlhrReply); return result;}
开发者ID:Seldom,项目名称:miranda-ng,代码行数:93,
示例22: clearMirandaContactsvoid MirfoxData::initializeMirandaContacts(){ MFLogger* logger = MFLogger::getInstance(); //clean data clearMirandaContacts(); //get contects from miranda for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)){ //add to list MirandaContact* mirandaContactItemPtr = new MirandaContact( hContact //handle to contact in miranda ); addMirandaContact(mirandaContactItemPtr); } boost::ptr_list<MirandaContact>* mirandaContactsPtr = getMirandaContacts(); boost::ptr_list<MirandaContact>::iterator mirandaContactsIter; //determine contact's account for (mirandaContactsIter = mirandaContactsPtr->begin(); mirandaContactsIter != mirandaContactsPtr->end(); mirandaContactsIter++){ logger->log_p(L"initializeMirandaContacts: try to get account for hContact = [" SCNuPTR L"]", mirandaContactsIter->contactHandle); char* szModuleName = (char*)CallService(MS_PROTO_GETCONTACTBASEACCOUNT, (WPARAM)(mirandaContactsIter->contactHandle), 0); if (szModuleName == NULL){ continue; //mirandaContactsIter->mirandaAccountPtr will be NULL } mirandaContactsIter->mirandaAccountPtr = getMirandaAccountPtrBySzModuleName(szModuleName); } //determine contact's name for (mirandaContactsIter = mirandaContactsPtr->begin(); mirandaContactsIter != mirandaContactsPtr->end(); mirandaContactsIter++){ logger->log_p(L"initializeMirandaContacts: try to get name for hContact = [" SCNuPTR L"]", mirandaContactsIter->contactHandle); if (mirandaContactsIter->mirandaAccountPtr != NULL){ if ( strcmp(mirandaContactsIter->mirandaAccountPtr->szProtoName, "Twitter") == 0){ //hack for Twitter protocol DBVARIANT dbv; if (!db_get_s(mirandaContactsIter->contactHandle, mirandaContactsIter->mirandaAccountPtr->szModuleName, "Username", &dbv, DBVT_WCHAR)) { mirandaContactsIter->contactNameW = std::wstring(dbv.pwszVal); db_free(&dbv); } } else { //standard miranda way for another protocols mirandaContactsIter->contactNameW = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)mirandaContactsIter->contactHandle, GCDNF_TCHAR); //get contact's display name from clist } } if (mirandaContactsIter->contactNameW.size() == 0){ //last chance (if some hack didn't work or mirandaContactsIter->mirandaAccountPtr is NULL) mirandaContactsIter->contactNameW = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)mirandaContactsIter->contactHandle, GCDNF_TCHAR); //get contact's display name from clist } logger->log_p(L"initializeMirandaContacts: got name for hContact = [" SCNuPTR L"] is: [%s]", mirandaContactsIter->contactHandle, &(mirandaContactsIter->contactNameW)==NULL ? L"<null>" : mirandaContactsIter->contactNameW.c_str()); } //determine contact's state for (mirandaContactsIter = mirandaContactsPtr->begin(); mirandaContactsIter != mirandaContactsPtr->end(); mirandaContactsIter++){ logger->log_p(L"initializeMirandaContacts: try to get state for hContact = [" SCNuPTR L"]", mirandaContactsIter->contactHandle); int keyValue = db_get_b(mirandaContactsIter->contactHandle, PLUGIN_DB_ID, "state", 0); if (keyValue == 1 || keyValue == 2){ //setting exist if (keyValue == 1){ mirandaContactsIter->contactState = MFENUM_MIRANDACONTACT_STATE_ON; //1 } else { mirandaContactsIter->contactState = MFENUM_MIRANDACONTACT_STATE_OFF; //2 } } else { //setting does not exist, or is invalid -> save default setting (1 - ON) if (MirfoxData::getContactDefaultState(mirandaContactsIter->getObjectPtr()) == 1){ //on = 1 mirandaContactsIter->contactState = MFENUM_MIRANDACONTACT_STATE_ON; //1 db_set_b(mirandaContactsIter->contactHandle, PLUGIN_DB_ID, "state", 1); } else { //off = 2 mirandaContactsIter->contactState = MFENUM_MIRANDACONTACT_STATE_OFF; //2 db_set_b(mirandaContactsIter->contactHandle, PLUGIN_DB_ID, "state", 2); } }//.........这里部分代码省略.........
开发者ID:0xmono,项目名称:miranda-ng,代码行数:101,
示例23: clockchar* CMsnProto::getSslResult(char** parUrl, const char* parAuthInfo, const char* hdrs, unsigned& status){ mHttpsTS = clock(); char* result = NULL; NETLIBHTTPREQUEST nlhr = {0}; // initialize the netlib request nlhr.cbSize = sizeof(nlhr); nlhr.requestType = REQUEST_POST; nlhr.flags = NLHRF_HTTP11 | NLHRF_DUMPASTEXT | NLHRF_PERSISTENT | NLHRF_REDIRECT; nlhr.szUrl = *parUrl; nlhr.dataLength = (int)strlen(parAuthInfo); nlhr.pData = (char*)parAuthInfo; nlhr.nlc = hHttpsConnection;#ifndef _DEBUG if (strstr(*parUrl, "login")) nlhr.flags |= NLHRF_NODUMPSEND;#endif nlhr.headersCount = 4; nlhr.headers=(NETLIBHTTPHEADER*)alloca(sizeof(NETLIBHTTPHEADER) * (nlhr.headersCount + 5)); nlhr.headers[0].szName = "User-Agent"; nlhr.headers[0].szValue = (char*)MSN_USER_AGENT; nlhr.headers[1].szName = "Accept"; nlhr.headers[1].szValue = "text/*"; nlhr.headers[2].szName = "Content-Type"; nlhr.headers[2].szValue = "text/xml; charset=utf-8"; nlhr.headers[3].szName = "Cache-Control"; nlhr.headers[3].szValue = "no-cache"; if (hdrs) { unsigned count = 0; char* hdrprs = NEWSTR_ALLOCA(hdrs); for (;;) { char* fnd = strchr(hdrprs, ':'); if (fnd == NULL) break; *fnd = 0; fnd += 2; nlhr.headers[nlhr.headersCount].szName = hdrprs; nlhr.headers[nlhr.headersCount].szValue = fnd; fnd = strchr(fnd, '/r'); *fnd = 0; hdrprs = fnd + 2; ++nlhr.headersCount; if (++count >= 5) break; } } // download the page NETLIBHTTPREQUEST *nlhrReply = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hNetlibUserHttps,(LPARAM)&nlhr); if (nlhrReply) { hHttpsConnection = nlhrReply->nlc; status = nlhrReply->resultCode; if (nlhrReply->szUrl) { mir_free(*parUrl); *parUrl = nlhrReply->szUrl; nlhrReply->szUrl = NULL; } result = nlhrReply->pData; nlhrReply->dataLength = 0; nlhrReply->pData = NULL; CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)nlhrReply); } else hHttpsConnection = NULL; mHttpsTS = clock(); return result;}
开发者ID:0xmono,项目名称:miranda-ng,代码行数:83,
示例24: SendMsgDialogvoid SendMsgDialog( HWND hwnd, TCHAR *pText ){ ThumbInfo *pThumb = thumbList.FindThumb( hwnd ); if ( pThumb != NULL ) CallService(MS_MSG_SENDMESSAGET, (WPARAM)pThumb->hContact, (LPARAM)pText );}
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:6,
示例25: showmsgwndvoid showmsgwnd(unsigned int param){ logmsg("showmsgwnd"); if (db_get_b(NULL,THIS_MODULE, "showMessageWindow", DEFAULT_SHOWMSGWIN)) CallService(MS_MSG_SENDMESSAGET, (WPARAM)param, 0);}
开发者ID:Seldom,项目名称:miranda-ng,代码行数:6,
示例26: CommWndProcstatic LRESULT __stdcall CommWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ ThumbInfo *pThumb = thumbList.FindThumb(hwnd); switch(uMsg) { case WM_RBUTTONUP: { POINT pt; pt.x = LOWORD(lParam); pt.y = HIWORD(lParam); if (pThumb) pThumb->ThumbDeselect(TRUE); ClientToScreen(hwnd, &pt); ShowContactMenu( hwnd, pt ); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_NCPAINT: if (pThumb) { HDC hdc = GetWindowDC( hwnd ); BitBlt(hdc, 0, 0, pThumb->bmpContent.getWidth(), pThumb->bmpContent.getHeight(), pThumb->bmpContent.getDC(), 0, 0, SRCCOPY); //RepaintWindow( hwnd, hdc ); ReleaseDC( hwnd, hdc ); ValidateRect( hwnd, NULL ); return 0; } case WM_PAINT: if (pThumb) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); BitBlt(hdc, 0, 0, pThumb->bmpContent.getWidth(), pThumb->bmpContent.getHeight(), pThumb->bmpContent.getDC(), 0, 0, SRCCOPY); //RepaintWindow( hwnd, hdc ); EndPaint(hwnd, &ps); break; } case WM_PRINT: case WM_PRINTCLIENT: if (pThumb) { BitBlt((HDC)wParam, 0, 0, pThumb->bmpContent.getWidth(), pThumb->bmpContent.getHeight(), pThumb->bmpContent.getDC(), 0, 0, SRCCOPY); //RepaintWindow(hwnd, (HDC)wParam); break; } case WM_MEASUREITEM: CallService(MS_CLIST_MENUMEASUREITEM, wParam, lParam); break; case WM_DRAWITEM: CallService(MS_CLIST_MENUDRAWITEM, wParam, lParam); break; case WM_LBUTTONDOWN: if (pThumb) pThumb->OnLButtonDown( LOWORD(lParam), HIWORD(lParam)); break; case WM_MOUSEMOVE: if (pThumb) pThumb->OnMouseMove( LOWORD(lParam), HIWORD(lParam), wParam); break; case WM_LBUTTONUP: if (pThumb) pThumb->OnLButtonUp(); break; case WM_LBUTTONDBLCLK: // Popup message dialog if (!fcOpt.bUseSingleClick && pThumb) pThumb->PopupMessageDialog(); break; case WM_RBUTTONDOWN: if (bEnableTip && fcOpt.bShowTip && pThumb) pThumb->KillTip(); break; case WM_REFRESH_CONTACT: if (pThumb) { _tcsncpy( pThumb->ptszName, (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)pThumb->hContact, (LPARAM)GCDNF_TCHAR ), USERNAME_LEN - 1); pThumb->RefreshContactStatus((int)lParam); pThumb->ResizeThumb(); } break; case WM_TIMER: if (pThumb) pThumb->OnTimer(wParam); break; case WM_HOTKEY: ThumbInfo *pThumb = thumbList.FindThumb((HWND)wParam); if (pThumb) pThumb->PopupMessageDialog(); }//.........这里部分代码省略.........
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:101,
示例27: switch//.........这里部分代码省略......... // new family entry point received char *pServer = pChain->getString(0x05, 1); BYTE bServerSSL = pChain->getNumber(0x8E, 1); char *pCookie = pChain->getString(0x06, 1); WORD wCookieLen = pChain->getLength(0x06, 1); if (!pServer || !pCookie) { debugLogA("Server returned invalid data, family unavailable."); SAFE_FREE(&pServer); SAFE_FREE(&pCookie); SAFE_FREE((void**)&pCookieData); disposeChain(&pChain); break; } // Get new family server ip and port WORD wPort = info->wServerPort; // get default port parseServerAddress(pServer, &wPort); // establish connection NETLIBOPENCONNECTION nloc = { 0 }; if (m_bGatewayMode) nloc.flags |= NLOCF_HTTPGATEWAY; nloc.szHost = pServer; nloc.wPort = wPort; HANDLE hConnection = NetLib_OpenConnection(m_hNetlibUser, wFamily == ICQ_AVATAR_FAMILY ? "Avatar " : NULL, &nloc); if (hConnection == NULL) debugLogA("Unable to connect to ICQ new family server."); // we want the handler to be called even if the connecting failed else if (bServerSSL) { /* Start SSL session if requested */ debugLogA("(%p) Starting SSL negotiation", CallService(MS_NETLIB_GETSOCKET, (WPARAM)hConnection, 0)); if (!CallService(MS_NETLIB_STARTSSL, (WPARAM)hConnection, 0)) { debugLogA("Unable to connect to ICQ new family server, SSL could not be negotiated"); NetLib_CloseConnection(&hConnection, FALSE); } } (this->*pCookieData->familyHandler)(hConnection, pCookie, wCookieLen); // Free allocated memory // NOTE: "cookie" will get freed when we have connected to the avatar server. disposeChain(&pChain); SAFE_FREE(&pServer); SAFE_FREE((void**)&pCookieData); break; } case ICQ_SERVER_EXTSTATUS: // our session data debugLogA("Received owner session data."); while (wBufferLength > 4) { // loop thru all items WORD itemType = pBuffer[0] * 0x10 | pBuffer[1]; BYTE itemFlags = pBuffer[2]; size_t itemLen = pBuffer[3]; if (itemType == AVATAR_HASH_PHOTO) { /// TODO: handle photo item // skip photo item debugLogA("Photo item recognized"); } else if ((itemType == AVATAR_HASH_STATIC || itemType == AVATAR_HASH_FLASH) && (itemLen >= 0x10)) { debugLogA("Avatar item recognized");
开发者ID:martok,项目名称:miranda-ng,代码行数:66,
注:本文中的CallService函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ CallWindowProc函数代码示例 C++ CallQueryInterface函数代码示例 |