青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

C++和CSharp增加AutoCAD的菜單menu


一 c++ COM接口
void
addMenuThroughCom()
{

    AutoCAD::IAcadApplication 
*pAcad;
    AutoCAD::IAcadMenuBar 
*pMenuBar;
    AutoCAD::IAcadMenuGroups 
*pMenuGroups;
    AutoCAD::IAcadMenuGroup 
*pMenuGroup;
    AutoCAD::IAcadPopupMenus 
*pPopUpMenus;
    AutoCAD::IAcadPopupMenu 
*pPopUpMenu;
    AutoCAD::IAcadPopupMenuItem 
*pPopUpMenuItem;

    HRESULT hr 
= NOERROR;
    LPUNKNOWN pUnk 
= NULL;
    LPDISPATCH pAcadDisp 
= acedGetIDispatch(TRUE); 
    
if(pAcadDisp==NULL)
        
return;

    hr 
= pAcadDisp->QueryInterface(AutoCAD::IID_IAcadApplication,(void**)&pAcad);
    pAcadDisp
->Release();
    
if (FAILED(hr))
        
return;

    pAcad
->put_Visible(true);
    pAcad
->get_MenuBar(&pMenuBar);
    pAcad
->get_MenuGroups(&pMenuGroups);
    pAcad
->Release();
    
long numberOfMenus;
    pMenuBar
->get_Count(&numberOfMenus);
    pMenuBar
->Release();

    VARIANT index;
    VariantInit(
&index);
    V_VT(
&index) = VT_I4;
    V_I4(
&index) = 0;

    pMenuGroups
->Item(index, &pMenuGroup);
    pMenuGroups
->Release();
    
    pMenuGroup
->get_Menus(&pPopUpMenus);
    pMenuGroup
->Release();

    WCHAR wstrMenuName[
256];
    #ifdef UNICODE
        _tcscpy(wstrMenuName, L
"AsdkComAccess");
    
#else  // !UNICODE
        MultiByteToWideChar(CP_ACP, 
0"AsdkComAccess"-1, wstrMenuName, 256); 
    
#endif // !UNICODE

    
// Enables the menu to be loaded/unloaded with the same command.
    if (!bIsMenuLoaded) {
        pPopUpMenus
->Add(wstrMenuName, &pPopUpMenu);

        
if (pPopUpMenu != NULL) {

            WCHAR wstrMenuItemName[
256];
            WCHAR wstrMenuItemMacro[
256];
            #ifdef UNICODE
                _tcscpy(wstrMenuItemName, L
"&Add A ComCircle");
                _tcscpy(wstrMenuItemMacro, L
"AsdkComCircle ");
            
#else  // !UNICODE
                MultiByteToWideChar(CP_ACP, 
0"&Add A ComCircle"-1, wstrMenuItemName, 256); 
                MultiByteToWideChar(CP_ACP, 
0"AsdkComCircle "-1, wstrMenuItemMacro, 256); 
            
#endif // !UNICODE

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = 0;
            pPopUpMenu
->AddMenuItem(index, wstrMenuItemName, wstrMenuItemMacro, &pPopUpMenuItem);

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = 1;
            pPopUpMenu
->AddSeparator(index, &pPopUpMenuItem);

            #ifdef UNICODE
                _tcscpy(wstrMenuItemName, L
"Auto&LISP Example");
                _tcscpy(wstrMenuItemMacro, L
"(prin1 \"Hello\"");
            
#else  // !UNICODE
                MultiByteToWideChar(CP_ACP, 
0"Auto&LISP Example"-1, wstrMenuItemName, 256); 
                MultiByteToWideChar(CP_ACP, 
0"(prin1 \"Hello\""-1, wstrMenuItemMacro, 256); 
            
#endif // !UNICODE

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = 2;
            pPopUpMenu
->AddMenuItem(index, wstrMenuItemName, wstrMenuItemMacro, &pPopUpMenuItem);

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = numberOfMenus - 2;
            pPopUpMenu
->InsertInMenuBar(index);
    
            pPopUpMenuItem
->Release();
            bIsMenuLoaded 
= true;
        }
 else {
            acutPrintf(_T(
"\nMenu not created."));
        }

    }
 else {
        VariantInit(
&index);
        V_VT(
&index) = VT_BSTR;
        V_BSTR(
&index) = wstrMenuName;
        pPopUpMenus
->RemoveMenuFromMenuBar(index);
        VariantClear(
&index);
        bIsMenuLoaded 
= false;
    }


    pPopUpMenus
->Release();
}

