Mercurial > dwindows
comparison 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 |
comparison
equal
deleted
inserted
replaced
2961:b9bd130f438a | 2962:e6072eb914ce |
---|---|
110 } | 110 } |
111 #else | 111 #else |
112 class DWTest : public DW::Window | 112 class DWTest : public DW::Window |
113 { | 113 { |
114 private: | 114 private: |
115 const char *ResolveKeyName(int vk) { | 115 std::string ResolveKeyName(int vk) { |
116 const char *keyname; | 116 std::string keyname; |
117 switch(vk) { | 117 switch(vk) { |
118 case VK_LBUTTON : keyname = "VK_LBUTTON"; break; | 118 case VK_LBUTTON : keyname = "VK_LBUTTON"; break; |
119 case VK_RBUTTON : keyname = "VK_RBUTTON"; break; | 119 case VK_RBUTTON : keyname = "VK_RBUTTON"; break; |
120 case VK_CANCEL : keyname = "VK_CANCEL"; break; | 120 case VK_CANCEL : keyname = "VK_CANCEL"; break; |
121 case VK_MBUTTON : keyname = "VK_MBUTTON"; break; | 121 case VK_MBUTTON : keyname = "VK_MBUTTON"; break; |
192 default: keyname = "<unknown>"; break; | 192 default: keyname = "<unknown>"; break; |
193 } | 193 } |
194 return keyname; | 194 return keyname; |
195 } | 195 } |
196 | 196 |
197 const char *ResolveKeyModifiers(int mask) { | 197 std::string ResolveKeyModifiers(int mask) { |
198 if((mask & KC_CTRL) && (mask & KC_SHIFT) && (mask & KC_ALT)) | 198 if((mask & KC_CTRL) && (mask & KC_SHIFT) && (mask & KC_ALT)) |
199 return "KC_CTRL KC_SHIFT KC_ALT"; | 199 return "KC_CTRL KC_SHIFT KC_ALT"; |
200 else if((mask & KC_CTRL) && (mask & KC_SHIFT)) | 200 else if((mask & KC_CTRL) && (mask & KC_SHIFT)) |
201 return "KC_CTRL KC_SHIFT"; | 201 return "KC_CTRL KC_SHIFT"; |
202 else if((mask & KC_CTRL) && (mask & KC_ALT)) | 202 else if((mask & KC_CTRL) && (mask & KC_ALT)) |
984 UpdateRender(); | 984 UpdateRender(); |
985 } | 985 } |
986 return TRUE; | 986 return TRUE; |
987 }); | 987 }); |
988 | 988 |
989 render2->ConnectKeyPress([this, status1](char ch, int vk, int state, char *utf8) -> int | 989 render2->ConnectKeyPress([this, status1](char ch, int vk, int state, std::string utf8) -> int |
990 { | 990 { |
991 char tmpbuf[101] = {0}; | 991 std::string buf = "Key: "; |
992 | |
992 if(ch) | 993 if(ch) |
993 snprintf(tmpbuf, 100, "Key: %c(%d) Modifiers: %s(%d) utf8 %s", ch, ch, this->ResolveKeyModifiers(state), state, utf8); | 994 buf += std::string(1, ch) + "(" + std::to_string((int)ch) + ")"; |
994 else | 995 else |
995 snprintf(tmpbuf, 100, "Key: %s(%d) Modifiers: %s(%d) utf8 %s", this->ResolveKeyName(vk), vk, ResolveKeyModifiers(state), state, utf8); | 996 buf += ResolveKeyName(vk) + "(" + std::to_string(vk) + ")"; |
996 status1->SetText(tmpbuf); | 997 |
998 buf += " Modifiers: " + ResolveKeyModifiers(state) + "(" + std::to_string(state) + ") utf8 " + utf8; | |
999 | |
1000 status1->SetText(buf); | |
997 return FALSE; | 1001 return FALSE; |
998 }); | 1002 }); |
999 | 1003 |
1000 hscrollbar->ConnectValueChanged([this, status1](int value) -> int | 1004 hscrollbar->ConnectValueChanged([this, status1](int value) -> int |
1001 { | 1005 { |