|
19 | 19 | #define new DEBUG_NEW |
20 | 20 | #endif |
21 | 21 |
|
| 22 | +#ifdef UNICODE |
| 23 | +#define CF_TTEXT CF_UNICODETEXT |
| 24 | +#else |
| 25 | +#define CF_TTEXT CF_TEXT |
| 26 | +#endif |
| 27 | + |
22 | 28 | static std::unique_ptr<CInternetSession> g_pInternetSession; |
23 | 29 |
|
24 | 30 | static CString GetSourceUrlName(LPCTSTR lpszFileName) |
@@ -137,6 +143,8 @@ BEGIN_MESSAGE_MAP(CRadNotepadDoc, CScintillaDoc) |
137 | 143 | ON_UPDATE_COMMAND_UI(ID_FILE_READONLY, &CRadNotepadDoc::OnUpdateFileReadOnly) |
138 | 144 | ON_COMMAND_RANGE(ID_ENCODING_ANSI, ID_ENCODING_UTF8, &CRadNotepadDoc::OnEncoding) |
139 | 145 | ON_UPDATE_COMMAND_UI_RANGE(ID_ENCODING_ANSI, ID_ENCODING_UTF8, &CRadNotepadDoc::OnUpdateEncoding) |
| 146 | + ON_COMMAND(ID_TAB_COPYFILENAME, &CRadNotepadDoc::OnTabCopyFilename) |
| 147 | + ON_UPDATE_COMMAND_UI(ID_TAB_COPYFILENAME, &CRadNotepadDoc::OnUpdateTabCopyFilename) |
140 | 148 | END_MESSAGE_MAP() |
141 | 149 |
|
142 | 150 |
|
@@ -666,3 +674,27 @@ void CRadNotepadDoc::OnUpdateEncoding(CCmdUI *pCmdUI) |
666 | 674 | Encoding e = static_cast<Encoding>(pCmdUI->m_nID - ID_ENCODING_ANSI); |
667 | 675 | pCmdUI->SetCheck(e == m_eEncoding); |
668 | 676 | } |
| 677 | + |
| 678 | +void CRadNotepadDoc::OnTabCopyFilename() |
| 679 | +{ |
| 680 | + if (AfxGetMainWnd()->OpenClipboard()) |
| 681 | + { |
| 682 | + EmptyClipboard(); |
| 683 | + |
| 684 | + const SIZE_T length = GetPathName().GetLength() + 1; |
| 685 | + HGLOBAL hClip = GlobalAlloc(GHND | GMEM_SHARE, length * sizeof(TCHAR)); |
| 686 | + AFXASSUME(hClip != NULL); |
| 687 | + TCHAR* pText = (TCHAR*) GlobalLock(hClip); |
| 688 | + AFXASSUME(pText != NULL); |
| 689 | + _tcscpy_s(pText, length, GetPathName()); |
| 690 | + GlobalUnlock(hClip); |
| 691 | + SetClipboardData(CF_TTEXT, hClip); |
| 692 | + |
| 693 | + CloseClipboard(); |
| 694 | + } |
| 695 | +} |
| 696 | + |
| 697 | +void CRadNotepadDoc::OnUpdateTabCopyFilename(CCmdUI* pCmdUI) |
| 698 | +{ |
| 699 | + pCmdUI->Enable(!GetPathName().IsEmpty()); |
| 700 | +} |
0 commit comments