在运行模式中使用非自动注释

按照以下步骤向现有项目添加代码,这些代码将允许您创建音频注释和按钮注释,通过菜单设置用户模式,并通过左键单击注释来激活注释。

  1. 从中创建的程序开始实现一个非自动化的注释程序

  2. 向项目中添加菜单资源。

    1. 从“视图”菜单中,选择“解决方案资源管理器”。
    2. 右击颜色。Rc项,并选择视图代码
    3. 在顶部添加以下一行Color.rc在#include“Windows.h”之后。

      # include“Color.h”

    4. 将以下代码添加到Color.rc

      MENU_MAIN菜单开始弹出“用户模式”开始子菜单“设计”, idm_design,选中子菜单“运行”, IDM_RUN结束结束

  3. 打开Color.h,并在顶部添加以下行。

    #定义IDM_DESIGN 200#定义IDM_RUN 300#定义menu main 400

  4. 在InitApplication中,更改行:

    wcWindowClass。lpszMenuName = NULL;

    wcWindowClass。lpszMenuName = TEXT(“MENU_MAIN”);

  5. 在InitInstance中,将CreateWindow中的菜单参数从NULL更改为:

    LoadMenu(实例句柄,MAKEINTRESOURCE (MENU_MAIN))

  6. 在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;打破

  7. 声明以下全局变量:

    HANNOBJECT MyAudio;/*音频注释对象*/HANNOBJECT色;/*按钮注释对象*/L_INT nAnnUserMode = ANNUSER_DESIGN;

    并具有以下功能:

    无效TestCreateAudioAnn (HWND HWND);无效TestCreateButtonAnn (HWND HWND);无效TestAnnHit (intxFromWindow,intyFromWindow, pHANNOBJECT);

  8. 添加如下代码:

    无效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);返回

  9. 添加如下代码:

    无效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);返回

  10. 添加如下代码:

    无效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;返回

  11. 将以下消息处理程序添加到MainWndProc

    HANDLE_MSG (hWnd, WM_LTANNEVENT, Window_AnnEvent);HANDLE_MSG (hWnd, WM_LBUTTONDOWN, Window_OnLButtonDown);

  12. 添加以下代码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);打破

  13. 添加以下代码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;

  14. 注释掉TestCreateNoteAnn(hWnd)行Window_OnCreate并添加以下几行:

    TestCreateAudioAnn (hWnd);
    TestCreateButtonAnn (hWnd);

  15. 构建Color.exe。

  16. Color.exe运行。点击音频和按钮注释。因为用户模式是设计模式,所以什么都不会发生。在User Mode菜单下,选择Run Mode,然后单击每个注释。保存此项目以测试注释代码示例。

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。