二 C++基于MFC的
void
addMenuThroughMfcCom()
{
    TRY
    
{
        CAcadApplication IAcad(acedGetAcadWinApp()
->GetIDispatch(TRUE));

        CAcadMenuBar IMenuBar(IAcad.get_MenuBar());

        
long numberOfMenus;
        numberOfMenus 
= IMenuBar.get_Count();

        CAcadMenuGroups IMenuGroups(IAcad.get_MenuGroups());

        VARIANT index;
        VariantInit(
&index);
        V_VT(
&index) = VT_I4;
        V_I4(
&index) = 0;

        CAcadMenuGroup IMenuGroup(IMenuGroups.Item(index));

        CAcadPopupMenus IPopUpMenus(IMenuGroup.get_Menus());

        CString cstrMenuName 
= _T("AsdkComAccess");

        VariantInit(
&index);
        V_VT(
&index) = VT_BSTR;
        V_BSTR(
&index) = cstrMenuName.AllocSysString();

        IDispatch
* pDisp=NULL;

        
//see if the menu is already there
        TRY{pDisp = IPopUpMenus.Item(index); pDisp->AddRef();} CATCH(COleDispatchException,e){}END_CATCH;

        
if (pDisp==NULL) {
            
//create it
            CAcadPopupMenu IPopUpMenu(IPopUpMenus.Add(cstrMenuName));

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = 0;
            IPopUpMenu.AddMenuItem(index, _T(
"&Add A ComCircle"), _T("_AsdkMfcComCircle "));

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = 1;
            IPopUpMenu.AddSeparator(index);

            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = 2;
            IPopUpMenu.AddMenuItem(index, _T(
"Auto&LISP Example"), _T("(prin1 \"Hello\""));

            pDisp 
= IPopUpMenu.m_lpDispatch;
            pDisp
->AddRef();
        }


        CAcadPopupMenu IPopUpMenu(pDisp);
        
if (!IPopUpMenu.get_OnMenuBar())
        
{
            VariantInit(
&index);
            V_VT(
&index) = VT_I4;
            V_I4(
&index) = numberOfMenus - 2;;
            IPopUpMenu.InsertInMenuBar(index);
        }

        
else
        
{
            VariantInit(
&index);
            V_VT(
&index) = VT_BSTR;
            V_BSTR(
&index) = cstrMenuName.AllocSysString();
            IPopUpMenus.RemoveMenuFromMenuBar(index);
            VariantClear(
&index);
        }

        pDisp
->Release();
    }

    CATCH(COleDispatchException,e)
    
{
        e
->ReportError();
        e
->Delete();
    }

    END_CATCH;
}

三 C#基于COM接口
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;

using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;

namespace CSharpCOM
{
    
public class Class1
    
{
        
public Class1() { }

