TCHAR* SaveImage(FREE_IMAGE_FORMAT fif, FIBITMAP* dib, const TCHAR* pszFilename, const TCHAR* pszExt, int flag) { int ret = 0; TCHAR* pszFile = NULL; TCHAR* FileExt = GetFileExt(pszFilename); if (!FileExt) { if (!pszExt) return NULL; mir_tstradd(pszFile, pszFilename); mir_tstradd(pszFile, _T(".")); mir_tstradd(pszFile, pszExt); } else { mir_tstradd(pszFile, pszFilename); } if (fif == FIF_UNKNOWN) { fif = FIP->FI_GetFIFFromFilenameU(pszFile); } ret = FIP->FI_SaveU(fif, dib, pszFile, flag); mir_free(FileExt); if (ret) return pszFile; mir_free(pszFile); return NULL; }
//--------------------------------------------------------------------------- //WM_INITDIALOG: LRESULT TfrmAbout::wmInitdialog(WPARAM, LPARAM) { // Headerbar SendDlgItemMessage(m_hWnd, IDC_HEADERBAR, WM_SETICON, ICON_BIG, (LPARAM)GetIcon(ICO_MAIN)); //License { TCHAR* pszText = NULL; mir_tstradd(pszText, _T(__COPYRIGHT)); mir_tstradd(pszText, _T("\r\n\r\n")); HRSRC hRes = FindResource(g_hSendSS, MAKEINTRESOURCE(IDR_LICENSE), _T("TEXT")); DWORD size = SizeofResource(g_hSendSS, hRes); char* data = (char*)mir_alloc(size + 1); memcpy(data, LockResource(LoadResource(g_hSendSS, hRes)), size); data[size] = '\0'; TCHAR* pszCopyright = mir_a2t(data); mir_free(data); mir_tstradd(pszText, pszCopyright); mir_free(pszCopyright); SetDlgItemText(m_hWnd, IDC_LICENSE, pszText); mir_free(pszText); } //Credit { HRSRC hRes = FindResource(g_hSendSS, MAKEINTRESOURCE(IDR_CREDIT), _T("TEXT")); DWORD size = SizeofResource(g_hSendSS, hRes); char* data = (char*)mir_alloc(size + 1); memcpy(data, LockResource(LoadResource(g_hSendSS, hRes)), size); data[size] = '\0'; TCHAR* pszText = mir_a2t(data); mir_free(data); SetDlgItemText(m_hWnd, IDC_CREDIT, pszText); mir_free(pszText); } SendMessage(m_hWnd, WM_SETICON, ICON_BIG, (LPARAM)GetIcon(ICO_MAIN)); SendMessage(m_hWnd, WM_SETICON, ICON_SMALL, (LPARAM)GetIcon(ICO_MAINXS)); //init controls btnPageClick(); TranslateDialogDefault(m_hWnd); return FALSE; }
//--------------------------------------------------------------------------- INT_PTR CALLBACK CSend::ResultDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); { SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)GetIcon(ICO_MAIN)); CSend* self = (CSend*)lParam; TCHAR* tmp = mir_tstrdup(TranslateT("Resulting URL from\n")); mir_tstradd(tmp, self->m_pszSendTyp); SetDlgItemText(hwndDlg, IDC_HEADERBAR, tmp); mir_free(tmp); SendDlgItemMessage(hwndDlg, IDC_HEADERBAR, WM_SETICON, ICON_BIG, (LPARAM)GetIconBtn(ICO_BTN_ARROWR)); SetDlgItemTextA(hwndDlg, ID_edtURL, self->m_URL); if (self->m_URLthumb) { SetDlgItemTextA(hwndDlg, ID_edtURLthumb, self->m_URLthumb); } else { SetDlgItemTextA(hwndDlg, ID_edtURLthumb, "-"); for (int i = ID_btnThumbCopy; i <= ID_edtURLthumb; ++i) { EnableWindow(GetDlgItem(hwndDlg, i), FALSE); } } if (!self->m_pszFileDesc) SetDlgItemText(hwndDlg, ID_bvlDesc, self->m_ErrorTitle); else SetDlgItemText(hwndDlg, ID_bvlDesc, self->m_pszFileDesc); SendDlgItemMessage(hwndDlg, IDOK, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIconBtn(ICO_BTN_COPY)); SendDlgItemMessage(hwndDlg, IDOK, BUTTONTRANSLATE, 0, 0); SendDlgItemMessage(hwndDlg, IDCANCEL, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIconBtn(ICO_BTN_CANCEL)); SendDlgItemMessage(hwndDlg, IDCANCEL, BUTTONTRANSLATE, 0, 0); for (int i = ID_btnCopy; i <= ID_btnThumbBBC2; ++i) { SendDlgItemMessage(hwndDlg, i, BUTTONSETASTHEMEDBTN, 0, 0); SendDlgItemMessage(hwndDlg, i, BUTTONSETASFLATBTN, 1, 0); switch (i) { case ID_btnCopy: case ID_btnThumbCopy: SendDlgItemMessage(hwndDlg, i, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIconBtn(ICO_BTN_COPY)); SendDlgItemMessage(hwndDlg, i, BUTTONADDTOOLTIP, (WPARAM)LPGENT("Copy"), BATF_TCHAR); break; case ID_btnBBC: case ID_btnThumbBBC: SendDlgItemMessage(hwndDlg, i, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIconBtn(ICO_BTN_BBC)); SendDlgItemMessage(hwndDlg, i, BUTTONADDTOOLTIP, (WPARAM)LPGENT("Copy BBCode"), BATF_TCHAR); break; default: SendDlgItemMessage(hwndDlg, i, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIconBtn(ICO_BTN_BBCLNK)); SendDlgItemMessage(hwndDlg, i, BUTTONADDTOOLTIP, (WPARAM)LPGENT("Copy BBCode w/ link"), BATF_TCHAR); } } } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: DestroyWindow(hwndDlg); return TRUE; case IDOK: case ID_btnCopy: case ID_btnThumbCopy: case ID_btnBBC: case ID_btnThumbBBC: case ID_btnThumbBBC2: TCHAR tmp[2048]; int edtID = ID_edtURL; int bbc = 0; switch (LOWORD(wParam)) { case ID_btnThumbBBC2: ++bbc; case ID_btnThumbBBC: ++bbc; case ID_btnThumbCopy: edtID = ID_edtURLthumb; break; case ID_btnBBC: ++bbc; break; } size_t len; if (bbc) { if (bbc == 1) { memcpy(tmp, _T("[img]"), 5 * sizeof(TCHAR)); len = 5; len += GetDlgItemText(hwndDlg, edtID, tmp + len, 2048 - 11); memcpy(tmp + len, _T("[/img]"), 7 * sizeof(TCHAR)); len += 7; } else { memcpy(tmp, _T("[url="), 5 * sizeof(TCHAR)); len = 5; len += GetDlgItemText(hwndDlg, ID_edtURL, tmp + len, 1024); memcpy(tmp + len, _T("][img]"), 6 * sizeof(TCHAR)); len += 6; len += GetDlgItemText(hwndDlg, edtID, tmp + len, 1024); memcpy(tmp + len, _T("[/img][/url]"), 13 * sizeof(TCHAR)); len += 12; } } else len = GetDlgItemText(hwndDlg, edtID, tmp, _countof(tmp)); int retries = 3; do { if (!OpenClipboard(hwndDlg)) { Sleep(100); continue; } EmptyClipboard(); HGLOBAL clipbuffer = GlobalAlloc(GMEM_MOVEABLE, len*sizeof(TCHAR) + sizeof(TCHAR)); TCHAR* tmp2 = (TCHAR*)GlobalLock(clipbuffer); mir_tstrncpy(tmp2, tmp, len + 1); tmp2[len] = '\0'; GlobalUnlock(clipbuffer); SetClipboardData(CF_UNICODETEXT, clipbuffer); CloseClipboard(); break; } while (--retries); if (LOWORD(wParam) == IDOK) DestroyWindow(hwndDlg); return TRUE; } } return FALSE; }
void CSend::svcSendMsgExit(const char* szMessage) { if (m_bSilent) { Exit(ACKRESULT_SUCCESS); return; } if (!m_hContact) { if (!m_pszFileDesc) m_pszFileDesc = mir_a2t(szMessage); Exit(CSEND_DIALOG); return; } if (m_ChatRoom) { TCHAR* tmp = mir_a2t(szMessage); if (m_pszFileDesc) { mir_tstradd(tmp, _T("\r\n")); mir_tstradd(tmp, m_pszFileDesc); } GC_INFO gci = { 0 }; int res = GC_RESULT_NOSESSION; int cnt = (int)CallService(MS_GC_GETSESSIONCOUNT, 0, (LPARAM)m_pszProto); //loop on all gc session to get the right (save) ptszID for the chatroom from m_hContact gci.pszModule = m_pszProto; for (int i = 0; i < cnt; i++) { gci.iItem = i; gci.Flags = GCF_BYINDEX | GCF_HCONTACT | GCF_ID; CallService(MS_GC_GETINFO, 0, (LPARAM)&gci); if (gci.hContact == m_hContact) { GCDEST gcd = { m_pszProto, gci.pszID, GC_EVENT_SENDMESSAGE }; GCEVENT gce = { sizeof(gce), &gcd }; gce.bIsMe = TRUE; gce.dwFlags = GCEF_ADDTOLOG; gce.ptszText = tmp; gce.time = time(NULL); //* returns 0 on success or error code on failure res = 200 + (int)CallService(MS_GC_EVENT, 0, (LPARAM)&gce); break; } } Exit(res); return; } else { mir_freeAndNil(m_szEventMsg); m_cbEventMsg = (DWORD)mir_strlen(szMessage) + 1; m_szEventMsg = (char*)mir_realloc(m_szEventMsg, (sizeof(char) * m_cbEventMsg)); memset(m_szEventMsg, 0, (sizeof(char) * m_cbEventMsg)); mir_strcpy(m_szEventMsg, szMessage); if (m_pszFileDesc && m_pszFileDesc[0] != NULL) { char *temp = mir_t2a(m_pszFileDesc); mir_stradd(m_szEventMsg, "\r\n"); mir_stradd(m_szEventMsg, temp); m_cbEventMsg = (DWORD)mir_strlen(m_szEventMsg) + 1; mir_free(temp); } //create a HookEventObj on ME_PROTO_ACK if (!m_hOnSend) { m_hOnSend = HookEventObj(ME_PROTO_ACK, OnSend, this); } //start PSS_MESSAGE service m_hSend = (HANDLE)CallContactService(m_hContact, PSS_MESSAGE, NULL, ptrA(mir_utf8encode(m_szEventMsg))); // check we actually got an ft handle back from the protocol if (!m_hSend) { Unhook(); Error(SS_ERR_INIT, m_pszSendTyp); Exit(ACKRESULT_FAILED); return; } } }