菜单的ID是 IDC_A  对应函数十OnA()
我想在MainFrame::ontimer里定时触发这个消息,请问怎么写sendmessage函数啊
或者其他办法,谢谢

解决方案 »

  1.   

    error C2660: 'SendMessageA' : function does not take 2 parameters
      

  2.   

    ::SendMessage(hWnd,WM_COMMAND, IDC_A,0);
    我这样写,它提示说hWnd未定义
      

  3.   

    直接SendMessage(WM_COMMAND, IDC_A, 0)就可以了
      

  4.   

    ::SendMessage(hWnd, WM_COMMAND, IDC_A);hWnd是处理消息的窗口句柄
      

  5.   

    AfxGetMainWnd()->SendMessage(WM_COMMAND, IDC_A, 0);
    如果在视里可以
    AfxGetActiveView()->SendMessage(WM_COMMAND, IDC_A, 0);
    Doc也有对应的东东可以取到句柄的
      

  6.   

    看看偶在BCB的解答http://expert.csdn.net/Expert/topic/2752/2752836.xml?temp=1.585025E-02向 Application发送 WM_COMMAND,并使用 MAKELONG 宏将菜单的 ID 号作为 WPARAM 参数传递就可以了。至于 Application 的 Menu ID,可以使用 GetMenu 和 GetSubMenu 等 API 函数来获得。
    下面这几个函数,希望能对你有用。
    //---------------------------------------------------------------------------
    void __fastcall ScanMenuID(AnsiString AppTitle,TStringList *List,int Tab)
    /*
    功能:
        获得指定应用程序的菜单ID号
    参数:
        AppTitle - 应用程序的标题栏文本
        List     - 保存ID信息的串列表
        Tab      - 是否根据分级菜单在List中增加TAB键
    返回值:
        无
    */
    {
        HWND hMicapsWnd = FindWindow(NULL,AppTitle.c_str());
        ScanMenuID(GetMenu(hMicapsWnd),List,0);
    }
    //---------------------------------------------------------------------------
    void __fastcall ScanMenuID(HMENU AppMenu,TStringList *List,int Tab)
    /*
    功能:
        获得指定应用程序的菜单ID号
    参数:
        AppNenu  - 应用程序的菜单Handle
        List     - 保存ID信息的串列表
        Tab      - 是否根据分级菜单在List中增加TAB键
    返回值:
        无
    */
    {
        if( AppMenu == NULL )
            return;
        int Count = 0;
        long ID;
        Count = GetMenuItemCount(AppMenu);
        char    lpString[128]; // pointer to the buffer for the string
        for( int i=0;i<Count;i++ )
            {
            if( GetMenuString(
                AppMenu,
                i,
                lpString,
                128,
                MF_BYPOSITION
                ) != 0 )
                {
                ID = GetMenuItemID(AppMenu,i);
                List->Add(AnsiString::StringOfChar('\t',Tab)+AnsiString(lpString)+ (ID != 4294967295 ? AnsiString("\tID = ")+IntToStr(ID) : AnsiString("")));
                if( GetSubMenu(AppMenu,i) != NULL )
                    ScanMenuID(GetSubMenu(AppMenu,i),List,Tab+1);
                }
            }
    }
    //---------------------------------------------------------------------------
    bool MenuFromId(HWND hWnd, int id)
    /*
    功能:
        执行指定应用程序指定ID号的菜单项
    参数:
        hWnd     - 应用程序的Handle
        id       - 要执行的菜单ID号
    返回值:
        执行成功则为true,否则为false
    */
    {
        if( hWnd != NULL ) {
            return(PostMessage(hWndMicaps,WM_COMMAND,MAKELONG(id,0),NULL));
        }
        return(false);
    }
    //---------------------------------------------------------------------------