        [CommandMethod(
"AM")]
        
public static void AddMenuCom()
        
{
            AcadApplication app 
= (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");
            AcadMenuBar menuBar 
= app.MenuBar;
            AcadMenuGroup menuGroup 
= app.MenuGroups.Item(0);
            AcadPopupMenus menus 
= menuGroup.Menus;
            AcadPopupMenu mymenu 
= menus.Add("MyMenu");

            mymenu.AddMenuItem(
0"Hello""hello");
            mymenu.AddSeparator(
1);
            mymenu.AddMenuItem(
2"Hello2""hello");
            AcadPopupMenu ext 
= mymenu.AddSubMenu(3"Ext");
            ext.AddMenuItem(
0"Hello""hello");
            ext.AddSeparator(
1);
            ext.AddMenuItem(
2"Hello2""hello");
            mymenu.InsertInMenuBar(menuBar.Count 
- 2);
        }


        [CommandMethod(
"hello")]
        
public static void Hello()
        
{
            AcadApplication app 
= (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");
            app.ActiveDocument.Utility.Prompt(
"Hello\n");
        }



    }

}


四 CSharp基于ACUI.DLL接口的
// Copyright 2005-2007 by Autodesk, Inc.
//
//Permission to use, copy, modify, and distribute this software in
//object code form for any purpose and without fee is hereby granted, 
//provided that the above copyright notice appears in all copies and 
//that both that copyright notice and the limited warranty and
//restricted rights notice below appear in all supporting 
//documentation.
//
//AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. 
//AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
//MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. 
using System;
using System.IO;

using System.Runtime.InteropServices;
using System.Text;

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Customization;



namespace CuiSamp
{

    
/// <summary>
    
/// Summary description for Class1.
    
/// </summary>

