Index: charmap.c =================================================================== --- charmap.c (revision 50600) +++ charmap.c (working copy) @@ -9,8 +9,29 @@ #include -#define ID_ABOUT 0x1 +#define ID_ABOUT 0x1 +#define MAX_STRING_LEN 255 +static void CopyTextToClipboard(TCHAR* text) +{ + if(OpenClipboard(NULL)) { + HGLOBAL clipbuffer; + TCHAR *buffer; + + EmptyClipboard(); + clipbuffer = GlobalAlloc(GMEM_DDESHARE, (_tcslen(text)+1)*sizeof(TCHAR)); + buffer = (TCHAR *)GlobalLock(clipbuffer); + _tcscpy(buffer, text); + GlobalUnlock(clipbuffer); +#ifdef UNICODE + SetClipboardData(CF_UNICODETEXT,clipbuffer); +#else + SetClipboardData(CF_TEXT,clipbuffer); +#endif + CloseClipboard(); + } +} + HINSTANCE hInstance; /* Font-enumeration callback */ @@ -165,7 +186,7 @@ SendMessageW(hText, WM_SETTEXT, 0, - (LPARAM)lpText); + (LPARAM)lpText); HeapFree(GetProcessHeap(), 0, @@ -175,14 +196,14 @@ else { WCHAR szText[2]; - + szText[0] = ch; szText[1] = L'\0'; SendMessageW(hText, WM_SETTEXT, 0, - (LPARAM)szText); + (LPARAM)szText); } } @@ -268,9 +289,14 @@ switch (HIWORD(wParam)) { case FM_SETCHAR: + { AddCharToSelection(GetDlgItem(hDlg, IDC_TEXTBOX), LOWORD(lParam)); + HWND hCopy = GetDlgItem(hDlg, IDC_COPY); + EnableWindow(hCopy, TRUE); + break; + } } } break; @@ -294,11 +320,29 @@ if (ch) { AddCharToSelection(GetDlgItem(hDlg, IDC_TEXTBOX), - ch); + ch); + HWND hCopy = GetDlgItem(hDlg, IDC_COPY); + EnableWindow(hCopy, TRUE); } break; } + + case IDC_COPY: + { + DWORD leng; + LPWSTR lpFullText; + HWND hTextBox = GetDlgItem(hDlg, IDC_TEXTBOX); + leng = GetWindowTextLength(hTextBox); + lpFullText = HeapAlloc(GetProcessHeap(), 0, (leng +1)); + GetWindowText(hTextBox, lpFullText, MAX_STRING_LEN); + if (leng != 0) + { + CopyTextToClipboard(lpFullText); + HeapFree(GetProcessHeap(), 0, lpFullText); + } + break; + } case IDOK: if (hSmIcon) Index: precomp.h =================================================================== --- precomp.h (revision 50600) +++ precomp.h (working copy) @@ -6,6 +6,7 @@ #include #include #include "resource.h" +#include #define XCELLS 20 #define YCELLS 10