From f47da18fbc3112cfeb6924656625349333a76c48 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 18 Jan 2008 17:33:49 +0000 Subject: [PATCH] unicode supported again --- syncdata.h | 4 ++-- synctracker2.cpp | 37 +++++++++++++++++-------------------- trackview.cpp | 16 +++++++++++----- trackview.h | 2 +- 4 files changed, 31 insertions(+), 28 deletions(-) diff --git a/syncdata.h b/syncdata.h index a84f830..ee63207 100644 --- a/syncdata.h +++ b/syncdata.h @@ -75,7 +75,7 @@ private: class SyncData { public: - SyncTrack &getTrack(std::string name) + SyncTrack &getTrack(const std::basic_string &name) { TrackContainer::iterator iter = tracks.find(name); if (iter != tracks.end()) return iter->second; @@ -95,6 +95,6 @@ public: size_t getTrackCount() { return tracks.size(); } // private: - typedef std::map TrackContainer; + typedef std::map, SyncTrack> TrackContainer; TrackContainer tracks; }; diff --git a/synctracker2.cpp b/synctracker2.cpp index 3e92063..69e8d20 100644 --- a/synctracker2.cpp +++ b/synctracker2.cpp @@ -39,23 +39,23 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Hi there :)"); HMENU fileMenu = CreatePopupMenu(); - AppendMenu(fileMenu, MF_STRING, 0, "&Open\tCtrl+O"); - AppendMenu(fileMenu, MF_STRING, 2, "&Save\tCtrl+S"); - AppendMenu(fileMenu, MF_STRING, 3, "Save &As"); + AppendMenu(fileMenu, MF_STRING, 0, _T("&Open\tCtrl+O")); + AppendMenu(fileMenu, MF_STRING, 2, _T("&Save\tCtrl+S")); + AppendMenu(fileMenu, MF_STRING, 3, _T("Save &As")); AppendMenu(fileMenu, MF_SEPARATOR, 0, NULL); - AppendMenu(fileMenu, MF_STRING, 3, "&Exit"); + AppendMenu(fileMenu, MF_STRING, 3, _T("&Exit")); HMENU editMenu = CreatePopupMenu(); - AppendMenu(editMenu, MF_STRING, WM_UNDO, "&Undo\tCtrl+Z"); - AppendMenu(editMenu, MF_STRING, WM_REDO, "&Redo\tShift+Ctrl+Z"); + AppendMenu(editMenu, MF_STRING, WM_UNDO, _T("&Undo\tCtrl+Z")); + AppendMenu(editMenu, MF_STRING, WM_REDO, _T("&Redo\tShift+Ctrl+Z")); AppendMenu(editMenu, MF_SEPARATOR, 0, NULL); - AppendMenu(editMenu, MF_STRING, WM_CUT, "Cu&t\tCtrl+X"); - AppendMenu(editMenu, MF_STRING, WM_COPY, "&Copy\tCtrl+C"); - AppendMenu(editMenu, MF_STRING, WM_PASTE, "&Paste\tCtrl+V"); + AppendMenu(editMenu, MF_STRING, WM_CUT, _T("Cu&t\tCtrl+X")); + AppendMenu(editMenu, MF_STRING, WM_COPY, _T("&Copy\tCtrl+C")); + AppendMenu(editMenu, MF_STRING, WM_PASTE, _T("&Paste\tCtrl+V")); HMENU rootMenu = CreateMenu(); - AppendMenu(rootMenu, MF_STRING | MF_POPUP, (UINT_PTR)fileMenu, "&File"); - AppendMenu(rootMenu, MF_STRING | MF_POPUP, (UINT_PTR)editMenu, "&Edit"); + AppendMenu(rootMenu, MF_STRING | MF_POPUP, (UINT_PTR)fileMenu, _T("&File")); + AppendMenu(rootMenu, MF_STRING | MF_POPUP, (UINT_PTR)editMenu, _T("&Edit")); SetMenu(hwnd, rootMenu); } break; @@ -81,15 +81,12 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA case WM_COMMAND: switch (LOWORD(wParam)) { - case WM_COPY: - /* PostMessage(m_hWnd, WM_COPY, 0, 0); */ - /* HMMMM.... not working... */ - printf("copy!\n"); - break; - // simply forward these case WM_UNDO: case WM_REDO: + case WM_COPY: + case WM_PASTE: + case WM_CUT: SendMessage(trackViewWin, LOWORD(wParam), 0, 0); break; @@ -203,9 +200,9 @@ int _tmain(int argc, _TCHAR* argv[]) #endif SyncData syncData; - SyncTrack &camXTrack = syncData.getTrack("cam.x"); - SyncTrack &camYTrack = syncData.getTrack("cam.y"); - SyncTrack &camZTrack = syncData.getTrack("cam.z"); + SyncTrack &camXTrack = syncData.getTrack(_T("cam.x")); + SyncTrack &camYTrack = syncData.getTrack(_T("cam.y")); + SyncTrack &camZTrack = syncData.getTrack(_T("cam.z")); /* for (int i = 0; i < 1 << 16; ++i) { char temp[256]; diff --git a/trackview.cpp b/trackview.cpp index efa9f9a..9aba8ef 100644 --- a/trackview.cpp +++ b/trackview.cpp @@ -106,10 +106,10 @@ void TrackView::paintTopMargin(HDC hdc, RECT rcTracks) DrawEdge(hdc, &fillRect, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_ADJUST | BF_LEFT | BF_RIGHT | BF_BOTTOM); FillRect(hdc, &fillRect, bgBrush); - std::string trackName = trackIter->first; + const std::basic_string &trackName = trackIter->first; TextOut(hdc, fillRect.left, 0, - trackName.c_str(), int(trackName.length()) + trackName.data(), int(trackName.length()) ); ExcludeClipRect(hdc, topMargin.left, topMargin.top, topMargin.right, topMargin.bottom); } @@ -487,9 +487,15 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags) case VK_PRIOR: setEditRow(editRow - windowRows / 2); break; case VK_NEXT: setEditRow(editRow + windowRows / 2); break; + // simulate keyboard accelerators case 'Z': - // simulate keyboard accelerators - SendMessage(GetParent(this->getWin()), WM_COMMAND, MAKEWPARAM(shiftDown ? WM_REDO : WM_UNDO, 1), 0); + if (ctrlDown) SendMessage(GetParent(this->getWin()), WM_COMMAND, MAKEWPARAM(shiftDown ? WM_REDO : WM_UNDO, 1), 0); + break; + case 'C': + printf("hit '%c', flags: %X\n", keyCode, flags); +// if (ctrlDown) SendMessage(GetParent(this->getWin()), WM_COMMAND, MAKEWPARAM(shiftDown ? WM_REDO : WM_UNDO, 1), 0); + break; + default: break; } } @@ -500,7 +506,7 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags) { SyncDataEdit::EditCommand *cmd = new SyncDataEdit::EditCommand( editTrack, editRow, - true, float(atof(editString.c_str())) + true, float(_tstof(editString.c_str())) ); syncDataEdit.exec(cmd); diff --git a/trackview.h b/trackview.h index fe0fff1..5ab403e 100644 --- a/trackview.h +++ b/trackview.h @@ -178,7 +178,7 @@ private: SyncDataEdit syncDataEdit; - std::string editString; + std::basic_string editString; HWND hwnd; HBRUSH editBrush;