    public class CuiSamp
    
{
        
members

        
//Default Constructor
        public CuiSamp()
        
{
            
// retrieve the location of, and open the ACAD Main CUI File
            string mainCuiFile = (string)Application.GetSystemVariable("MENUNAME");
            mainCuiFile 
+= ".cui";
            cs 
= new CustomizationSection(mainCuiFile);

            
string entCuiFile = (string)Application.GetSystemVariable("ENTERPRISEMENU");
            
if (entCuiFile.Equals("."))
                entCsLoaded 
= false;
            
else
            
{
                entCs 
= new CustomizationSection(entCuiFile);
                entCsLoaded 
= true;
            }


            
// Code for loading all partial CUI's listed in the main CUI file

            partials 
= new CustomizationSection[cs.PartialCuiFiles.Count];
            
int i = 0;
            
foreach (string fileName in cs.PartialCuiFiles)
            
{
                
if (File.Exists(fileName))
                
{
                    partials[i] 
= new CustomizationSection(fileName);
                    i
++;
                }

            }

            numPartialFiles 
= i;
        }



        
// Command: savecui
        
// This Command saves all open CUI Files that have been modified
        [CommandMethod("savecui")]
        
public void saveCui()
        
{
            
// Save all Changes made to the CUI file in this session. 
            
// If changes were made to the Main CUI file - save it
            
// If changes were made to teh Partial CUI files need to save them too

            
if (cs.IsModified)
                cs.Save();

            
for (int i = 0; i < numPartialFiles; i++)
            
{
                
if (partials[i].IsModified)
                    partials[i].Save();
            }


            
if (entCsLoaded && entCs.IsModified)
                entCs.Save();

            
// Here we unload and reload the main CUI file so the changes to the CUI file could take effect immediately.
            
//string flName = cs.CUIFileBaseName;
            
//Application.SetSystemVariable("FILEDIA", 0);
            
//Application.DocumentManager.MdiActiveDocument.SendStringToExecute("cuiunload " + flName + " ", false, false, false);
            
//Application.DocumentManager.MdiActiveDocument.SendStringToExecute("cuiload " + flName + " filedia 1 ", false, false, false);
            
//Application.SetSystemVariable("FILEDIA", 1);
        }


        
// Command: addmenu
        
// This Command adds a new menu to all workspaces called Custom Menu, which contains 2 sub items
        
// The Menu is first added to the Main CUI File and then added to all it's workspaces. 
        [CommandMethod("addmenu")]
        
public void addMenu()
        
{
            
if (cs.MenuGroup.PopMenus.IsNameFree("CustomMenu"))
            
{

                System.Collections.Specialized.StringCollection pmAliases 
= new System.Collections.Specialized.StringCollection();
                pmAliases.Add(
"POP12");

                PopMenu pm 
= new PopMenu("CustomMenu", pmAliases, "CustomMenu", cs.MenuGroup);

                addItemsToPM(pm);
                addMenu2Workspaces(pm);
            }

            
else
                ed.WriteMessage(
"CustomMenu already Exists\n");
        }



        
// Add new Items to a PopMenu
        private void addItemsToPM(PopMenu pm)
        
{
            PopMenuItem pmi 
= new PopMenuItem(pm, -1);
            pmi.MacroID 
= "ID_AUGI"; pmi.Name = "Autodesk User Group International";

            pmi 
= new PopMenuItem(pm, -1);

            pmi 
= new PopMenuItem(pm, -1);
            pmi.MacroID 
= "ID_CustomSafe"; pmi.Name = "Online Developer Center";
        }


        
// Add the menu to all the workspaces
        private void addMenu2Workspaces(PopMenu pm)
        
{
            
foreach (Workspace wk in cs.Workspaces)
            
{
                WorkspacePopMenu wkpm 
= new WorkspacePopMenu(wk, pm);
                wkpm.Display 
= 1;
            }


        }


        
// Command: remmenu
        
// This Command deletes the menu added above from the Main CUI File and any
        
//  workspaces that it was added to. 
        [CommandMethod("remmenu")]
        
public void remMenu()
        
{
            
// Find Index of the desired MenuItem
            
// Remove it from all Workspaces that it exists in
            
// Omitting this step leaves nasty left-overs in the Workspace files
            
// Remove it from the Cui files' Menu List

            PopMenu pm 
= cs.MenuGroup.PopMenus.FindPopWithAlias("POP12");
            
if (pm != null)
            
{
                
foreach (Workspace wk in cs.Workspaces)
                
{
                    WorkspacePopMenu wkPm 
= wk.WorkspacePopMenus.FindWorkspacePopMenu(pm.ElementID, pm.Parent.Name);

                    
if (wkPm != null)
                        wk.WorkspacePopMenus.Remove(wkPm);
                }

                cs.MenuGroup.PopMenus.Remove(pm);    
// Deletes the Menu from ACAD Menu Group
            }

        }



        
// Command: addtoolbar
        
// Creates a new toolbar called "New Toolbar", and adds it to all workspaces. 
        
// This toolbar contains a Toolbar control for named view, button for drawing 
        
// a pline, and a flyout that uses the "Draw" tool bar.
        [CommandMethod("addtoolbar")]
        
public void addToolbar()
        
{
            Toolbar newTb 
= new Toolbar("New Toolbar", cs.MenuGroup);
            newTb.ToolbarOrient 
= ToolbarOrient.floating;
            newTb.ToolbarVisible 
= ToolbarVisible.show;

            ToolbarControl tbCtrl 
= new ToolbarControl(ControlType.NamedViewControl, newTb, -1);

            ToolbarButton tbBtn 
= new ToolbarButton(newTb, -1);
            tbBtn.Name 
= "PolyLine";
            tbBtn.MacroID 
= "ID_Pline";

            ToolbarFlyout tbFlyout 
= new ToolbarFlyout(newTb, -1);
            tbFlyout.ToolbarReference 
= "DRAW";

            
foreach (Workspace wk in cs.Workspaces)
            
{
                WorkspaceToolbar wkTb 
= new WorkspaceToolbar(wk, newTb);
                wk.WorkspaceToolbars.Add(wkTb);
                wkTb.Display 
= 1;
            }

        }


        
// Command: remtoolbar
        
// This Command removes the toolbar added above from the Main CUI File and any
        
// workspaces that it was added to. 
        [CommandMethod("remtoolbar")]
        
public void remToolbar()
        
{
            Toolbar tbr 
= cs.MenuGroup.Toolbars.FindToolbarWithName("New Toolbar");
            
if (tbr != null)
            
{
                
foreach (Workspace wk in cs.Workspaces)
                
{
                    WorkspaceToolbar wkTb 
= wk.WorkspaceToolbars.FindWorkspaceToolbar(tbr.ElementID, tbr.Parent.Name);

                    
if (wkTb != null)
                        wk.WorkspaceToolbars.Remove(wkTb);
                }

                cs.MenuGroup.Toolbars.Remove(tbr);    
// Deletes the toolbar from ACAD Menu Group
            }

        }



        
// Command: cuiall
        
// Issuing this command will run the methods to make all changes to the UI
        
// This will add the custom menu, toolbar, and shortcut, as well as 
        
// dock the Properties palette on the right side.
        [CommandMethod("addcui")]
        
public void AddMenuAndToobar()
        
{
            addMenu();
            addToolbar();
            saveCui();
        }


