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 {