Mercurial > dwindows
diff dwtestoo.cpp @ 2962:e6072eb914ce
C++: Step 4 of the std::string transition.
Remove C style string lambda support due to limitations of std::function.
std::function due to its template definition cannot differentiate parameters.
This causes std::function parameters to be indistiguishable despite different signatures.
Use the C style function pointer instead if you want C style strings, not lambdas.
Convert KeyPress lambda to use std::string, this was missed in the last commit.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 25 Feb 2023 04:25:21 +0000 |
parents | b9bd130f438a |
children | 531d36ebf37a |
line wrap: on
line diff
--- a/dwtestoo.cpp Thu Feb 23 15:24:36 2023 +0000 +++ b/dwtestoo.cpp Sat Feb 25 04:25:21 2023 +0000 @@ -112,8 +112,8 @@ class DWTest : public DW::Window { private: - const char *ResolveKeyName(int vk) { - const char *keyname; + std::string ResolveKeyName(int vk) { + std::string keyname; switch(vk) { case VK_LBUTTON : keyname = "VK_LBUTTON"; break; case VK_RBUTTON : keyname = "VK_RBUTTON"; break; @@ -194,7 +194,7 @@ return keyname; } - const char *ResolveKeyModifiers(int mask) { + std::string ResolveKeyModifiers(int mask) { if((mask & KC_CTRL) && (mask & KC_SHIFT) && (mask & KC_ALT)) return "KC_CTRL KC_SHIFT KC_ALT"; else if((mask & KC_CTRL) && (mask & KC_SHIFT)) @@ -986,14 +986,18 @@ return TRUE; }); - render2->ConnectKeyPress([this, status1](char ch, int vk, int state, char *utf8) -> int + render2->ConnectKeyPress([this, status1](char ch, int vk, int state, std::string utf8) -> int { - char tmpbuf[101] = {0}; + std::string buf = "Key: "; + if(ch) - snprintf(tmpbuf, 100, "Key: %c(%d) Modifiers: %s(%d) utf8 %s", ch, ch, this->ResolveKeyModifiers(state), state, utf8); + buf += std::string(1, ch) + "(" + std::to_string((int)ch) + ")"; else - snprintf(tmpbuf, 100, "Key: %s(%d) Modifiers: %s(%d) utf8 %s", this->ResolveKeyName(vk), vk, ResolveKeyModifiers(state), state, utf8); - status1->SetText(tmpbuf); + buf += ResolveKeyName(vk) + "(" + std::to_string(vk) + ")"; + + buf += " Modifiers: " + ResolveKeyModifiers(state) + "(" + std::to_string(state) + ") utf8 " + utf8; + + status1->SetText(buf); return FALSE; });