按照以下步骤向现有项目添加代码,这些代码将允许您创建音频注释和按钮注释,通过菜单设置用户模式,并通过左键单击注释来激活注释。
从中创建的程序开始实现一个非自动化的注释程序.
向项目中添加菜单资源。
在顶部添加以下一行Color.rc在#include“Windows.h”之后。
# include“Color.h”
将以下代码添加到Color.rc
MENU_MAIN菜单
开始
弹出“用户模式”
开始
子菜单“设计”, idm_design,选中
子菜单“运行”, IDM_RUN
结束
结束
打开Color.h,并在顶部添加以下行。
#定义IDM_DESIGN 200
#定义IDM_RUN 300
#定义menu main 400
在InitApplication中,更改行:
wcWindowClass。lpszMenuName = NULL;
来
wcWindowClass。lpszMenuName = TEXT(“MENU_MAIN”);
在InitInstance中,将CreateWindow中的菜单参数从NULL更改为:
LoadMenu(实例句柄,MAKEINTRESOURCE (MENU_MAIN))
在Window_OnCommand过程中,在switch语句中添加以下代码:
情况下IDM_RUN:/*设置用户模式为运行模式*/
L_AnnSetUserMode (hContainer ANNUSER_RUN);
CheckMenuItem(GetMenu(hWnd), IDM_DESIGN, MF_UNCHECKED);
checkmenu (GetMenu(hWnd), IDM_RUN, MF_CHECKED);
nAnnUserMode = ANNUSER_RUN;
打破;
情况下IDM_DESIGN:/*设置用户模式为设计模式*/
L_AnnSetUserMode (hContainer ANNUSER_DESIGN);
CheckMenuItem(GetMenu(hWnd), IDM_RUN, MF_UNCHECKED);
GetMenu(hWnd), IDM_DESIGN, MF_CHECKED);
nAnnUserMode = ANNUSER_DESIGN;
打破;
声明以下全局变量:
HANNOBJECT MyAudio;/*音频注释对象*/
HANNOBJECT色;/*按钮注释对象*/
L_INT nAnnUserMode = ANNUSER_DESIGN;
并具有以下功能:
无效TestCreateAudioAnn (HWND HWND);
无效TestCreateButtonAnn (HWND HWND);
无效TestAnnHit (intxFromWindow,intyFromWindow, pHANNOBJECT);
添加如下代码:
无效TestCreateAudioAnn (HWND HWND)
{
/*这段代码创建音频注释并将.wav文件与注释关联起来。* /
HDC HDC;
ANNRECT ContainerRect;
ANNRECT MyAudioRect;
矩形rAnnBounds;
hdc = GetDC(hWnd);
/*创建音频注释对象*/
L_AnnCreate (ANNOBJECT_AUDIO &MyAudio);
/*在TestCreateAnn中创建的容器中插入音频注释。* /
L_AnnInsert(hContainer, MyAudio, FALSE);
/*使注释可见。* /
L_AnnSetVisible(MyAudio, TRUE, 0, NULL);
/*获取容器矩形的尺寸。* /
L_AnnGetRect(hContainer, &ContainerRect, NULL);
/*设置音频注释的位置。* /
MyAudioRect。left = ContainerRect。右* 5/8;
MyAudioRect。top = ContainerRect。底部* 5/8;
MyAudioRect。right = ContainerRect。右* 3/4;
MyAudioRect。底部= ContainerRect。底部* 3/4;
L_AnnSetRect (MyAudio &MyAudioRect);
/*设置.wav文件的名称与该注释相关联。当您在运行模式下单击注释时,这个.wav文件将播放。更改路径和文件名以适合您的系统*/
L_AnnSetText (MyAudio文本(“tada.wav”), 0);
/*显示注释。* /
L_AnnGetBoundingRect(MyAudio, &rAnnBounds, NULL);
L_AnnDraw(hdc, &rAnnBounds, MyAudio);
/*删除排队的paint消息。* /
ValidateRect (hWnd, &rAnnBounds);
返回;
}
添加如下代码:
无效TestCreateButtonAnn (HWND HWND)
{
/*这个函数创建一个按钮注释。* /
HDC hWindowDC;/*当前窗口的设备上下文*/
ANNRECT ContainerRect;/*根容器的矩形
ANNRECT MyButtonRect;/*按钮对象矩形*/
矩形rAnnBounds;/*用于绘制对象的边框*/
/*获取当前窗口的设备上下文
hWindowDC = GetDC (hWnd);
/*获取容器的矩形*/
L_AnnGetRect(hContainer, &ContainerRect, NULL);
/*创建按钮注释*/
L_AnnCreateItem(hContainer, ANNOBJECT_BUTTON, TRUE, &MyButton);
/*按钮大小和位置*/
MyButtonRect。left = ContainerRect。右/ 8;
MyButtonRect。top = ContainerRect。底部/ 2;
MyButtonRect。right = ContainerRect。右/ 2;
MyButtonRect。底部= ContainerRect。底部* 5/8;
L_AnnSetRect(色、&MyButtonRect);
/*设置按钮的文本*/
L_AnnSetText(色、文本(“这是3号按钮”), 0);
/*启用按钮*/
L_AnnSetActiveState(色、ANNACTIVE_ENABLED);
/*设置标签为3。您可以基于标记号*/进行操作
L_AnnSetTag(MyButton, 3,0);
/*显示按钮*/
L_AnnGetBoundingRect(MyButton, &rAnnBounds, NULL);
L_AnnDraw(hWindowDC, &rAnnBounds, MyButton);
/*删除排队的油漆消息*/
ValidateRect (hWnd, &rAnnBounds);
返回;
}
添加如下代码:
无效TestAnnHit (intxFromWindow,intyFromWindow, pHANNOBJECT
{
/*这个函数决定你点击了哪个注释对象。* /
HANNOBJECT ThisObject;/*注释对象的局部变量*/
点PointToTest;/*窗口客户端区域中要测试的点*/
L_UINT TestResult;/*测试结果*/
/*使用传入坐标指定要测试的点*/
PointToTest。x = xFromWindow;
PointToTest。y = yFromWindow;
/*获取指定点的对象*/
(hContainer, &PointToTest, &TestResult, &ThisObject, NULL,运算符(ANNHITTESTINFO));
更新调用者的对象变量*/
如果(TestResult == ANNHIT_NONE)
*phAnnObject = 0;
其他的
*phAnnObject = ThisObject;
返回;
}
将以下消息处理程序添加到MainWndProc:
HANDLE_MSG (hWnd, WM_LTANNEVENT, Window_AnnEvent);
HANDLE_MSG (hWnd, WM_LBUTTONDOWN, Window_OnLButtonDown);
添加以下代码Window_OnLButtonDown:
无效win_onlbuttondown (HWND HWND, BOOL fDoubleClick,intxPos,intyPos, UINT keyFlags)
{
UNREFERENCED_PARAMETER (keyFlags);
UNREFERENCED_PARAMETER (fDoubleClick);
如果(nAnnUserMode == ANNUSER_RUN)
{
HANNOBJECT hCurrentObject = 0;
L_UINT uCurrentObjectType = ANNOBJECT_LAST;
TestAnnHit(xPos, yPos, &hCurrentObject);
L_AnnGetType (hCurrentObject, &uCurrentObjectType);
开关(uCurrentObjectType)
{
情况下ANNOBJECT_AUDIO:
SendMessage(hWnd, WM_LTANNEVENT, LTANNEVENT_ACTIVATE, ANNTOOL_AUDIO);
打破;
情况下ANNOBJECT_BUTTON:
SendMessage(hWnd, WM_LTANNEVENT, LTANNEVENT_ACTIVATE, ANNTOOL_BUTTON);
打破;
}
}
}
添加以下代码Window_AnnEvent:
(HWND HWND, WPARAM WPARAM, LPARAM LPARAM)
{
UNREFERENCED_PARAMETER (hWnd);
开关(按钮)
{
情况下LTANNEVENT_ACTIVATE:
如果((intlParam == ANNTOOL_AUDIO)
L_AnnSetActiveState (MyAudio ANNACTIVE_ENABLED);
如果((intlParam == ANNTOOL_BUTTON)
{
_wsystem(文本(“钙”));
}
打破;
}
返回0;
}
注释掉TestCreateNoteAnn(hWnd)行Window_OnCreate并添加以下几行:
TestCreateAudioAnn (hWnd);
TestCreateButtonAnn (hWnd);
构建Color.exe。
Color.exe运行。点击音频和按钮注释。因为用户模式是设计模式,所以什么都不会发生。在User Mode菜单下,选择Run Mode,然后单击每个注释。保存此项目以测试注释代码示例。
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。