KeyValueEdit.cpp
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:5k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // KeyValueEdit.cpp: implementation of the CKeyValueEdit class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "KeyValueEdit.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. CKeyValueEdit::CKeyValueEdit()
  10. {
  11. m_bEditting=false;
  12. }
  13. CKeyValueEdit::~CKeyValueEdit()
  14. {
  15. }
  16. void  CKeyValueEdit::SetKeyValueEdit(RECT rect,int value)
  17. {
  18. char sText[32];
  19.     TranslateValueToString(value,sText);
  20. CGraphButton::SetButton(rect,sText);
  21. m_iKeyValue=value;
  22. }
  23. void CKeyValueEdit::SetKeyValue(int value)
  24. {
  25. char sText[32];
  26.     TranslateValueToString(value,sText);
  27. CGraphButton::SetButtonText(sText);
  28. m_iKeyValue=value;
  29. }
  30. void  CKeyValueEdit::RenderKeyValueEdit()
  31. {
  32.     UpdateKeyValueEdit();
  33.     if(m_iKeyValue==0)
  34. CGraphButton::SetNormalColor(0.5f,0,0);
  35. else 
  36. CGraphButton::SetNormalColor(0,0.4f,0);
  37. CGraphButton::RenderButton();
  38. }
  39. void  CKeyValueEdit::UpdateKeyValueEdit()
  40. {
  41.     if(m_bSelected)
  42. {
  43. m_bSelected=false;
  44.         strcpy(m_sText,"_");
  45. m_bEditting=true;
  46. }
  47. if(m_bEditting)
  48. {
  49. static int flicker=0;
  50.      flicker++;
  51.      if(flicker>50)flicker=0;
  52.     if(flicker<25)CGraphButton::SetButtonText("_");
  53.     else CGraphButton::SetButtonText(" ");
  54. //////////// mouse cling
  55. // SetCursorPos((m_rect.left+m_rect.right)/2,(m_rect.top+m_rect.bottom)/2+30);
  56.         char str[32];
  57. if(m_cInput.m_keys[MOUSE_0])
  58. {
  59. m_cInput.m_keys[MOUSE_0]=false;
  60. if(m_iState==BUTTON_NORMAL)
  61.     TranslateValueToString(m_iKeyValue,str);
  62. else
  63. {
  64.                 TranslateValueToString(MOUSE_0,str);
  65.           m_iKeyValue=MOUSE_0;
  66. }
  67.          FinishInput();
  68. CGraphButton::SetButtonText(str);
  69. return;
  70. }
  71. if(m_cInput.m_keys[MOUSE_1])
  72. {
  73. m_cInput.m_keys[MOUSE_1]=false;
  74. if(m_iState==BUTTON_NORMAL)
  75.     TranslateValueToString(m_iKeyValue,str);
  76. else
  77. {
  78.     TranslateValueToString(MOUSE_1,str);
  79.      m_iKeyValue=MOUSE_1;
  80. }
  81.             FinishInput();
  82. CGraphButton::SetButtonText(str);
  83. return;
  84. }
  85. for(int i=0;i<256;i++)
  86. {
  87. if(m_cInput.m_keys[i])
  88. {
  89. if(TranslateValueToString(i,str))
  90. {
  91.                     FinishInput();
  92. CGraphButton::SetButtonText(str);
  93. m_iKeyValue=i;
  94. return;
  95. }
  96. }
  97. }
  98. }
  99. }
  100. void  CKeyValueEdit::FinishInput()
  101. {
  102. m_bEditting=false;
  103. m_bValueChanged=true;
  104. }
  105. bool CKeyValueEdit::IsValueChanged()
  106. {
  107. if(m_bValueChanged)
  108. {
  109. m_bValueChanged=false;
  110. return true;
  111. }
  112. return false;
  113. }
  114. int   CKeyValueEdit::GetKeyValue()
  115. {
  116.     return m_iKeyValue;
  117. }
  118. bool  CKeyValueEdit::TranslateValueToString(int value, char *str)
  119. {
  120. if( (value>64 && value<91) || ( value>47 && value <58) )
  121. {
  122. str[0]=value;
  123. str[1]=NULL;
  124. return true;
  125. }
  126.     if(value>95 && value<106 )
  127. {
  128. char s[20];
  129. wsprintf(s,"Pad num :%d",value-96);
  130. strcpy(str,s);
  131. return true;
  132. }
  133. if(value>111 && value<124)
  134. {
  135. char s[20];
  136. wsprintf(s,"F%d",value-111);
  137. strcpy(str,s);
  138. return true;
  139. }
  140. if(value==37)
  141. {
  142. char s[20];
  143. wsprintf(s,"Left");
  144. strcpy(str,s);
  145. return true;
  146. }
  147. if(value==38)
  148. {
  149. char s[20];
  150. wsprintf(s,"Up");
  151. strcpy(str,s);
  152. return true;
  153. }
  154. if(value==39)
  155. {
  156. char s[20];
  157. wsprintf(s,"Right");
  158. strcpy(str,s);
  159. return true;
  160. }
  161. if(value==40)
  162. {
  163. char s[20];
  164. wsprintf(s,"Down");
  165. strcpy(str,s);
  166. return true;
  167. }
  168. if(value==33)
  169. {
  170. char s[20];
  171. wsprintf(s,"Page Up");
  172. strcpy(str,s);
  173. return true;
  174. }
  175. if(value==34)
  176. {
  177. char s[20];
  178. wsprintf(s,"Page Down");
  179. strcpy(str,s);
  180. return true;
  181. }
  182. if(value==35)
  183. {
  184. char s[20];
  185. wsprintf(s,"End");
  186. strcpy(str,s);
  187. return true;
  188. }
  189. if(value==36)
  190. {
  191. char s[20];
  192. wsprintf(s,"Home");
  193. strcpy(str,s);
  194. return true;
  195. }
  196. if(value==45)
  197. {
  198. char s[20];
  199. wsprintf(s,"Insert");
  200. strcpy(str,s);
  201. return true;
  202. }
  203. if(value==46)
  204. {
  205. char s[20];
  206. wsprintf(s,"Delete");
  207. strcpy(str,s);
  208. return true;
  209. }
  210. if(value==110)
  211. {
  212. char s[20];
  213. wsprintf(s,"Del");
  214. strcpy(str,s);
  215. return true;
  216. }
  217. if(value==111)
  218. {
  219. char s[20];
  220. wsprintf(s,"/");
  221. strcpy(str,s);
  222. return true;
  223. }
  224. if(value==106)
  225. {
  226. char s[20];
  227. wsprintf(s,"*");
  228. strcpy(str,s);
  229. return true;
  230. }
  231. if(value==109)
  232. {
  233. char s[20];
  234. wsprintf(s,"-");
  235. strcpy(str,s);
  236. return true;
  237. }
  238. if(value==107)
  239. {
  240. char s[20];
  241. wsprintf(s,"+");
  242. strcpy(str,s);
  243. return true;
  244. }
  245. if(value==13)
  246. {
  247. char s[20];
  248. wsprintf(s,"Enter");
  249. strcpy(str,s);
  250. return true;
  251. }
  252. if(value==32)
  253. {
  254. char s[20];
  255. wsprintf(s,"Space");
  256. strcpy(str,s);
  257. return true;
  258. }
  259. if(value==16)
  260. {
  261. char s[20];
  262. wsprintf(s,"Shift");
  263. strcpy(str,s);
  264. return true;
  265. }
  266. if(value==17)
  267. {
  268. char s[20];
  269. wsprintf(s,"Ctrl");
  270. strcpy(str,s);
  271. return true;
  272. }
  273. if(value==27)
  274. {
  275. char s[20];
  276. wsprintf(s,"Escape");
  277. strcpy(str,s);
  278. return true;
  279. }
  280. if(value==MOUSE_0)
  281. {
  282. char s[20];
  283. wsprintf(s,"Mouse1");
  284. strcpy(str,s);
  285. return true;
  286. }
  287. if(value==MOUSE_1)
  288. {
  289. char s[20];
  290. wsprintf(s,"Mouse2");
  291. strcpy(str,s);
  292. return true;
  293. }
  294. if(value==0)
  295. {
  296. char s[20];
  297. wsprintf(s,"No Key");
  298. strcpy(str,s);
  299. return true;
  300. }
  301. return false;
  302. }