小弟在用VC编写一个应用程序的界面时,不知道如何获得工具栏上的各个按钮的具体的坐标?
如何通过程序获得坐标的位置?或者如何获得鼠标的位置?
我需要获得按钮的位置后,才可以在单击工具兰按钮后在按钮的下面显示一个下拉菜单!

解决方案 »

  1.   

    一个ToolBar里面的按钮(或其它控件)可以认为有两个标识值,第一个是所谓的“command ID”,就是你在资源编辑器里给工具条添加按钮的时候设置的那个按钮ID。第二个叫做“Item Index”,是CToolBar类内部使用的,相当于一个窗口的子窗口ID,因为工具条里面的控件不就是工具条的子窗口嘛。在ToolBar类的许多成员函数里面要用到的是这第二个值。要获得按钮的坐标,可以用CToolBar类的GetItemRect()函数。请在MSDN里面查一下这个函数的详细说明。这个函数需要按钮的“Item Index”做参数,而你只知道按钮的“command ID”,在这两者之间建立联系的是CToolBar::GetItemID()。如下:index=0;
    RECT rect;
    while(GetItemID(index)!=ID_BUTTON_SLD /*按钮ID*/ ) index++;
    GetItemRect(index, &rect);这几行代码是在一个从CToolBar类派生的类里面写的,你要不愿意自己另写这么个子类,那就对你程序里AppWizard自动生成的那个ToolBar对象做上面的操作好了。这个对象是CMainFrame类的m_wndToolBar。
      

  2.   

    int index=0;
    RECT rect;
    while(GetItemID(index)!=ID_BUTTON_SLD /*按钮ID*/ ) index++;
    GetItemRect(index, &rect);