        [CommandMethod(
"remcui")]
        
public void RemMenuAndToolbar()
        
{
            remMenu();
            remToolbar();
            saveCui();
        }

    }


}


五 其他

posted on 2008-06-17 08:55 夢在天涯 閱讀(8155) 評論(1)  編輯 收藏 引用 所屬分類: ARX/DBX

評論

# 請教您做這些需要包括的庫文件,怎么沒有看到呢 2008-09-30 21:53 s

我想用c++做一個,但是我沒有找到你包括的庫文件,你能告訴我么,qq550810998
  回復  更多評論   

公告

EMail:itech001#126.com

導航

統(tǒng)計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812134
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美影院在线播放| 亚洲无线视频| 国内外成人免费激情在线视频| 久久精品天堂| 欧美一级欧美一级在线播放| 日韩一级片网址| 亚洲免费电影在线观看| 欧美国产精品v| 欧美国产日本韩| 亚洲第一福利视频| 欧美成人国产一区二区| 欧美在线欧美在线| 欧美精品首页| 欧美激情精品久久久久久久变态 | 亚洲黄色一区| 亚洲精品少妇网址| 亚洲美女毛片| 欧美日韩精品欧美日韩精品| 另类成人小视频在线| 欧美一区二区三区四区夜夜大片| 99国产精品久久久| 亚洲一区区二区| 欧美成人激情视频免费观看| 午夜精品福利电影| 裸体歌舞表演一区二区| 亚洲美女av网站| 欧美在线观看视频在线| 欧美日本二区| 在线日韩av永久免费观看| 亚洲精品社区| 久久影视精品| 亚洲欧美日韩在线高清直播| 欧美猛交免费看| 亚洲成色精品| 久久久久**毛片大全| 欧美性淫爽ww久久久久无| 在线精品视频在线观看高清 | 久久精品国产亚洲5555| 欧美视频在线观看视频极品| 黄色成人av| 久久久久久夜| 久久成人综合网| 一区在线影院| 美女999久久久精品视频| 久久精品色图| 亚洲欧洲一区二区在线观看 | 亚洲精品在线三区| 欧美高清自拍一区| 亚洲精品综合久久中文字幕| 亚洲福利视频免费观看| 欧美高清视频在线播放| 亚洲伦理中文字幕| 亚洲自拍三区| 亚洲大胆美女视频| 亚洲人成在线影院| 国产精品人人做人人爽| 欧美四级在线观看| 亚洲少妇在线| 亚洲精品国产无天堂网2021| 久久九九国产| 欧美大香线蕉线伊人久久国产精品| 亚洲成人在线视频网站| 99精品国产在热久久| 国产精品一区久久久| 欧美va亚洲va日韩∨a综合色| 欧美精品v日韩精品v韩国精品v| 在线中文字幕一区| 欧美在线亚洲| 中文在线一区| 欧美成人三级在线| 久久久最新网址| 久久久久久伊人| 欧美成人免费观看| 好看的av在线不卡观看| 国产一区二三区| 欧美国产免费| 国产午夜精品理论片a级探花 | 久久国产精品99国产| 亚洲尤物视频在线| 欧美日一区二区在线观看 | 西西人体一区二区| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美日韩国产一区二区| 亚洲一区二区三区四区五区午夜| 美女日韩在线中文字幕| 麻豆成人综合网| 久久精品成人一区二区三区蜜臀| 亚洲香蕉视频| 国产精品尤物福利片在线观看| 宅男66日本亚洲欧美视频| 亚洲一区二区三区视频播放| 欧美日韩另类视频| 这里只有精品视频| 欧美成人国产va精品日本一级| 久久久久9999亚洲精品| 国内精品视频在线观看| 美女主播一区| 日韩视频二区| 久久久久一区二区三区| 亚洲黄色三级| 国产欧美一区二区三区沐欲| 久久精品亚洲一区二区三区浴池| 亚洲第一精品夜夜躁人人躁| 亚洲午夜久久久久久久久电影院| 国产精品日韩欧美| 欧美v日韩v国产v| 午夜欧美不卡精品aaaaa| 国产模特精品视频久久久久| 性色一区二区| 亚洲欧美日韩国产一区二区三区| 欧美成人精品一区二区三区| 亚洲欧美日韩一区在线观看| 亚洲国产精品毛片| 激情国产一区| 国产综合网站| 国产精品久久久久影院亚瑟| 欧美aⅴ99久久黑人专区| 欧美尤物巨大精品爽| 亚洲欧美在线磁力| 亚洲影视中文字幕| 亚洲视频在线视频| 亚洲日本一区二区三区| 国外成人在线视频网站| 国产午夜精品美女毛片视频| 国产农村妇女精品| 国产日韩欧美一区在线| 久久精品久久99精品久久| 亚洲欧美激情诱惑| 亚洲欧美一区在线| 欧美中文字幕在线播放| 久久先锋影音| 亚洲国产精品成人va在线观看| 久久先锋影音| 国产一区二区三区成人欧美日韩在线观看 | 国产欧美一区二区三区在线看蜜臀| 欧美二区在线播放| 欧美日韩色婷婷| 国产日韩高清一区二区三区在线| 国产一区二区中文| 亚洲精选91| 欧美日韩中国免费专区在线看| 国产精品久久久久aaaa九色| 国产亚洲一区二区三区在线播放| 亚洲第一精品在线| 亚洲你懂的在线视频| 欧美电影打屁股sp| 亚洲欧美成人综合| 欧美色图一区二区三区| 国产精品女主播| 在线欧美日韩国产| 欧美一区二区三区在线播放| 欧美成人精品福利| 欧美专区日韩视频| 国产精品久久久久久亚洲毛片| 亚洲电影下载| 国产精品国产自产拍高清av王其| 99v久久综合狠狠综合久久| 久久9热精品视频| 国产欧美一区二区色老头| 一区二区三区四区精品| 亚洲国产一区二区视频| 美女久久网站| 日韩午夜激情| aⅴ色国产欧美| 国产精品s色| 久久精品亚洲精品国产欧美kt∨| 亚洲一区二三| 国产欧美一区二区精品仙草咪| 先锋影音网一区二区| 先锋影音国产精品| 在线日韩欧美视频| 激情综合色综合久久| 久久精品国产亚洲a| 久久综合色一综合色88| 洋洋av久久久久久久一区| 亚洲图片欧美午夜| 一区二区三区在线视频播放| 欧美高清你懂得| 国产精品美女诱惑| 久久五月激情| 欧美午夜视频在线| 免费短视频成人日韩| 欧美精品v日韩精品v韩国精品v| 一区二区三区不卡视频在线观看 | 国产精品福利av| 亚洲国产99| 激情综合久久| 亚洲女性喷水在线观看一区| 亚洲国产精品久久久久| 欧美一级欧美一级在线播放| 亚洲一区二区精品| 美女视频一区免费观看| 欧美日韩国产欧| 亚洲成人自拍视频| 羞羞色国产精品| 午夜欧美视频| 国产精品网站在线播放| 亚洲精品一区中文| 久久久之久亚州精品露出| 久久激情视频久久|