diff options
-rw-r--r-- | options.cpp | 377 | ||||
-rw-r--r-- | replacer.rc | 56 | ||||
-rw-r--r-- | replacer.suo | bin | 23552 -> 34816 bytes | |||
-rw-r--r-- | resource.h | 12 |
4 files changed, 194 insertions, 251 deletions
diff --git a/options.cpp b/options.cpp index 1e8bfb4..632be78 100644 --- a/options.cpp +++ b/options.cpp @@ -52,116 +52,53 @@ int ReplacerOptInit(WPARAM wParam,LPARAM lParam) return 0; } -map<int, HANDLE> user_data; +HWND hwnd_list_p = NULL; -int item_num = 0; -HWND hwndList_p = NULL; -HWND hwndCurKey_p = NULL; - -void ShowLoadPublicKeyDialog(); static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - HWND hwndList=GetDlgItem(hwndDlg, IDC_USERLIST); - hwndList_p = hwndList; - hwndCurKey_p = GetDlgItem(hwndDlg, IDC_CURRENT_KEY); + HWND hwndList1 = GetDlgItem(hwndDlg, IDC_LIST1); + HWND hwndList2 = GetDlgItem(hwndDlg, IDC_LIST2); + static int item_num = 0; LVCOLUMN col = {0}; LVITEM item = {0}; - TCHAR *tmp = NULL; - char *tmp2 = NULL; - extern bool bIsMiranda09; NMLISTVIEW * hdr = (NMLISTVIEW *) lParam; + void ShowWordEditDialog(); switch (msg) { case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); - col.pszText = _T("Contact"); - col.mask = LVCF_TEXT | LVCF_WIDTH; - col.fmt = LVCFMT_LEFT; - col.cx = 60; - ListView_InsertColumn(hwndList, 0, &col); - ZeroMemory(&col,sizeof(col)); - col.pszText = _T("Key ID"); - col.mask = LVCF_TEXT | LVCF_WIDTH; - col.fmt = LVCFMT_LEFT; - col.cx = 50; - ListView_InsertColumn(hwndList, 1, &col); - ZeroMemory(&col,sizeof(col)); - col.pszText = _T("Name"); - col.mask = LVCF_TEXT | LVCF_WIDTH; - col.fmt = LVCFMT_LEFT; - col.cx = 50; - ListView_InsertColumn(hwndList, 2, &col); - ZeroMemory(&col,sizeof(col)); - col.pszText = _T("Email"); + col.pszText = _T("Source word:"); col.mask = LVCF_TEXT | LVCF_WIDTH; col.fmt = LVCFMT_LEFT; - col.cx = 50; - ListView_InsertColumn(hwndList, 3, &col); - ZeroMemory(&col,sizeof(col)); - col.pszText = _T("Protocol"); + col.cx = 80; + ListView_InsertColumn(hwndList1, 0, &col); + col.pszText = _T("Target word:"); col.mask = LVCF_TEXT | LVCF_WIDTH; col.fmt = LVCFMT_LEFT; - col.cx = 60; - ListView_InsertColumn(hwndList, 4, &col); - ListView_SetExtendedListViewStyleEx(hwndList, 0, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); - int i = 1, iRow = 0; -/* for(HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); hContact != NULL; hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0)) - { - if(isContactHaveKey(hContact)) - { - TCHAR *name = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR); - item.mask = LVIF_TEXT; - item.iItem = i; - item.iSubItem = 0; - item.pszText = name; - iRow = ListView_InsertItem(hwndList, &item); - ListView_SetItemText(hwndList, iRow, 0, name); - TCHAR *tmp = mir_a2t((char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0)); - ListView_SetItemText(hwndList, iRow, 4, tmp); - mir_free(tmp); - tmp2 = UniGetContactSettingUtf(hContact, szReplacerModuleName, "KeyID", ""); - tmp = mir_a2t(tmp2); - mir_free(tmp2); - ListView_SetItemText(hwndList, iRow, 1, (_tcslen(tmp) > 1)?tmp:_T("not set")); - mir_free(tmp); - tmp2 = UniGetContactSettingUtf(hContact, szReplacerModuleName, "KeyMainName", ""); - tmp = mir_a2t(tmp2); - mir_free(tmp2); - ListView_SetItemText(hwndList, iRow, 2, (_tcslen(tmp) > 1)?tmp:_T("not set")); - mir_free(tmp); - tmp2 = UniGetContactSettingUtf(hContact, szReplacerModuleName, "KeyMainEmail", ""); - tmp = mir_a2t(tmp2); - mir_free(tmp2); - ListView_SetItemText(hwndList, iRow, 3, (_tcslen(tmp) > 1)?tmp:_T("not set")); - mir_free(tmp); - if(DBGetContactSettingByte(hContact, szReplacerModuleName, "GPGEncryption", 0)) - ListView_SetItemState(hwndList, iRow, 0x2000, 0xF000); - user_data[i] = hContact; - ZeroMemory(&item,sizeof(item)); - ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE);// not sure about this - ListView_SetColumnWidth(hwndList, 1, LVSCW_AUTOSIZE); - ListView_SetColumnWidth(hwndList, 2, LVSCW_AUTOSIZE); - ListView_SetColumnWidth(hwndList, 3, LVSCW_AUTOSIZE); - ListView_SetColumnWidth(hwndList, 4, LVSCW_AUTOSIZE); - i++; - } - }*/ - tmp = UniGetContactSettingUtf(NULL, szReplacerModuleName, "szLogFilePath", _T("")); - SetDlgItemText(hwndDlg, IDC_LOG_FILE_EDIT, (_tcslen(tmp) > 1)?tmp:_T("c:\\GPGdebug.log")); - mir_free(tmp); - CheckStateLoadDB(hwndDlg, IDC_DEBUG_LOG, "bDebugLog", 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_JABBER_API), bIsMiranda09); + col.cx = 80; + ListView_InsertColumn(hwndList2, 0, &col); + int i = 0, iRow = 0; + char *setting = new char [32]; + TCHAR *buf = NULL; + mir_snprintf(setting, 31, "szSourceWord%d", i); + buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); + while(_tcslen(buf) > 0) { - string keyinfo = "Current private key id: "; - char *keyid = UniGetContactSettingUtf(NULL, szReplacerModuleName, "KeyID", ""); - keyinfo += (strlen(keyid) > 0)?keyid:"not set"; - mir_free(keyid); - SetDlgItemTextA(hwndDlg, IDC_CURRENT_KEY, keyinfo.c_str()); + item.mask = LVIF_TEXT; + item.iSubItem = 0; + item.pszText = buf; + iRow = ListView_InsertItem(hwndList1, &item); + ListView_SetItemText(hwndList1, iRow, 0, buf); + mir_free(buf); + ZeroMemory(&item,sizeof(item)); + ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE); + i++; + mir_snprintf(setting, 31, "szSourceWord%d", i); + buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); } - if(bIsMiranda09) - CheckStateLoadDB(hwndDlg, IDC_JABBER_API, "bJabberAPI", 1); - CheckStateLoadDB(hwndDlg, IDC_FILE_TRANSFERS, "bFileTransfers", 1); + mir_free(buf); + delete [] setting; return TRUE; } @@ -170,156 +107,37 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, { switch (LOWORD(wParam)) { - case IDC_DELETE_KEY_BUTTON: -/* { //gpg execute block - TCHAR tmp2[MAX_PATH] = {0}; - TCHAR *ptmp; - char *tmp; - bool keep = false; - bool ismetacontact = false; - HANDLE meta = NULL; - HANDLE hContact = user_data[item_num+1]; - if(isProtoMetaContacts(hContact)) + case IDC_ADD: + { + ShowWordEditDialog(); + if(hwnd_list_p == hwndList1) { - meta = hContact; - hContact = metaGetMostOnline(hContact); - ismetacontact = true; } - else if((meta = metaGetContact(user_data[item_num+1])) != NULL) + else if(hwnd_list_p == hwndList2) { - hContact = metaGetMostOnline(meta); - ismetacontact = true; } - tmp = UniGetContactSettingUtf(hContact, szReplacerModuleName, "KeyID", ""); - for(HANDLE hcnttmp = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); hcnttmp != NULL; hcnttmp = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hcnttmp, 0)) + } + break; + case IDC_CHANGE: + { + ShowWordEditDialog(); + if(hwnd_list_p == hwndList1) { - if(hcnttmp != hContact) - { - char *tmp2 = UniGetContactSettingUtf(hcnttmp, szReplacerModuleName, "KeyID", ""); - if(!strcmp(tmp, tmp2)) - { - mir_free(tmp2); - keep = true; - break; - } - mir_free(tmp2); - } } - if(!keep) - if(MessageBox(0, _T("This key not used by any contact, do you want to remove it from publick keyring ?"), _T("Key info"), MB_YESNO) == IDYES) - { - wstring cmd; - string output; - DWORD exitcode; - cmd += _T(" --batch --yes --delete-key "); - ptmp = mir_a2t(tmp); - cmd += ptmp; - mir_free(ptmp); - gpg_execution_params params; - pxResult result; - params.cmd = &cmd; - params.useless = ""; - params.out = &output; - params.code = &exitcode; - params.result = &result; - HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)¶ms); - if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT) - { - TerminateThread(gpg_thread, 0); - MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK); - } - if(result == pxNotFound) - { - MessageBox(0, _T("Set path to gpg.exe first!"), _T("Warning"), MB_OK); - mir_free(tmp); - break; - } - if(output.find("--delete-secret-keys") != string::npos) - MessageBoxA(0, "we have secret key for this public key, do not removing from GPG keyring", "info", MB_OK); - else - MessageBoxA(0, "Key removed from GPG keyring", "info", MB_OK); - } - mir_free(tmp); - if(ismetacontact) - { - if(MessageBox(0, _T("Do you want to remove key from entire metacontact (all subcontacts) ?"), _T("Metacontact detected"), MB_YESNO) == IDYES) - { - HANDLE hcnt = NULL; - int count = metaGetContactsNum(meta); - for(int i = 0; i < count; i++) - { - hcnt = metaGetSubcontact(meta, i); - if(hcnt) - { - DBDeleteContactSetting(hcnt, szReplacerModuleName, "KeyID"); - DBDeleteContactSetting(hcnt, szReplacerModuleName, "GPGPubKey"); - DBDeleteContactSetting(hcnt, szReplacerModuleName, "KeyMainName"); - DBDeleteContactSetting(hcnt, szReplacerModuleName, "KeyType"); - DBDeleteContactSetting(hcnt, szReplacerModuleName, "KeyMainEmail"); - DBDeleteContactSetting(hcnt, szReplacerModuleName, "KeyComment"); - setClistIcon(hcnt); - setSrmmIcon(hcnt); - } - } - } - else - { - DBDeleteContactSetting(hContact, szReplacerModuleName, "KeyID"); - DBDeleteContactSetting(hContact, szReplacerModuleName, "GPGPubKey"); - DBDeleteContactSetting(hContact, szReplacerModuleName, "KeyMainName"); - DBDeleteContactSetting(hContact, szReplacerModuleName, "KeyType"); - DBDeleteContactSetting(hContact, szReplacerModuleName, "KeyMainEmail"); - DBDeleteContactSetting(hContact, szReplacerModuleName, "KeyComment"); - setClistIcon(hContact); - setSrmmIcon(hContact); - } - } - else - { - DBDeleteContactSetting(user_data[item_num+1], szReplacerModuleName, "KeyID"); - DBDeleteContactSetting(user_data[item_num+1], szReplacerModuleName, "GPGPubKey"); - DBDeleteContactSetting(user_data[item_num+1], szReplacerModuleName, "KeyMainName"); - DBDeleteContactSetting(user_data[item_num+1], szReplacerModuleName, "KeyType"); - DBDeleteContactSetting(user_data[item_num+1], szReplacerModuleName, "KeyMainEmail"); - DBDeleteContactSetting(user_data[item_num+1], szReplacerModuleName, "KeyComment"); - setClistIcon(user_data[item_num+1]); - setSrmmIcon(user_data[item_num+1]); - } - } - ListView_SetItemText(hwndList, item_num, 3, _T("not set")); - ListView_SetItemText(hwndList, item_num, 2, _T("not set")); - ListView_SetItemText(hwndList, item_num, 1, _T("not set")); */ - break; - case IDC_SAVE_KEY_BUTTON: -/* { - tmp = GetFilePath(_T("Export public key"), _T("*"), _T(".asc pubkey file"), true); - if(!tmp) + else if(hwnd_list_p == hwndList2) { - break; } - wstring str; + } + break; + case IDC_DELETE: + { + if(hwnd_list_p == hwndList1) { - TCHAR *tmp = UniGetContactSettingUtf(user_data[item_num+1], szReplacerModuleName, "GPGPubKey", _T("")); - str.append(tmp); - mir_free(tmp); } - wstring::size_type s = 0; - while((s = str.find(_T("\r"), s)) != wstring::npos) + else if(hwnd_list_p == hwndList2) { - str.erase(s, 1); } - wfstream f(tmp, std::ios::out); - delete [] tmp; - f<<str.c_str(); - f.close(); - }*/ - break; - case IDC_LOG_FILE_SET: -/* { - tmp = GetFilePath(_T("Set log file"), _T("*"), _T("LOG files"), 1); - SetDlgItemText(hwndDlg, IDC_LOG_FILE_EDIT, tmp); - mir_free(tmp); - }*/ + } break; default: break; @@ -334,12 +152,41 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, { if(hdr->hdr.code == LVN_ITEMCHANGED) { - int i = hdr->iItem; - if(ListView_GetItemState(hwndList, i, 0xF000) == 0x2000) - DBWriteContactSettingByte(user_data[i+1], szReplacerModuleName, "GPGEncryption", 1); - else - DBWriteContactSettingByte(user_data[i+1], szReplacerModuleName, "GPGEncryption", 0); - item_num = i; + item_num = hdr->iItem; + int iRow = 0; + if(hdr->hdr.hwndFrom == hwndList1) + { + char *setting = new char [32]; + TCHAR *buf = NULL; + mir_snprintf(setting, 31, "szTargetWords%d", hdr->iItem); + buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); + wstring str = buf; + mir_free(buf); + wstring::size_type p1 = 0, p2 = 0, end = 0; + p1 = str.find(_T("\n")); //nice delimiter + for(;;) + { + if(p1 = wstring::npos) + break; + p2 = str.find(_T("\n"), p1); + if(p2 < end || p2 == p1) + break; + end = p2; + item.mask = LVIF_TEXT; + item.iSubItem = 0; + item.pszText = (TCHAR*)str.substr(p1, p2-p1).c_str(); + iRow = ListView_InsertItem(hwndList2, &item); + ListView_SetItemText(hwndList2, iRow, 0, (TCHAR*)str.substr(p1, p2-p1).c_str()); + ZeroMemory(&item,sizeof(item)); + ListView_SetColumnWidth(hwndList2, 0, LVSCW_AUTOSIZE); + p1 = p2; + } + mir_free(buf); + } + if(hdr->hdr.hwndFrom == hwndList2) + { + } + hwnd_list_p = hdr->hdr.hwndFrom; } } switch (((LPNMHDR)lParam)->code) @@ -347,8 +194,6 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, case PSN_APPLY: { - extern bool bDebugLog, bJabberAPI, bFileTransfers; - bJabberAPI = CheckStateStoreDB(hwndDlg, IDC_JABBER_API, "bJabberAPI"); return TRUE; } } @@ -359,4 +204,58 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, return FALSE; } +HWND hwndWordEdit = NULL; +static BOOL CALLBACK DlgProcWordEditDialog(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + return TRUE; + } + + + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_OK: + DestroyWindow(hwndDlg); + break; + case IDC_CANCEL: + DestroyWindow(hwndDlg); + break; + default: + break; + } + break; + } + + case WM_NOTIFY: + { +// switch (((LPNMHDR)lParam)->code) +// { +// default: +// break; +// } + } + break; + case WM_CLOSE: + DestroyWindow(hwndDlg); + break; + case WM_DESTROY: + hwndWordEdit = NULL; + break; + } + return FALSE; +} +void ShowWordEditDialog() +{ + if (hwndWordEdit == NULL) + { + hwndWordEdit = CreateDialog(hInst, MAKEINTRESOURCE(IDD_WORD_EDIT), NULL, DlgProcWordEditDialog); + } + SetForegroundWindow(hwndWordEdit); +} diff --git a/replacer.rc b/replacer.rc index 0c3595b..1c3683c 100644 --- a/replacer.rc +++ b/replacer.rc @@ -53,8 +53,8 @@ END //
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,0,0,7
- PRODUCTVERSION 0,8,0,1
+ FILEVERSION 0,0,0,1
+ PRODUCTVERSION 0,9,0,1
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -70,12 +70,12 @@ BEGIN BLOCK "041904b0"
BEGIN
VALUE "FileDescription", "replacer"
- VALUE "FileVersion", "0, 0, 0, 7"
+ VALUE "FileVersion", "0, 0, 0, 1"
VALUE "InternalName", "replacer"
- VALUE "LegalCopyright", "Copyright (C) 2010 sss"
+ VALUE "LegalCopyright", "Copyright (C) 2010 someone"
VALUE "OriginalFilename", "replacer"
VALUE "ProductName", "replacer"
- VALUE "ProductVersion", "0, 8, 0, 1"
+ VALUE "ProductVersion", "0, 9, 0, 1"
END
END
BLOCK "VarFileInfo"
@@ -84,6 +84,42 @@ BEGIN END
END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_WORD_EDIT DIALOGEX 0, 0, 316, 65
+STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Add/Edit word"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "ÎÊ",IDC_OK,7,43,50,14
+ PUSHBUTTON "Îòìåíà",IDC_CANCEL,259,43,50,14
+ EDITTEXT IDC_EDIT_WORD,20,23,274,14,ES_AUTOHSCROLL
+ LTEXT "Enterr/Edit word or phrase",IDC_LABEL,21,11,255,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_WORD_EDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 309
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 57
+ END
+END
+#endif // APSTUDIO_INVOKED
+
#endif // ðóññêèé resources
/////////////////////////////////////////////////////////////////////////////
@@ -106,13 +142,13 @@ IDD_OPT_REPLACER DIALOGEX 0, 0, 286, 214 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x0
BEGIN
- LISTBOX IDC_LIST2,20,16,106,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
- LISTBOX IDC_LIST3,152,16,108,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
LTEXT "List fo words for replace:",IDC_STATIC,19,8,118,8
LTEXT "Replace with:",IDC_STATIC,152,8,119,8
- PUSHBUTTON "Add text",IDC_BUTTON1,19,181,50,14
- PUSHBUTTON "Change",IDC_BUTTON2,111,181,56,14
- PUSHBUTTON "Delete",IDC_BUTTON3,210,181,50,14
+ PUSHBUTTON "Add text",IDC_ADD,19,181,50,14
+ PUSHBUTTON "Change",IDC_CHANGE,111,181,56,14
+ PUSHBUTTON "Delete",IDC_DELETE,210,181,50,14
+ CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,19,16,108,157
+ CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,152,16,108,157
END
diff --git a/replacer.suo b/replacer.suo Binary files differindex ea67d2e..229a9b7 100644 --- a/replacer.suo +++ b/replacer.suo @@ -6,17 +6,21 @@ #define IDD_OPT_REPLACER 104
#define IDI_SECURED 112
#define IDI_UNSECURED 113
+#define IDD_WORD_EDIT 114
#define IDC_USERLIST 1020
#define IDC_LOAD_KEY_BUTTON 1022
#define ID_LOD_FROM_FILE 1024
#define IDC_EDIT1 1025
#define IDC_LOG_FILE_EDIT 1025
+#define IDC_EDIT_WORD 1025
#define IDC_BUTTON1 1026
#define IDC_SAVE_KEY_BUTTON 1026
+#define IDC_ADD 1026
#define IDC_DELETE_KEY_BUTTON 1027
#define IDC_SELECT_KEY 1033
#define IDC_BUTTON2 1046
#define IDC_LOG_FILE_SET 1046
+#define IDC_CHANGE 1046
#define IDC_DEBUG_LOG 1048
#define IDC_JABBER_API 1049
#define IDC_CURRENT_KEY 1054
@@ -25,14 +29,18 @@ #define IDC_LIST2 1063
#define IDC_LIST3 1064
#define IDC_BUTTON3 1065
+#define IDC_DELETE 1065
+#define IDC_LABEL 1066
+#define IDC_OK 1067
+#define IDC_CANCEL 1068
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 114
+#define _APS_NEXT_RESOURCE_VALUE 115
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1066
+#define _APS_NEXT_CONTROL_VALUE 1069
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
|