2.7.7 鼠标光标操作
鼠标光标操作
鼠标光标模式切换是指可以更新鼠标光标的文件以及切换光标显示效果。主要包括替换光标图标和设置光标模式两种功能。
1.替换光标图标是改变鼠标光标样式的方法,它是调用SetCursorFromFile() 方法实现的。
2.切换光标显示是改变光标显示模式的方法。它是调用SetCursorMode() 方法实现的。
代码调用示例
Javascript调用
//html
<input id="Button0" type="button" value="替换光标图标" onclick="changeCursor()" />
<select id="select">
<option value="0">普通漫游模式</option><option value="4">自动旋转漫游模式</option><option value="5">自定义滑行模式</option>
<option value="6">测量模式</option><option value="7">拾取模式</option><option value="8">绘制模式</option>
</select>
<input id="Button1" type="button" value="设置光标模式" onclick="setCursorMode()" />
//js
var mySelect = document.getElementById("select");
var roam = map.CreateRoam();
//替换光标图标
function changeCursor(){
///根据cur文件设置对应鼠标光标
///参数1:鼠标光标类型,如下示例,从0开始,到
///CURSOR_ARROW = 0, /**< 箭头 */
///CURSOR_DRAG_NORMAL = 1, /**< 拖拽普通 */
///CURSOR_DRAG_GRASP = 2, /**< 拖拽中 */
///CURSOR_ZOOM = 3, /**< 放大缩小 */
///CURSOR_FORWARD = 4, /**< 前进\抬升 */
///CURSOR_BACKWARD = 5, /**< 后退\下降 */
///CURSOR_LEFT = 6, /**< 左转 */
///CURSOR_RIGHT = 7, /**< 右转 */
///CURSOR_LEFT_FORWARD = 8, /**< 左前转 */
///CURSOR_LEFT_BACKWARD = 9, /**< 左后转 */
///CURSOR_RIGHT_FORWARD = 10, /**< 右前转 */
///CURSOR_RIGHT_BACKWARD = 11, /**< 右后转 */
///CURSOR_MEASURE = 12, /**< 测量 */
///CURSOR_PICK = 13, /**< 拾取 */
///CURSOR_DRAW = 14, /**< 绘制 */
///CURSOR_STOP = 15, /**< 停止 */
///CURSOR_FLY = 16 /**< 飞行 */
///参数2:cur文件路径,传空时,恢复使用默认光标文件
roam.SetCursorFromFile(0, gIconFolderPath + "/CursorRes/Indicate.cur");//设置箭头光标,这里将光标替换为手型,也可随意替换任意的.cur类型文件
}
//设置光标模式
function setCursorMode(){
///设置鼠标光标模式
///ROAMMODE_NORMAL = 0, /**< 普通漫游模式 */
///ROAMMODE_ONGROUND = 1, /**< 贴地漫游模式 */
///ROAMMODE_UNDERGROUND = 2, /**< 地下漫游模式 */
///ROAMMODE_INDOOR = 3, /**< 室内漫游模式 */
///ROAMMODE_AUTOROTATE = 4, /**< 自动旋转漫游模式 */
///ROAMMODE_CUSTOM = 5, /**< 自定义漫游模式 */
///ROAMMODE_MEASURE = 6, /**< 测量模式 */
///ROAMMODE_PICK = 7, /**< 拾取模式 */
///ROAMMODE_DRAW = 8 /**< 绘制模式 */
//此例中未展示的模式,属于未来可待定制的,暂无法使用
roam.SetCursorMode(mySelect.options[mySelect.selectedIndex].value);
}
C++调用
NavigationCOMLib::IRoamPtr roam;//漫游模式对象
CComboBox m_combo;//下拉框对象
std::string value;//下拉框内容
void Cf6c6CursorModeDlg::OnCbnSelchangeCombo1()
{
CString m_paramname;
m_combo.GetLBText(m_combo.GetCurSel(),m_paramname);
value = CT2A(m_paramname.GetBuffer());
}
void Cf6c6CursorModeDlg::OnCbnSetfocusCombo1()
{
m_combo.ResetContent();//清空下拉框
m_combo.AddString(L"普通漫游模式");
m_combo.AddString(L"自动旋转漫游模式");
m_combo.AddString(L"自定义滑行模式");
m_combo.AddString(L"测量模式");
m_combo.AddString(L"拾取模式");
m_combo.AddString(L"绘制模式");
m_combo.SetCurSel(0);
}
//设置光标模式
void Cf6c6CursorModeDlg::OnBnClickedsetcursormode()
{
//设置鼠标光标模式
//0 - ROAMMODE_NORMAL, 普通漫游模式
//1 - ROAMMODE_ONGROUND, 贴地漫游模式
//2 - ROAMMODE_UNDERGROUND, 地下漫游模式
//3 - ROAMMODE_INDOOR, 室内漫游模式
//4 - ROAMMODE_AUTOROTATE, 自动旋转漫游模式
//5 - ROAMMODE_CUSTOM, 自定义漫游模式
//6 - ROAMMODE_MEASURE, 测量模式
//7 - ROAMMODE_PICK, 拾取模式
//8 - ROAMMODE_DRAW, 绘制模式
//此例中未展示的模式,属于未来可待定制的,暂无法使用
if(value == "普通漫游模式")
{
roam->SetCursorMode(0);
}
else if(value == "自动旋转漫游模式")
{
roam->SetCursorMode(4);
}
else if(value == "自定义滑行模式")
{
roam->SetCursorMode(5);
}
else if(value == "测量模式")
{
roam->SetCursorMode(6);
}
else if(value == "拾取模式")
{
roam->SetCursorMode(7);
}
else if(value == "绘制模式")
{
roam->SetCursorMode(8);
}
}
//替换光标图标
void Cf6c6CursorModeDlg::OnBnClickedchangecursor()
{
//根据cur文件设置对应鼠标光标
//参数1:鼠标光标类型,如下示例,从0开始,到
//0 - CURSOR_ARROW, 箭头
//1 - CURSOR_DRAG_NORMAL, 拖拽普通
//2 - CURSOR_DRAG_GRASP, 拖拽中
//3 - CURSOR_ZOOM, 放大缩小
//4 - CURSOR_FORWARD, 前进\抬升
//5 - CURSOR_BACKWARD, 后退\下降
//6 - CURSOR_LEFT, 左转
//7 - CURSOR_RIGHT, 右转
//8 - CURSOR_LEFT_FORWARD, 左前转
//9 - CURSOR_LEFT_BACKWARD, 左后转
//10 - CURSOR_RIGHT_FORWARD, 右前转
//11 - CURSOR_RIGHT_BACKWARD, 右后转
//12 - CURSOR_MEASURE, 测量
//13 - CURSOR_PICK, 拾取
//14 - CURSOR_DRAW, 绘制
//15 - CURSOR_STOP, 停止
//16 - CURSOR_FLY, 飞行
//参数2:cur文件路径,传空时,恢复使用默认光标文件
char temp_status[MAX_PATH];
GetPrivateProfileStringA("Path", "IconFolderPath", "", temp_status, MAX_PATH, mIniPath.c_str());
std::string IconPath(temp_status);
IconPath += "/CursorRes/Indicate.cur";
roam->SetCursorFromFile(0, IconPath.c_str());//设置箭头光标,这里将光标替换为手型,也可随意替换任意的.cur类型文件
}
C#调用
string gIconFolderPath="E:\data\LocalData\Other\images";
short Type;
private void setCursorMode_Click(object sender, EventArgs e)
{
Console.WriteLine("Text:" + comboBox1.SelectedItem.ToString());
switch (comboBox1.SelectedItem.ToString())
{
case "普通漫游模式":
Type = 0;
break;
case "自动旋转漫游模式":
Type = 4;
break;
case "自定义滑行模式":
Type = 5;
break;
case "测量模式":
Type = 6;
break;
case "拾取模式":
Type = 7;
break;
case "绘制模式":
Type = 8;
break;
}
///设置鼠标光标模式
///ROAMMODE_NORMAL = 0, /**< 普通漫游模式 */
///ROAMMODE_ONGROUND = 1, /**< 贴地漫游模式 */
///ROAMMODE_UNDERGROUND = 2, /**< 地下漫游模式 */
///ROAMMODE_INDOOR = 3, /**< 室内漫游模式 */
///ROAMMODE_AUTOROTATE = 4, /**< 自动旋转漫游模式 */
///ROAMMODE_CUSTOM = 5, /**< 自定义漫游模式 */
///ROAMMODE_MEASURE = 6, /**< 测量模式 */
///ROAMMODE_PICK = 7, /**< 拾取模式 */
///ROAMMODE_DRAW = 8 /**< 绘制模式 */
//此例中未展示的模式,属于未来可待定制的,暂无法使用
roam.SetCursorMode(Type);
}
private void changeCursor_Click(object sender, EventArgs e)
{
///根据cur文件设置对应鼠标光标
///参数1:鼠标光标类型,如下示例,从0开始,到
///CURSOR_ARROW = 0, /**< 箭头 */
///CURSOR_DRAG_NORMAL = 1, /**< 拖拽普通 */
///CURSOR_DRAG_GRASP = 2, /**< 拖拽中 */
///CURSOR_ZOOM = 3, /**< 放大缩小 */
///CURSOR_FORWARD = 4, /**< 前进\抬升 */
///CURSOR_BACKWARD = 5, /**< 后退\下降 */
///CURSOR_LEFT = 6, /**< 左转 */
///CURSOR_RIGHT = 7, /**< 右转 */
///CURSOR_LEFT_FORWARD = 8, /**< 左前转 */
///CURSOR_LEFT_BACKWARD = 9, /**< 左后转 */
///CURSOR_RIGHT_FORWARD = 10, /**< 右前转 */
///CURSOR_RIGHT_BACKWARD = 11, /**< 右后转 */
///CURSOR_MEASURE = 12, /**< 测量 */
///CURSOR_PICK = 13, /**< 拾取 */
///CURSOR_DRAW = 14, /**< 绘制 */
///CURSOR_STOP = 15, /**< 停止 */
///CURSOR_FLY = 16 /**< 飞行 */
///参数2:cur文件路径
roam.SetCursorFromFile(0, gIconFolderPath+"\\CursorRes\\Indicate.cur");//设置箭头光标,这里将光标替换为手型,也可随意替换任意的.cur类型文件
}