当前位置: 首页 > news >正文

做网站需要准备什么条件asp论坛网站源码

做网站需要准备什么条件,asp论坛网站源码,灞桥微网站建设,深圳市网站建设制作设计平台菜单栏、工具栏与状态栏 1、菜单栏1.1 简介1.2 创建属性设置菜单消息成员函数 1.3 实例 2、工具栏2.1 简介工具栏属性2.2 创建消息CToolBar类的主要成员函数 2.3 实例 3、状态栏3.1 简介3.2 创建CStatusBar类状态栏创建 3.3 实例 1、菜单栏 1.1 简介 菜单在界面设计中是经常使… 菜单栏、工具栏与状态栏 1、菜单栏1.1 简介1.2 创建属性设置菜单消息成员函数 1.3 实例 2、工具栏2.1 简介工具栏属性2.2 创建消息CToolBar类的主要成员函数 2.3 实例 3、状态栏3.1 简介3.2 创建CStatusBar类状态栏创建 3.3 实例 1、菜单栏 1.1 简介 菜单在界面设计中是经常使用的一种元素包括Windows系统中的窗口、智能终端设备的应用界面等都会经常见到菜单的身影。我们在对可视化窗口操作时菜单确实提供了很大方便。 菜单分为 下拉式菜单下拉式菜单一般在窗口标题栏下面显示下拉式菜单通常是由主菜单栏、子菜单及子菜单中的菜单项和分隔条所组成的。弹出式菜单弹出式菜单一般可以通过单击鼠标右键等操作显示。它的主菜单不可见只显示子菜单。 1.2 创建 属性设置 菜单项中含有“…”则表示点击后会弹出对话框。热键菜单项的标题文本中都有一个字母带下划线带下划线的字母为热键。中文则为括号中的字母。 主菜单栏上的“File”中字母“F”带下划线F就是热键程序运行并显示窗口时在键盘上点击AltF就等同于直接点菜单项File弹出File下的子菜单后点击“Open”的热键O就可以实现与直接点菜单项Open相同的功能。 热键的定义可在属性中直接设置。Caption为“File”很明显只要在要定义为热键的字母前加就可以了。 快捷键用这些组合键就能实现与相应菜单项一样的功能。 定义“Open”菜单项的Caption属性为“Open…\tCtrlO”这里的\t表示在显示前面的文本后跳格再显示快捷键CtrlO但这样设置其Caption属性只是能显示出快捷键要实现快捷键的功能还需要在Accelerator资源中设定。 Accelerator中有四列分别为ID、Modifier、Key和Type。ID就是菜单项的IDModifer和Key就代表了组合键。例如Open菜单项的ID为ID_FILE_OPENModifer为“Ctrl”Key为“O”。 创建右键插入新列、分隔符、菜单项等也可以直接输入。 需要为菜单项设置ID、热键和快捷键Accelerator。 菜单消息 菜单主要能发送两种消息COMMAND消息和UPDATE_COMMAND_UI消息。 COMMAND消息在菜单项被点击时发送该消息。UPDATE_COMMAND_UI消息用来维护菜单项的各项状态包括激活、禁用、变灰、选中、未选中等。在下拉菜单每次打开的时候所有菜单项的此消息都会被发送出去。如果所属类中为菜单项的该消息添加了处理函数则执行相应函数更新菜单状态如果菜单项没有此消息处理函数也没有COMMAND消息的处理函数那么它就会变灰。 成员函数 MFC为菜单的操作提供了CMenu类。 BOOL LoadMenu(UINT nIDResource); 加载菜单资源并将其附加到CMenu对象上。参数nIDResource指定了要加载的菜单资源的ID。如果菜单加载成功则返回TRUE否则返回FALSE。BOOL DeleteMenu(UINT nPosition,UINT nFlags); 在菜单中删除一个菜单项。参数nPosition指定要删除的菜单项。参数nFlags就用来解释nPosition的意义为MF_BYCOMMAND时说明nPosition表示菜单项的ID为MF_BYPOSITION时说明nPosition表示菜单项的位置第一个菜单项的位置为0。如果删除菜单项成功则返回TRUE否则返回FALSE。BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect 0); 用来在指定位置显示一个浮动的弹出式菜单。参数nFlags指定屏幕坐标和鼠标位置的标志可以是以下取值 TPM_CENTERALIGN菜单在水平方向上相对于参数x指定的坐标值居中显示 TPM_LEFTALIGN菜单的左侧与参数x指定的坐标值对齐 TPM_RIGHTALIGN菜单的右侧与参数x指定的坐标值对齐 TPM_BOTTOMALIGN菜单的底部与参数y指定的坐标值对齐 TPM_TOPALIGN菜单项的顶部与参数y指定的坐标值对齐 TPM_VCENTERALIGN菜单在垂直方向上相对于参数y指定的坐标值居中显示 参数x指定弹出式菜单的水平方向的屏幕坐标参数y指定菜单顶部垂直方向上的屏幕坐标参数pWnd指明哪个窗口拥有此弹出式菜单不能为NULL参数lpRect忽略。UINT CheckMenuItem(UINT nIDCheckItem,UINT nCheck); 在弹出菜单中为菜单项增加选中标记或移除选中标记。参数nIDCheckItem指定要选中或取消选中的菜单项。参数nCheck指定菜单项的选中状态和如何根据nIDCheckItem确定菜单项的位置可以是MF_CHECKED或MF_UNCHECKED与MF_BYPOSITION或MF_BYCOMMAND的组合这几个标志的含义如下 MF_BYCOMMAND为默认值。说明参数nIDCheckItem表示菜单项的ID MF_BYPOSITION说明参数nIDCheckItem表示菜单项的位置第一个菜单项的位置是0 MF_CHECKED为菜单项添加选中标记 MF_UNCHECKED为菜单项移除选中标记 该函数返回菜单项之前的状态MF_CHECKED或MF_UNCHECKED, 如果菜单项不存在则返回0xFFFFFFFF。UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable); 激活、禁用菜单项或使其变灰。参数nIDEnableItem指定要激活、禁用或变灰的菜单项。参数nEnable指定操作的类型可以是MF_DISABLED、MF_ENABLED或MF_GRAYED与MF_BYCOMMAND或MF_BYPOSITION的组合这些值的含义如下 MF_BYCOMMAND同CheckMenuItem MF_BYPOSITION同CheckMenuItem MF_DISABLED禁用菜单项使其不能被选择但不变灰 MF_ENABLED激活菜单项使其能够被选择并由变灰状态恢复 MF_GRAYED禁用菜单项使其不能被选择并变灰 该函数返回菜单项之前的状态MF_DISABLED、MF_ENABLED或MF_GRAYEDCMenu* GetSubMenu(int nPos) const; 获取弹出菜单的CMenu对象。参数nPos指定弹出菜单在菜单中的位置不能使用ID。返回值是CMenu对象的指针该CMenu对象的m_hMenu成员为由nPos指定的弹出菜单的句柄如果不存在这样的CMenu对象则返回NULL然后创建一个临时弹出菜单。 1.3 实例 下拉式菜单实现 创建菜单项设置ID名称热键快捷键等创建消息相应函数消息响应函数应该创建在CMainFrame类中 ON_COMMAND(IDM_TOOLSDRAW, CMainFrame::OnToolsdraw) ON_UPDATE_COMMAND_UI(IDM_TOOLSDRAW, CMainFrame::OnUpdateToolsdraw)void CMainFrame::OnToolsdraw() {// TODO: 在此添加命令处理程序代码 }void CMainFrame::OnUpdateToolsdraw(CCmdUI* pCmdUI) {// TODO: 在此添加命令更新用户界面处理程序代码 }编写函数体中处理代码数据成员和函数成员实现 弹出式菜单实现 鼠标右键的点击为消息响应函数操作。 创建弹出菜单资源通过消息响应函数来弹出菜单项有两种实现方式 void CSingleDocAppView::OnRButtonDown(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值CMenu menu; // 菜单包含主菜单栏和子菜单 CMenu* pSubMenu; // 右键菜单 // 加载菜单资源到menu对象 menu.LoadMenu(IDR_POPUP_EDIT);// 因为右键菜单是弹出式菜单不包含主菜单栏所以取子菜单 pSubMenu menu.GetSubMenu(0);// 将坐标值由客户坐标转换为屏幕坐标 ClientToScreen(point);// 弹出右键菜单菜单左侧与point.x坐标值对齐 pSubMenu-TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);CView::OnRButtonDown(nFlags, point); }void CSingleDocAppView::OnRButtonUp(UINT /* nFlags */, CPoint point) {ClientToScreen(point);OnContextMenu(this, point); }void CSingleDocAppView::OnContextMenu(CWnd* /* pWnd */, CPoint point) { #ifndef SHARED_HANDLERStheApp.GetContextMenuManager()-ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); #endif }在弹出式菜单弹出的相关类中对菜单项的消息响应函数进行实现。 2、工具栏 2.1 简介 工具栏一般位于主框架窗口的上部菜单栏的下方由一些带图片的按钮组成。当用户用鼠标单击工具栏上某个按钮时程序会执行相应的操作如果鼠标没有点击只是停留在某个按钮上一会后会弹出一个小窗口显示提示信息。 工具栏一般位于主框架窗口的上部菜单栏的下方由一些带图片的按钮组成。当用户用鼠标单击工具栏上某个按钮时程序会执行相应的操作如果鼠标没有点击只是停留在某个按钮上一会后会弹出一个小窗口显示提示信息。 工具栏属性 资源位置在资源视图的Toolbar栏下 以IDR_MAINFRAME工具栏的第一个按钮为例说明工具栏按钮的各项属性。用鼠标单击工具栏资源上的第一个按钮属性页中就会显示其属性。下面分别讲解各项属性。 ID属性ID_FILE_NEW。不知大家是否还记得菜单IDR_MAINFRAME的菜单项File-New的ID也是ID_FILE_NEW两者ID相同正是如此才使得工具栏第一个按钮与菜单项File-New能实现相同的功能。如果想让工具栏某个按钮与菜单栏某个菜单项点击后执行的操作相同就要为两者设置相同的ID。Prompt属性Create a new document\nNew。此属性为工具栏按钮的提示文本。在鼠标指向此按钮时状态栏中会显示“Create a new document”当弹出提示信息窗口时会显示包含“New”的提示信息。“\n”是两者的分隔转义符。Height属性15。此属性为工具栏按钮的像素高度。Width属性16。此属性为工具栏按钮的像素宽度。 工具栏资源的最右边总是会有一个待编辑的按钮我们对其进行编辑后工具栏资源会自动增加一个新的空白按钮这也实现了按钮的添加操作。如果我们想要删除某个按钮就可以用鼠标左键点住它拖出工具栏资源的范围即可。另外我们看到第三个按钮保存按钮和第四个按钮剪切按钮之间有一些间隙在运行程序后会出现一个竖的分隔线所以想要在两个按钮之间添加分隔线的话可以用鼠标左键拖住右边的按钮往右稍移动一些就可以了。 2.2 创建 消息 一般情况下工具栏中的按钮在菜单栏中都有对应的菜单项两者实现的功能相同要想实现这种效果只需要将工具栏按钮的ID与对应的菜单栏中菜单项的ID设置为相同值即可。 在实际使用工具栏时除了前面讲的资源编辑外其他使用与菜单类似。例如对COMMAND消息和UPDATE_COMMAND_UI消息可像菜单应用实例那样为工具栏按钮添加消息处理函数。 如果工具栏按钮对应的菜单项已经添加了消息处理函数那么就不必再为它添加了因为它的ID与菜单项相同所以会调用同样的消息处理函数。这样点击工具栏按钮与点击相应菜单项执行相同的功能在菜单项为选中、激活或禁用等状态时工具栏按钮会有一样的状态。 CToolBar类的主要成员函数 MFC为工具栏的操作提供了CToolBar类。 virtual BOOL CreateEx( CWnd* pParentWnd, DWORD dwCtrlStyle TBSTYLE_FLAT, DWORD dwStyle WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders CRect(0, 0, 0, 0), UINT nID AFX_IDW_TOOLBAR ); 创建工具栏对象。参数pParentWnd为工具栏父窗口的指针。参数dwCtrlStyle为工具栏按钮的风格默认为TBSTYLE_FLAT即“平面的”。参数dwStyle为工具栏的风格默认取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP由于是主框架窗口的子窗口所以要有WS_CHILD和WS_VISIBLE风格CBRS_ALIGN_TOP风格表示工具栏位于父窗口的顶部 各种风格可以参见MSDN的Toolbar Control and Button Styles中的定义。参数rcBorders为工具栏边框各个方向的宽度默认为CRect(0, 0, 0, 0)即没有边框。参数nID为工具栏子窗口的ID默认为AFX_IDW_TOOLBAR。BOOL LoadBitmap(UINT nIDResource); 为工具栏加载位图。参数nIDResource为位图资源的ID。成功则返回TRUE否则返回FALSE。注意这里的位图资源应当为每个工具栏按钮都提供位图如果图片不是标准大小16像素宽15像素高则需要调用SetSizes成员函数调整按钮大小和图片大小。BOOL LoadToolBar(UINT nIDResource); 加载由nIDResource指定的工具栏。参数nIDResource为要加载的工具栏的资源ID。成功则返回TRUE否则返回FALSE。void SetSizes(SIZE sizeButton,SIZE sizeImage); 设置工具栏按钮的大小和图片的大小。参数sizeButton为工具栏按钮的像素大小。参数sizeImage为图片的像素大小。void SetButtonStyle(int nIndex,UINT nStyle); 设置工具栏按钮或分隔线的风格或者为按钮分组。参数nIndex为将要进行设置的按钮或分隔线的索引。参数nStyle为按钮风格可以是以下取值 TBBS_BUTTON 标准按钮(默认) TBBS_SEPARATOR 分隔条 TBBS_CHECKBOX 复选框 TBBS_GROUP 标记一组按钮的开始 TBBS_CHECKGROUP 标记一组复选框的开始 TBBS_DROPDOWN 创建下拉列表按钮 TBBS_AUTOSIZE 按钮的宽度根据按钮文本计算而不基于图片大小 TBBS_NOPREFIX 按钮的文本没有快捷键前缀UINT GetButtonStyle(int nIndex) const; 获取工具栏按钮或分隔条的风格。风格可参考SetButtonStyle。参数nIndex为按钮或分隔条的索引。BOOL SetButtonText(int nIndex,LPCTSTR lpszText); 设置工具栏按钮的文本。参数nIndex为工具栏按钮的索引。参数lpszText为指向要设置的文本字符串的指针。设置成功则返回TRUE否则返回FALSE。CString GetButtonText(int nIndex) const; 获取工具栏按钮上显示的文本。参数nIndex为工具栏按钮的索引。 2.3 实例 CMainFrame类中看到它创建工具栏所使用的类并不是常用的CToolBar类而是CMFCToolBar类。CMFCToolBar类是自VS2008以来MFC提供的类它与CToolBar类有些类似但功能更丰富。这里要注意CMFCToolBar类与CToolBar类并没有任何派生关系。 以CMFCToolBar类讲解工具栏的创建步骤 创建工具栏资源。构造CMFCToolBar类的对象。调用CMFCToolBar类的Create或CreateEx成员函数创建工具栏。调用LoadToolBar成员函数加载工具栏资源。 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)){TRACE0(未能创建工具栏\n);return -1; // 未能创建}CString strToolBarName;bNameValid strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);ASSERT(bNameValid);m_wndToolBar.SetWindowText(strToolBarName);CString strCustomize;bNameValid strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);ASSERT(bNameValid);m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); }因为创建框架窗口时需要调OnCreate函数所以工具栏的创建也是在OnCreate中完成的。 工具栏的停靠 创建好工具栏后如果想要停靠工具栏也需要添加相应的停靠代码。工具栏停靠的步骤及需要调用的函数如下前两个步骤可以颠倒顺序 在框架窗口中启用停靠 若要将工具栏停靠到某个框架窗口则必须启用该框架窗口或目标以允许停靠。可以在CFrameWndEx类中调用下面的成员函数来实现 BOOL EnableDocking(DWORD dwDockStyle);该函数采用一个DWORD参数用来指定框架窗口的哪个边可以接受停靠可以有四种取值CBRS_ALIGN_TOP顶部、CBRS_ALIGN_BOTTOM底部、CBRS_ALIGN_LEFT左侧、CBRS_ALIGN_RIGHT右侧。如果希望能够将控制条停靠在任意位置将CBRS_ALIGN_ANY作为参数传递给EnableDocking。 工具栏启用停靠 框架窗口启用停靠准备好后必须以相似的方式准备工具栏。为想要停靠的每一个工具栏CMFCToolBar对象调用下面的函数 virtual void EnableDocking(DWORD dwAlignment);允许工具栏停靠到框架窗口并指定工具栏应停靠的目标边。此函数指定的目标边必须与框架窗口中启用停靠的边匹配否则工具栏无法停靠为浮动状态。 停靠工具栏 当用户试图将工具栏放置在允许停靠的框架窗口某一边时需要框架CFrameWndEx类调用以下函数 void DockPane(CBasePane* pBar,UINT nDockBarID0,LPCRECT lpRectNULL);参数pBar为要停靠的控制条的指针参数nDockBarID为要停靠的框架窗口某条边的ID可以是以下四种取值AFX_IDW_DOCKBAR_TOP、AFX_IDW_DOCKBAR_BOTTOM、AFX_IDW_DOCKBAR_LEFT、AFX_IDW_DOCKBAR_RIGHT CMainFrame类的OnCreate函数实现中工具栏的停靠过程 // TODO: 如果您不希望工具栏和菜单栏可停靠请删除这五行m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockPane(m_wndMenuBar);DockPane(m_wndToolBar);3、状态栏 3.1 简介 状态栏相信大家在很多窗口中都能见到它总是用来显示各种状态。状态栏实际上也是一个窗口一般分为几个窗格每个窗格分别用来显示不同的信息和状态等如菜单项和工具栏按钮的提示信息。 用MFC向导生成的单文档或多文档程序都会自动创建状态栏该状态栏被分为了几个窗格分别用来显示菜单项和工具栏按钮的提示信息及Caps Lock、Num Lock、Scroll Lock键的状态。 3.2 创建 CStatusBar类 virtual BOOL Create(CWnd* pParentWnd, DWORD dwStyle WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID AFX_IDW_STATUS_BAR); 创建一个状态栏。参数pParentWnd为状态栏父窗口的指针参数dwStyle为状态栏的风格除了标准的Windows风格外它还支持 CBRS_TOP位于框架窗口的顶部。 CBRS_BOTTOM位于框架窗口的底部。 CBRS_NOALIGN父窗口大小改变时状态栏不会被重新定位。 参数nID指定状态栏的ID。BOOL SetIndicators(const UINT* lpIDArray, int nIDCount); 为每个指示器设置显示文本具体来说就是用lpIDArray数组中的对应元素为每个指示器设置一个ID然后加载每个ID代表的字符串设置为这些指示器的显示文本。参数lpIDArray为指向一个ID数组的指针参数nIDCount为lpIDArray数组的元素个数。UINT GetItemID(int nIndex) const; 获取由nIndex指定的指示器的ID。参数nIndex为要获取ID的指示器索引。CString GetPaneText(int nIndex) const; 获取状态栏窗格中显示的文本。参数nIndex为要获取文本的窗格的索引。返回值为包含窗格文本的CString对象。BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate TRUE); 设置状态栏窗格的显示文本。参数nIndex为要设置文本的窗格的索引参数lpszNewText为指向新的窗格文本的指针参数bUpdate表示是否设置后立即更新显示。如果设置成功则返回TRUE否则返回FALSE。 状态栏创建 在CMainFrame类中看到创建状态栏时使用的是CMFCStatusBar类对象。CMFCStatusBar类是自VS2008以来提供的状态栏类用法与CStatusBar类相似甚至很多成员函数也类似但它的功能更加丰富。 创建步骤 构造一个CMFCStatusBar类的对象。 在MainFrm.h文件中为CMainFrame类定义了一个成员对象CMFCStatusBar m_wndStatusBar;。调用CMFCStatusBar::Create函数来创建状态栏窗口。 在CMainFrame::OnCreate函数的实现中我们可以找到CMFCStatusBar::Create函数的调用 if (!m_wndStatusBar.Create(this)) { TRACE0(Failed to create status bar\n); return -1; // fail to create }调用CMFCStatusBar::SetIndicators函数为状态栏划分窗格并为每个指示器设置显示文本。 CMFCStatusBar::SetIndicators函数需要一个ID数组的参数在MainFrm.cpp中如下定义了一个窗格ID的数组 static UINT indicators[] { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, };indicators数组定义了状态栏窗格的划分信息。第一个元素一般为ID_SEPARATOR对应的窗格用来显示命令提示信息上面数组中的后三项为指示器文本的字符串ID可以根据这些ID在String Table字符串资源中找到相应的字符串查找方法是在Resource View资源视图中打开String Table字符串资源可以看到有ID、Value和Caption三列在ID列中找到需要的ID对应的Caption列文本就是要查找的字符串。ID_INDICATOR_CAPS、ID_INDICATOR_NUM和ID_INDICATOR_SCRL对应的字符串分别是CAP、NUM、SCRL对应的三个窗格分别为Caps Lock指示器、Num Lock指示器和Scroll Lock指示器。 在CMainFrame::OnCreate函数中调用 m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));状态栏就创建完成了之后我们可以通过CMFCStatusBar::SetPaneText设置窗格的文本。 3.3 实例 在状态栏添加一个事件窗格用来显示系统时间。 在Resource View资源视图中打开String Table字符串资源然后在最后一行的下一个空白行中或者任意处点右键选择“New String”添加一个新的字符串资源. 在indicators数组的第一个元素ID_INDICATOR_SCRL后插入IDS_INDICATOR_TIME。 static UINT indicators[] {ID_SEPARATOR, // 状态行指示器ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,IDS_INDICATOR_TIME };要实时显示系统时间就需要使用一个定时器每秒钟更新一次时间显示。在CMainFrame::OnCreate函数中开启定时器. // 启动定时器定时器ID为1定时时间为1000ms即1s SetTimer(1, 1000, NULL); 在Class View类视图中找到CMainFrame类右键选择“Properties”然后在显示出来的属性页中点工具栏上的Messages按钮即显示出消息列表找到WM_TIMER消息添加其消息处理函数void CMainFrame::OnTimer(UINT_PTR nIDEvent)并修改此函数实现如下 void CMainFrame::OnTimer(UINT_PTR nIDEvent) {// TODO: 在此添加消息处理程序代码和/或调用默认值CString strTime;// 获取系统当前时间并保存到curTime CTime curTime CTime::GetCurrentTime();// 格式化curTime将字符串保存到strTime strTime curTime.Format(_T(%H:%M:%S));// 在状态栏的时间窗格中显示系统时间字符串 m_wndStatusBar.SetPaneText(4, strTime);CFrameWndEx::OnTimer(nIDEvent); }
文章转载自:
http://www.morning.kntbk.cn.gov.cn.kntbk.cn
http://www.morning.ywrt.cn.gov.cn.ywrt.cn
http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn
http://www.morning.bxfy.cn.gov.cn.bxfy.cn
http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn
http://www.morning.bwfsn.cn.gov.cn.bwfsn.cn
http://www.morning.znpyw.cn.gov.cn.znpyw.cn
http://www.morning.tndhm.cn.gov.cn.tndhm.cn
http://www.morning.dmkhd.cn.gov.cn.dmkhd.cn
http://www.morning.oioini.com.gov.cn.oioini.com
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn
http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn
http://www.morning.fjntg.cn.gov.cn.fjntg.cn
http://www.morning.yrck.cn.gov.cn.yrck.cn
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn
http://www.morning.jjwzk.cn.gov.cn.jjwzk.cn
http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn
http://www.morning.fmqw.cn.gov.cn.fmqw.cn
http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn
http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn
http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn
http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn
http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn
http://www.morning.knnc.cn.gov.cn.knnc.cn
http://www.morning.kflbf.cn.gov.cn.kflbf.cn
http://www.morning.mbmtz.cn.gov.cn.mbmtz.cn
http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn
http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn
http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn
http://www.morning.byywt.cn.gov.cn.byywt.cn
http://www.morning.tnjkg.cn.gov.cn.tnjkg.cn
http://www.morning.yltyr.cn.gov.cn.yltyr.cn
http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn
http://www.morning.jmllh.cn.gov.cn.jmllh.cn
http://www.morning.nqrlz.cn.gov.cn.nqrlz.cn
http://www.morning.rqpgk.cn.gov.cn.rqpgk.cn
http://www.morning.tgnr.cn.gov.cn.tgnr.cn
http://www.morning.fwgnq.cn.gov.cn.fwgnq.cn
http://www.morning.clpkp.cn.gov.cn.clpkp.cn
http://www.morning.fypgl.cn.gov.cn.fypgl.cn
http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn
http://www.morning.bnrff.cn.gov.cn.bnrff.cn
http://www.morning.ypktc.cn.gov.cn.ypktc.cn
http://www.morning.cpwmj.cn.gov.cn.cpwmj.cn
http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn
http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn
http://www.morning.juju8.cn.gov.cn.juju8.cn
http://www.morning.pndw.cn.gov.cn.pndw.cn
http://www.morning.nmlpp.cn.gov.cn.nmlpp.cn
http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn
http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn
http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn
http://www.morning.gynls.cn.gov.cn.gynls.cn
http://www.morning.jkftn.cn.gov.cn.jkftn.cn
http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn
http://www.morning.chzbq.cn.gov.cn.chzbq.cn
http://www.morning.hwtb.cn.gov.cn.hwtb.cn
http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn
http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn
http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn
http://www.morning.lonlie.com.gov.cn.lonlie.com
http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn
http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn
http://www.morning.xrsqb.cn.gov.cn.xrsqb.cn
http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn
http://www.morning.nytgk.cn.gov.cn.nytgk.cn
http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn
http://www.morning.kklwz.cn.gov.cn.kklwz.cn
http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn
http://www.morning.fwmln.cn.gov.cn.fwmln.cn
http://www.morning.qlry.cn.gov.cn.qlry.cn
http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn
http://www.morning.kqbjy.cn.gov.cn.kqbjy.cn
http://www.morning.twmp.cn.gov.cn.twmp.cn
http://www.morning.plydc.cn.gov.cn.plydc.cn
http://www.morning.blqsr.cn.gov.cn.blqsr.cn
http://www.morning.bhqlj.cn.gov.cn.bhqlj.cn
http://www.morning.khtjn.cn.gov.cn.khtjn.cn
http://www.tj-hxxt.cn/news/245978.html

相关文章:

  • 好看网站手机版网页设计代码html基础框架
  • 上海网站网络科技有限公司招聘网站怎么做预算
  • 有什么字体设计的网站微网站的链接怎么做
  • 录播教育系统网站建设费用wordpress插件的作用
  • 企业门户网站建设jsp免费ppt模板下载医学类
  • 网站建设 中关村小程序免费开发
  • 找设计师的网站最近发生的重大新闻事件
  • 怎么增加网站的权重wordpress对接熊掌号
  • 网站建设中企动力强网站建设自适应网站
  • 开办时 网站建设费 科目企业邮箱登陆登录入口
  • WordPress清除文章缓存关键词优化诊断
  • 做网站要和企业logo公司网站门户建设技术参数表
  • SaaS网站可以做seo嘛网站平台建设规划
  • 石家庄云图网站建设wordpress upload
  • 免费网站下载app软件wordpress显示不全
  • 网站费用明细免费素材库网站
  • 网站建设平台合同模板下载网站漏洞
  • 口碑好的盐城网站建设更改wordpress主题字体
  • 网站建设 提供源码芜湖网站建设哪家好
  • 哪个视频网站有潮汕做爰视频免费建站网站黄金网站
  • 建设官方网站登录企业网站备案系统
  • 良乡网站建设公司如何做adsense网站
  • 单位建设网站用交印花税吗o2o营销
  • 惠东做网站网站第一关键词怎么做
  • 做色网站买模板做的网站表单数据在哪里看
  • 校园论坛网站建设论文廊坊制作网站模板建站公司
  • 电子销售网站模板免费下载一起做网店的网站
  • 萍乡企业网站制作急速浏览器打开新网站
  • 永康网站优化公司做网站备案的问题
  • 电子商务网站建设的总体目标网站开发需要看哪些书