EasyX鼠标函数和MBCS、Unicode编码
来源:互联网 发布:卡二的网络不好 编辑:程序博客网 时间:2024/06/06 01:41
O、函数
kbhit() MouseHit()
MOUSEMSG m;
m = GetMouseMsg();
solidpolygon((POINT*)p, 3); putpixel(p[3][0],p[3][1],0xee00ee); outtextxy(296, 310, _T("BestAns")); setwritemode(R2_XORPEN);
SYSTEMTIME ti;
GetLocalTime(&ti);
一、鼠标
获取按键: 获取鼠标:
char c; MOUSEMSG m; if (kbhit()) if (MouseHit()) c = getch(); m = GetMouseMsg();
struct MOUSEMSG{ UINT uMsg; // 当前鼠标消息 bool mkCtrl; // Ctrl 键是否按下 bool mkShift; // Shift 键是否按下 bool mkLButton; // 鼠标左键是否按下 bool mkMButton; // 鼠标中键是否按下 bool mkRButton; // 鼠标右键是否按下 int x; // 当前鼠标 x 坐标 int y; // 当前鼠标 y 坐标 int wheel; // 鼠标滚轮滚动值};
其中,“当前鼠标消息”可以是以下值:
//每个值类似于头文件中定义的宏,为4位十六进制数WM_MOUSEMOVE 鼠标移动消息WM_MOUSEWHEEL 鼠标滚轮拨动消息WM_LBUTTONDOWN 左键按下消息WM_LBUTTONUP 左键弹起消息WM_LBUTTONDBLCLK 左键双击消息WM_MBUTTONDOWN 中键按下消息WM_MBUTTONUP 中键弹起消息WM_MBUTTONDBLCLK 中键双击消息WM_RBUTTONDOWN 右键按下消息WM_RBUTTONUP 右键弹起消息WM_RBUTTONDBLCLK 右键双击消息
例如,判断获取的消息是否是鼠标左键按下,可以用:
if (m.uMsg == WM_LBUTTONDOWN)
...
练习:(a ^ b) ^ b = a
#include <graphics.h>#include <conio.h>void main(){ // 初始化图形窗口 initgraph(640, 480); int p[3][2]; setwritemode(R2_XORPEN); MOUSEMSG m; // 定义鼠标消息 while(true) { for(int i=0;i<3;) { m = GetMouseMsg(); // 获取一条鼠标消息 if (m.uMsg == WM_LBUTTONDOWN) { p[i][0]=m.x; p[i][1]=m.y; putpixel(m.x,m.y,RED); i++; } } solidpolygon((POINT*)p, 3); /* switch(m.uMsg) { case WM_MOUSEMOVE: // 鼠标移动的时候画红色的小点 putpixel(m.x, m.y, RED); break; case WM_LBUTTONDOWN: // 如果点左键的同时按下了 Ctrl 键 if (m.mkCtrl) // 画一个大方块 rectangle(m.x-10, m.y-10, m.x+10, m.y+10); else // 画一个小方块 rectangle(m.x-5, m.y-5, m.x+5, m.y+5); break; case WM_RBUTTONUP: return; // 按鼠标右键退出程序 }*/ } // 关闭图形窗口 closegraph();}
二、随机数
srand((unsigned) time(NULL))n=rand()%p;
三、知识
(1)
outtextxy(10, 20, "Hello World");error C2665: 'outtextxy' : none of the 2 overloads could convert all the argument types
原因:
字符串常见的编码有两种:MBCS 和 Unicode。
VC6 默认使用的 MBCS 编码,而 VC2008 及高版本 VC 默认使用的 Unicode 编码。以下详细解释这个问题:
用 char 表示字符时,英文占用一个字节,中文站用两个字节。这样有一个严重的问题:两个连续字节,究竟是两个英文字符,还是一个中文字符?为了解决这个问题,Unicode 编码诞生了。Unicode 编码不管中文英文都用两个字节表示。对于 MBCS 编码,字符变量用 char 定义。对于 Unicode 编码中,字符变量用 wchar_t 定义。
为了提高代码的自适应性,微软在 tchar.h 里面定义了 TCHAR,而 TCHAR 会根据项目定义的编码,自动展开为 char 或 wchar_t。
在 Windows API 和 EasyX 里面的大多数字符串指针都用的 LPCTSTR 或 LPTSTR 类型,LPCTSTR / LPTSTR 就是“Long Point (Const) Tchar STRing”的缩写。所以可以认为,LPCTSTR 就是 const TCHAR *,LPTSTR 就是 TCHAR * 。
解决:1.
(2)
error:"The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch."
已经过时请使用 _getch.
阅读全文
0 0
- EasyX鼠标函数和MBCS、Unicode编码
- 【转】VC6中的MBCS和UNICODE编码
- VC6中的MBCS和UNICODE编码
- VC6中的MBCS和UNICODE编码
- ANSI,MBCS和Unicode三种编码方式使用swprintf函数的陷阱
- MBCS和UNICODE
- unicode和MBCS
- Unicode和MBCS
- Unicode 和 MBCS
- VS2013的MBCS和Unicode字符编码问题
- unicode 和 mbcs、ansi 转换
- unicode 和 mbcs、ansi 转换
- UNICODE???MBCS???
- C++ 中的字符集 Unicode 和 MBCS
- Unicode 和多字节字符集 (MBCS) 支持
- Unicode和多字节字符集 (MBCS) 杂谈
- UNICODE和ANSI以及MBCS的问题
- Unicode和多字节字符集 (MBCS)
- Android音频系统之音频框架
- AtCoder:Connected?(思维)
- 关于Python的一些学习资料总结
- gradle包含库出现问题
- bzoj3110 K大数查询(整体二分+线段树)
- EasyX鼠标函数和MBCS、Unicode编码
- Django使用mysql操作实战系列之七
- arrayQueue 和linkedQueue
- tomcat集群--整合Apache服务器,采用mod_proxy连接模式
- apk签名之用 jarsigner签名
- mySQL 截取小数
- Sql性能检测工具:Sql server profiler和优化工具:Database Engine Tuning Advisor
- Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
- 关于Android自动化测试Monkey和MonkeyRunner不能正常运行的说明