cskin源码
A. 怎样搭建一个android开发框架
搭建Android开发环境
准备工作:下载Eclipse、JDK、Android SDK、ADT插件
下载地址:Eclipse:http://www.eclipse.org/downloads/
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html
Android SDK:http://developer.android.com/sdk/index.html
ADT:http://developer.android.com/tools/sdk/eclipse-adt.html
1、安装和配置JAVA开发环境:
①把准备好的Eclipse和JDK安装到本机上(最好安装在全英文路径下),并给JDK配置环境变量,其中JDK的变量值为JDK安装路径的根目录,如我的为:D:\Program Files\Java\jdk1.7.0_02;
②打开命令提示符(cmd),输入java -version命令,显示如下图则说明JAVA环境变量已经配置好了。
2、安装ADT插件:
①打开已安装好的Eclipse,选择菜单栏上的“Help”->在弹出的下拉框中单击选择“Install new software...”;
②在新打开的对话框中我们完全可以直接在"Work with"中输入:https://dl-ssl.google.com/android/eclipse/在线安装ADT插件,但由于Google的服务器搭建在国外,所以通过这种方式安装起来会比较慢,而且可能会出现人品差死活装不上的情况,所以不推荐在线安装。
③我推荐直接通过下载好的ADT插件压缩包进行安装(此种方式可以在离线环境下进行)。具体步骤是:在新打开的对话框中点击“Add”按钮->在打开的对话框中点击“Archive”按钮选择之前已经下载好保存在本地硬盘的ADT插件压缩包,至于上面的“Name”可以随便取,这只是一个代号而已,没什么实际作用。
④在上一步中点击“Ok”按钮后我们会发现中间的空白处出现了两行复选框,单击"Select All"按钮选中所有的复选框,这步过后一路“Next”,需要“Accept”的就选中“Accept”,直到点击“Finish”结束,这样ADT插件就安装好了。整个过程需要的时间视机器性能而定。安装好ADT插件后,Eclipse的工具栏会出现一排Android的图标,如下图:
3、安装SDK:
①把下载好的Android SDK安装到本机上(最好安装在全英文路径下),并为Android SDK配置环境变量。Android SDK的环境变量值为SDK安装目录下的platform-tools文件夹和tools文件夹子目录路径,如我的分别为:E:\My Studying\Android\android-sdk\platform-tools、E:\My Studying\Android\android-sdk\tools,在变量值中,两个路径用逗号隔开。
②打开命令提示符(cmd),分别输入android -h和adb命令,显示如下图则说明Android SDK环境变量已经配置好了。
③打开Android SDK的安装目录,双击 "SDK Manager"->在打开的窗口中先选择你需要安装的SDK版本,其中“Status”表示该SDK包是否安装,如我选的是“Android2.2(API 8)”(我的之前已经安装过了,所以“Status”为“Installed”)->再点击“Install packages...”按钮,在弹出来的窗口中最好选“Accept All”这样才能安装你刚才选的所有的包->最后点“Install”按钮就开始安装了,整个过程会很慢,这需要你的耐心。
另外我们还可以通过在Eclipse上的工具栏中点击下图指示的图标打开“SDK Manager”然后进行安装,这样和上面的SDK安装方式一样,就不累述了。
④最后再选择Eclipes主菜单上的"Windows"->选择"preferrnces";
⑤在弹出来的对话框中选中左边栏的“Android”->通过右侧的“Browse...”按钮选择SDK的安装路径根目录->点击最下方的“Ok”按钮,这样SDK就在Eclipse上加载成功了。
4、创建Android模拟器(AVD):
①打开Eclipse->在Eclipse的工具栏上单击下图指示的图标打开“Android Virsual Device Manager”窗口;
②在“Android Virsual Device Manager”窗口单击“New”按钮->在弹出来的窗口中"Name"可以随便取;“Target”指模拟器的系统版本;“SD Card”的"size"是指手机存储卡的大小,只要你不在模拟器上装太多的应用,一般给个二三十MB就够了;“Skin”是指屏幕的分辨率大小,其中“Built in”是一般手机常用标准屏幕分辨率大小,而“Resolution”是自定义屏幕分辨率大小,具体做法,可以根据自身情况选择。->一切设置好后点击“Create AVD”,这时一个模拟器就创建好了。如果有必要,我们可以创建多个模拟器用于测试时使用。
附:Android模拟器型号以及其对应的分辨率大小:
Standard Width Height DAR Pixeis
HVGA 480 * 320 3:2 153,600
QVGA 320 * 240 4:3 76,800
WQVGA400 400 * 240 5:3 96,000
WQVGA432 432 * 240 9:5 103,680
WVGA800 800 * 480 5:3 384,000
WVGA852 854 * 480 409,920
至此为止,在Eclipse上就已经成功搭建Android开发环境了。
B. C# 实现虚拟键盘
自带是没有的,不过如果是WinForm推荐使用cskin皮肤库。
这里分享一个例子的源码,开发者模拟的腾讯QQ登录页面做的,里面密码是可以调用虚拟键盘。
但是这里的虚拟键盘也只能使用拼音,手写的比较难实现。
C. 这个网址的源码是什么
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>韩雪冬_BLOG :::web design:::-::: kaven 个人 flash 网站设计 ::: 网站建设 ::: 网页设计</title>
<META name="Author" content="ExoBUD, Jin_woong Eu,辣辣箭">
<META name="Keywords" content="ExoBUD™ MP,网页播放器">
<META name="Description" content="INetCasting(asf,wma,mp3,avi,wav),韩雪冬个人网站">
<LINK rel="stylesheet" href="exobud.css" type="text/css">
<style type="text/css">
<!--
.time {behavior: url(#default#time2);}
body {
background-color: #000000;
}
-->
</style>
</head>
<!--
//***************************************************************************************
// 版权所有。
// 请尊重智慧财产权: 无论您对本程序 ExoBUD MP(II) 作任何修改、制作(或翻译)面板,请您
// *必须*保留此段版权信息的内容,包括程序(及面板)原作者及中文汉化作者的名字和网站链接。
//
// 请不要将程序(或面板)原作者或中文汉化作者的名字改成您自己的名字,
// 然后以另一程式名称重新命名后在网上公开发表及散播本程式,因为这是严重的侵权行为。
//
// 这是免费程序,所以请不要使用在商业用途上。
// 另外,您也不可将本程序(全部或部份)复制到其他储存媒体(例如光盘)上作贩卖获利用途。
//
// 申明:因为使用本程序对你造成任何后果,程序原作者及中文汉化作者均不用对其负责。
//
//---------------------------------------版权信息---------------------------------------
// ExoBUD? MP(II) v5.8 Rhapsody.?-Skined [wmp-obj v7.1/v9]
// (C)Copyright 1998-2006 ExoBUD? All Right Reserved.
// Homepage : http://cyworld.com/exobud , http://exobud.nayana.com
// E-Mail : [email protected]
// ICQ : 96138429 (authorization mode)
//-------------------------------------------------------------------------------------
// Graphic Design (by Rhapsody.?)
// (C)Copyright Rhapsody.? All Right Reserved.
// msn : [email protected]
// Homepage : http://www.intorock.com
//-------------------------------------------------------------------------------------
// 简体中文汉化: 辣辣箭
// 网站: http://www.cuiz.net
// 电子邮箱: [email protected]
// OICQ号码: 79342254
// 发表日期: 2006-11-11
//***************************************************************************************-->
<SCRIPT Language ="JavaScript" src="sys/viewobj.js"></SCRIPT><!-- 加载Windows Media Player控件程序 -->
<SCRIPT Language="JavaScript" src="sys/exobud.js"></SCRIPT><!-- 载入 ExoBUD MP(II) 主程序 -->
<SCRIPT Language="JavaScript" src="config.js"></SCRIPT><!-- 载入 config.js 基本设置程序 -->
<SCRIPT Language ="JScript" src="sys/imgchg.js"></SCRIPT><!-- 载入“动态按钮图片切换”程序文件 -->
<SCRIPT Language="JavaScript" src="addlist.js"></SCRIPT><!-- 载入 ExoBUD MP(II) 播放歌曲列表设定文件 -->
<SCRIPT Language ="JScript" FOR=Exobud EVENT=openStateChange(sf)> evtOSChg(sf); </SCRIPT>
<SCRIPT Language ="JScript" FOR=Exobud EVENT=playStateChange(ns)> evtPSChg(ns); </SCRIPT>
<SCRIPT Language ="JScript" FOR=Exobud EVENT=error()> evtWmpError(); </SCRIPT>
<SCRIPT Language ="JScript" FOR=Exobud EVENT=Buffering(bf)> evtWmpBuff(bf); </SCRIPT>
<body onLoad="initExobud();" onContextMenu="return false" onDragStart="return false" onselectstart="return false" style="overflow:hidden;" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0><span align="center" id="loadingBar" style="width:100%;position:absolute; left:0px; top:2px; z-index:1;"><p align="center"><img src="img/loading.gif" align="middle" border="0"></p></span>
<table id="Table_01" width="100%" height="23" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<img src="img/plastic-ii_01.gif" width="2" height="23" alt=""></td>
<td>
<img name="iexobud" src="img/btn_exobud_ovr.gif" width="154" height="23" onClick="vizExobud()" style="cursor:hand;" title="首页"></td>
<td>
<img name="prevt" src="img/btn_prev.gif" width="19" height="23" onClick="playPrev();this.blur();" onMouseOver="imgtog('prevt',2);" onMouseOut="imgtog('prevt',3)" style="cursor:hand;" title="上一首"></td>
<td>
<img name="playt" src="img/btn_play.gif" width="19" height="23" onClick="startExobud();this.blur();" style="cursor:hand;" title="播放"></td>
<td>
<img name="pauzt" src="img/btn_pauz_off.gif" width="19" height="23" onClick="wmpPP();this.blur();" style="cursor:hand;" title="暂停/继续"></td>
<td>
<img name="stopt"src="img/btn_stop.gif" width="19" height="23" onClick="wmpStop();this.blur();" onMouseOver="imgtog('stopt',2);" onMouseOut="imgtog('stopt',3)" style="cursor:hand;" title="停止"></td>
<td>
<img name="nextt" src="img/btn_next.gif" width="19" height="23" onClick="playNext();this.blur();" onMouseOver="imgtog('nextt',2);" onMouseOut="imgtog('nextt',3)" style="cursor:hand;" title="下一首"></td>
<td>
<img src="img/plastic-ii_08.gif" width="37" height="23" alt=""></td>
<td width="80" background="img/plastic-ii_09.gif" align="center" onClick="chgTimeFmt();this.blur();" nowrap><span id="disp2" width=168 class="time" align="right" title ="正常/倒序" style="position:relative;top=0;cursor:hand;left:-2px; top:-0px;">00:00 | 00:00</span> </td>
<td>
<img src="img/plastic-ii_10.gif" width="8" height="23" alt=""></td>
<td width="60%" background="img/plastic-ii_11.gif" align="left" valign="top" nowrap><marquee behavior="scroll" width="99%" scrolldelay=30 scrollamount=1 truespeed><span id="disp1" class="title" style="width:0px; height:0px; position:relative; cursor:default; left:0; top:5px; z-index:1;">welcome to http://www.kaven115.com</span>
</marquee> </td>
<td>
<img src="img/plastic-ii_12.gif" width="38" height="23" alt=""></td>
<td>
<img name="plist" src="img/btn_plist.gif" width="18" height="23" onClick="openPlist();this.blur();" onMouseOver="imgtog('plist',2);" onMouseOut="imgtog('plist',3)" style="cursor:hand;" title="歌曲清单"></td>
<td>
<img name="pmode" src="img/btn_rndmode_off.gif" width="19" height="23" onClick="chgPMode();this.blur();" style="cursor:hand;" title="播放顺序"></td>
<td>
<img name="tloop" src="img/btn_trkloop_off.gif" width="19" height="23" onClick="chgTrkLoop();this.blur();" style="cursor:hand;" title="切换是否循环播放所选歌曲"></td>
<td>
<img name="vmute" src="img/btn_mute_off.gif" width="19" height="23" onClick="wmpMute();this.blur();" style="cursor:hand;" title="静音"></td>
<td>
<img name="rept" src="img/btn_rept_off.gif" width="19" height="23" onClick="chkRept();this.blur();" style="cursor:hand;" title="切换是否重复播放当前歌曲"></td>
<td>
<img src="img/plastic-ii_18.gif" width="86" height="23" alt=""></td>
<td width=72><iframe name="音量"src="add_vol/exobud_vol.html" height="23" width="72" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" title="音量- +"></iframe></td>
<td>
<img src="img/plastic-ii_20.gif" width="3" height="23" alt=""></td>
<td>
<img src="img/plastic-ii_21.gif" width="3" height="23" alt=""></td>
<TD><IMG name="rwdt" src="img/btn_rwd.gif" width=21 height=35 border=0 onMouseDown="fastRew();imgChange('rwdt',1);" onMouseUp="endRew();imgChange('rwdt',0);" onMouseOver="imgChange('rwdt',2);" onMouseOut="imgChange('rwdt',0);" title="FastReward" style="display:none;cursor:hand;"></TD>
<TD><IMG name="fwdt" src="img/btn_fwd.gif" width=21 height=35 border=0 onMouseDown="fastFwd();imgChange('fwdt',1);" onMouseUp="endFwd();imgChange('fwdt',0);" onMouseOver="imgChange('fwdt',2);" onMouseOut="imgChange('fwdt',0);" title="FastForward" style="display:none;cursor:hand;"></TD>
</tr>
</table>
<TABLE width=100% height=0 border="0" cellspacing="0" cellpadding="0">
<TR>
<TD height=0>
<SCRIPT Language="JavaScript" src="sys/caption.js"></SCRIPT>
</TD>
</TR>
</TABLE>
</div>
<script language="javascript">
document.all.loadingBar.style.display="none";
document.all.divBody.style.display="";
</script>
</body>
</html>
MP3地址:http://www.zhenruifang.com/blog/music/Mad%20world.mp3
D. 在Winform窗体中,开发了一个给窗体换皮肤的组件
思路是:在窗口的close事件中把当前的皮肤保存下来,可以是文件,注册表,或是数据库里,在启动的时候从这些保存的地方读上次保存的结果,没有则使用默认的
E. 求一个学校网站首页的源代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="generator" content="贵州省">
<meta name="keywords" content="凯里一中欢迎您!">
<meta name="description" content="首页">
<title>凯里一中 - 首页 - 凯里一中欢迎您!</title>
<link rel="shortcut icon" href="/images/favicon.ico">
<link type="text/css" href="/Skin/Skin_1.css" rel=stylesheet>
<script language=javascript src="/style/YSvoid_Functions.js"></script>
<script language=javascript src="/style/YSvoid_Title.js"></script>
<body topmargin=0 leftmargin=0>
<center>
<OBJECT style="WIDTH: 965px; HEIGHT: 190px" codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0 height=198 width=1000 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 196px? HEIGHT: 100%?;><PARAM NAME="_cx" VALUE="26458"><PARAM NAME="_cy" VALUE="5239"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE="/Upload/htmledit/2008812205023787.swf"><PARAM NAME="Src" VALUE="/Upload/htmledit/2008812205023787.swf"><PARAM NAME="WMode" VALUE="Window"><PARAM NAME="Play" VALUE="-1"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE=""><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"><PARAM NAME="Profile" VALUE="0"><PARAM NAME="ProfileAddress" VALUE=""><PARAM NAME="ProfilePort" VALUE="0"><PARAM NAME="AllowNetworking" VALUE="all"><PARAM NAME="AllowFullScreen" VALUE="false">
<embed src='/Upload/htmledit/2008812205023787.swf' quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width="100%"
height=300>/Upload/htmledit/2008812205023787.swf</embed></OBJECT>
<TABLE borderColor=#000000 cellSpacing=2 cellPadding=3 width=965 bgColor=#ffffff border=0 heihgt="">
<TBODY>
<UL id=menuItem 99%?;>
<P align=center><li id='menuHome'><li id='menuHomes'><a href='/'><span>首页</span></a></li></li>
<li id='menuNews'><a href='/News/'><span>学校新闻</span></a> </li>
<li id='menuArticle'><a href='/Article/'><span>德育之窗</span></a> </li>
<li id='menuBaiNian'><a href='/BaiNian/' title='学校简介'><span>学校概况</span></a> </li>
<li id='menuxiaoyou'><a href='/xiaoyou/' title='欢迎新老校友常来看看'><span>校友天地</span></a> </li>
<li id='menuBuMeng'><a href='/BuMeng/'><span>部门时讯</span></a> </li>
<li id='menuZhaoSheng'><a href='/ZhaoSheng/' title='关于考试'><span>招生录取</span></a> </li>
<li id='menuJiaoYan'><a href='/JiaoYan/' title='关于教学'><span>教研教学</span></a> </li>
<li id='menuShiZill'><a href='/ShiZill/' title='师资力量'><span>师资力量</span></a> </li>
<li id='menuDown'><a href='/Down/'><span>试题资源</span></a> </li>
<li id='menuVideo'><a href='/Video/'><span>一中视频</span></a> </li>
<li id='menuPhoto'><a href='/Photo/'><span>校园图库</span></a> </li>
<li id='menuForum'><a href='/Forum/'><span>论 坛</span></a> </li>
<P></P>
<UL></UL>
<DIV></DIV>
<P></P>
<UL></UL>
<P></P>
<UL></UL>
<P></P>
<UL></UL>
<P></P>
<UL></UL>
<P></P>
<UL></UL></P></UL></TBODY>
<TBODY>
<DIV id=headFind>
<DIV id=headForm><SPAN id=menuFind>今天是:2009年5月27日星期三 | 您现在位于:<A class=h_menu href="http://172.16.1.167:81/Editor//">网站首页</A> → <font title='首页'>首页</font></SPAN> </DIV></DIV></TBODY></TABLE>
<DIV></DIV><TBODY></TBODY></TABLE>
<table border=0 width="965" cellspacing=0 cellpadding=0>
<tr>
<td width=* align=center class=bg>
<table border=0 width='100%' cellspacing=0 cellpadding=0>
<tr>
<td align=center>
<!---------------------------------登陆、新闻、文章、调查、公告、搜索 开始--------------------------------->
<table border=0 cellspacing=0 cellpadding=0 width="100%">
<tr valign=top>
<td width='74%' height="49">
<table border=0 cellspacing=0 cellpadding=0 width='100%'>
<tr valign=top>
<td><table width="100%" border=0 cellpadding=0 cellspacing=0>
<tr valign=top>
<td width='25%'><table border=0 cellspacing=0 cellpadding=0 width='100%'>
<tr>
<td width='25%'><script language="JavaScript" src="/style/YSvoid_keyboard.js" type="text/javascript"></script>
<table cellspacing=1 cellpadding=1 class=table_Home>
<TBODY>
<TR>
<TD class=td0_Home>用户登陆</TD></TR>
<TR class=bg_td>
<TD align=middle>
<TABLE border=0 cellspacing=0 cellpadding=2>
<FORM name=login_frm onSubmit="return login_true()" action=/User/login.asp?action=login_chk method=post>
<INPUT type=hidden value=yes name=chk>
<INPUT type=hidden value=yes name=re_log>
<TBODY>
<TR>
<TD>用户名:</TD>
<TD><INPUT type=text class=username size=18 name=username maxlegth="20" title="用户名,输入正确的用户名"></TD></TR>
<TR>
<TD>密 码:</TD>
<TD><INPUT class=password type=password size=18 name=password maxlegth="20" onclick="showkeyboard('login_frm.password')" title="用软键盘输入密码,防止黑客软件记录键盘的录入信息,如不使用键盘可直接输入密码!"></TD></TR>
<tr>
<td>验证码:</td>
<td><input type=text class=txt name=CodeStr maxlength=4 size=4><img src='/Include/YSvoid_GetCode.asp' align=absMiddle title= '验证码,看不清楚。请点击刷新验证码!' onclick="this.src='/Include/YSvoid_GetCode.asp'"></td>
</tr>
<tr>
<td height="3"></td>
</tr>
<TR>
<TD align=middle colSpan=2>
<A href="/User/register.asp"><img src="/Skin/Skin_1/main/user_login_butreg.gif" border=0 title="注册用户,点这里可以注册新用户"></A>
<INPUT onclick="jacascript:return login_true();" type=image src="/Skin/Skin_1/main/user_login_button.gif" align=absMiddle border=0 title="用户登陆,请输入正确的用户名、密码、验证码再登陆网站">
<A style="CURSOR: help" href="/User/Getpass.asp"><img src="/Skin/Skin_1/main/user_login_key.gif" border=0 title="忘记密码,点这里可以找回自己的密码"></A></TD></TR>
<tr>
<td height="3"></td>
</tr>
<TR>
<TD align=middle colSpan=2><A href="/User/register.asp?action=resend" alt="重新发送一次我的注册验证邮件!">发送注册邮件</A> <INPUT class=bg_td id=id_memery_info type=checkbox value=yes name=memery_info><LABEL id=label_memery_info for=id_memery_info alt="如选择“记住密码”登陆,以后将自动登陆本站!">记住密码</LABEL></FORM></TABLE></TD></TR></TBODY></TABLE>
<table border=0><tr><td height=3></td></tr></table></td>
<tr valign=top>
<td><table cellspacing=1 cellpadding=2 class=Table_Home>
<TR>
<TD class=td0_Home>德育之窗</TD></TR>
<tr class=bg_Home><td align=center>
<tr height=20><td><B>·</B><a href='Article/view.asp?id=71' style="color:FF0000;" title='德育之窗标题:凯里一中德育简报[ 2009 ] 第二期 总18期
发 布 人:klyzren
浏览次数:180 人次
整理时间:2009-4-27 22:03:21' target=_blank> 凯里一中德育简报[ 2009 ] 第二...</a></td></tr>
<tr height=20><td><B>·</B><a href='Article/view.asp?id=64' style="color:0000FF;" title='德育之窗标题:凯里一中德育简报[ 2009 ] 第一期 总17期
发 布 人:klyzren
浏览次数:261 人次
整理时间:2009-4-10 13:10:56' target=_blank> 凯里一中德育简报[ 2009 ] 第一...</a></td></tr>
<tr height=20><td><B>·</B><a href='Article/view.asp?id=26' style="color:FF0000;" title='德育之窗标题:凯里一中校园文化
发 布 人:klyzren
浏览次数:1352 人次
整理时间:2008-10-6 21:33:11' target=_blank> 凯里一中校园文化</a></td></tr>
<tr height=20><td><B>·</B><a href='Article/view.asp?id=23' style="color:;" title='德育之窗标题:以学生为本构建新型的师生关系
发 布 人:klyzboy
浏览次数:736 人次
整理时间:2008-9-25 9:30:50' target=_blank> 以学生为本构建新型的师生关...</a></td></tr>
<tr height=20><td><B>·</B><a href='Article/view.asp?id=20' style="color:;" title='德育之窗标题:文以载道,以道育人
发 布 人:klyzboy
浏览次数:715 人次
整理时间:2008-9-24 21:59:51' target=_blank> 文以载道,以道育人</a></td></tr>
<tr height=20><td><B>·</B><a href='Article/view.asp?id=19' style="color:;" title='德育之窗标题:浅谈班主任工作中的德育教育
发 布 人:klyzboy
浏览次数:784 人次
整理时间:2008-9-24 21:54:46' target=_blank> 浅谈班主任工作中的德育教育</a></td></tr>
</td></tr>
</table>
<table border=0><tr><td height=3></td></tr></table></td>
</tr>
</table></td>
<td width='1%'></td>
<td width='47%'><table border=0 cellspacing=0 cellpadding=0 width='100%'>
<tr valign=top>
<td>
<table cellspacing=1 cellpadding=2 class=Table_Home>
<TR>
<TD class=td0_Home>凯里一中新闻</TD></TR>
<tr class=bg_Home><td align=center>
<table border=0 width='100%'><tr><td align=center>
<table border=0 width='100%'>
<tr>
<td>
<script type="text/javascript">
<!--
var swf_width='450'
var swf_height='282'
var files='/Upload/htmledit/2009516132544327.jpg|/Upload/htmledit/2009427215449568.jpg|/Upload/htmledit/200949173335244.jpg|/Upload/News/2008-12/2008122820595390801.jpg|/Upload/News/2008-12/2008121123323240865.jpg'
var links='News/view.asp?id=531|News/view.asp?id=507|News/view.asp?id=459|News/view.asp?id=405|News/view.asp?id=402'
var texts='学校举行各项文艺活动|“春蕾行动”暖学子|我校荣获凯里市第三届中小学生运动会高中组团体总分第...|凯里一中田径运动场落成典礼暨2008年运动会|凯里一中纪念改革开放30周年暨“一二.九”学生爱国运动...'
var TitleBgAlpha='70'
var TitleBgPosition='30'
var Tween='2'
var AutoPlayTime='120'
var WinOpen='_blank'
var TitleTextColor='0xFFFFFF'
var TitleBgColor='0x000000'
var BtnDefaultColor='0x000000'
var BtnOverColor='0x000033'
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ swf_width +'" height="'+ swf_height +'">');
document.write('<param name="movie" value="/images/small/index_news.swf"><param name="quality" value="high">');
document.write('<param name="menu" value="false"><param name=wmode value="opaque">');
document.write('<param name="FlashVars" value="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_title='+texts+'&TitleBgAlpha='+ TitleBgAlpha +'&TitleBgPosition='+ TitleBgPosition +'&Tween='+ Tween +'&AutoPlayTime='+ AutoPlayTime +'&WinOpen='+ WinOpen +'&TitleTextColor='+ TitleTextColor +'&TitleBgColor='+ TitleBgColor +'&BtnDefaultColor='+ BtnDefaultColor +'&BtnOverColor='+ BtnOverColor +'>');
document.write('<embed src="/images/small/index_news.swf" wmode="opaque" FlashVars="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_title='+texts+'&TitleBgAlpha='+ TitleBgAlpha +'&TitleBgPosition='+ TitleBgPosition +'&Tween='+ Tween +'&AutoPlayTime='+ AutoPlayTime +'&WinOpen='+ WinOpen +'&TitleTextColor='+ TitleTextColor +'&TitleBgColor='+ TitleBgColor +'&BtnDefaultColor='+ BtnDefaultColor +'&BtnOverColor='+ BtnOverColor +'& menu="false" quality="high" width="'+ swf_width +'" height="'+ swf_height +'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
document.write('</object>');
-->
</script>
</td></tr><tr>
<td>
<table border=0 width='100%'>
<tr align=center>
<td><table border=0 cellspacing=0 cellpadding=0 width='100%'><tr><td height=20><B>·</B><a href='News/view.asp?id=529' style="color:0000FF;" title='新闻标题:凯里一中足球特招考核成绩登记表
发 布 人:klyzren
浏览次数:146 人次
整理时间:2009-5-11 17:41:16' target=_blank>凯里一中足球特招考核成绩登...</a></tr></td></table></td>
<td><table border=0 cellspacing=0 cellpadding=0 width='100%'><tr><td height=20><B>·</B><a href='News/view.asp?id=526' style="color:0000FF;" title='新闻标题:致校友的一封信(校庆公告一)
发 布 人:klyzren
浏览次数:170 人次
整理时间:2009-5-6 20:58:36' target=_blank>致校友的一封信(校庆公告一...</a></tr></td></table></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr></table>
</td></tr>
</table>
<table border=0><tr><td height=3></td></tr></table>
</td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
</td>
<td width='1%'></td>
<td width='25%'>
<table border=0 cellspacing=0 cellpadding=0 width='100%'>
<tr valign=top>
<td><table cellspacing=1 cellpadding=2 class=Table_Home>
<TR>
<TD class=td0_Home>学校公告</TD></TR>
<tr class=bg_Home><td align=center>
<tr>
<td height=21><B>·</B><a href='/Common/Update.asp?Action=&id=7' target_blank title='公告标题:通知(关于天气)
发布时间:2008-12-23 12:49:02
点击浏览详细……'>通知(关于天气)</a></td>
</tr>
<tr>
<td height=21><B>·</B><a href='/Common/Update.asp?Action=&id=6' target_blank title='公告标题:致同学们的一封信
发布时间:2008-10-15 13:44:48
点击浏览详细……'>致同学们的一封信</a></td>
</tr>
<tr>
<td height=21><B>·</B><a href='/Common/Update.asp?Action=&id=4' target_blank title='公告标题:国庆放假通知
发布时间:2008-10-13 18:21:29
点击浏览详细……'>国庆放假通知</a></td>
</tr>
<tr>
<td height=21><B>·</B><a href='/Common/Update.asp?Action=&id=1' target_blank title='公告标题:凯里一中网站改版
发布时间:2008-8-4 15:48:26
点击浏览详细……'>凯里一中网站改版</a></td>
</tr>
</td></tr>
</table>
<table border=0><tr><td height=3></td></tr></table></td>
</tr>
<tr valign=top>
<td width='50%'><table cellspacing=1 cellpadding=2 class=Table_Home>
<TR>
<TD class=td0_Home>试题资源</TD></TR>
<tr class=bg_Home><td align=center>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=47' style="color:;" title='试题资源标题:竞赛数学训练题目
发 布 人:jswei85
浏览次数:33 人次
整理时间:2009-4-13 16:40:48' target=_blank> 竞赛数学训练题目</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=45' style="color:;" title='试题资源标题:高三历史中国古代史专题复习:中国古代民族关系和对外关系人教版知识精讲
发 布 人:klyzren
浏览次数:16 人次
整理时间:2009-3-27 15:34:52' target=_blank> 高三历史中国古代史专题复习:...</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=44' style="color:;" title='试题资源标题:高二语文《兰亭集序》北京版知识精讲
发 布 人:klyzren
浏览次数:18 人次
整理时间:2009-3-27 15:32:46' target=_blank> 高二语文《兰亭集序》北京版知...</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=43' style="color:;" title='试题资源标题:高中物理热学和电学部分演示实验flash动画(下)
发 布 人:klyzren
浏览次数:134 人次
整理时间:2008-10-12 22:57:07' target=_blank> 高中物理热学和电学部分演示实...</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=42' style="color:;" title='试题资源标题:高中物理热学和电学部分演示实验flash动画(上)
发 布 人:klyzren
浏览次数:76 人次
整理时间:2008-10-12 22:46:11' target=_blank> 高中物理热学和电学部分演示实...</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=40' style="color:;" title='试题资源标题:2008年会考模拟试卷
发 布 人:klpwb
浏览次数:83 人次
整理时间:2008-10-6 23:04:22' target=_blank> 2008年会考模拟试卷</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=38' style="color:;" title='试题资源标题:地理教学FLash--洋流的形成分布及影响
发 布 人:笑红尘
浏览次数:62 人次
整理时间:2008-9-25 13:29:41' target=_blank> 地理教学FLash--洋流的形成分布...</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=37' style="color:;" title='试题资源标题:地理教学演示Flash地形雨的形成
发 布 人:笑红尘
浏览次数:35 人次
整理时间:2008-9-25 13:26:51' target=_blank> 地理教学演示Flash地形雨的形成...</a></td></tr>
<tr height=20><td><B>·</B><a href='Down/view.asp?id=36' style="color:;" title='试题资源标题:地理教学演示Flash
发 布 人:笑红尘
浏览次数:68 人次
整理时间:2008-9-25 13:19:31' target=_blank> 地理教学演示Flash</a></td></tr>
</td></tr>
</table>
<table border=0><tr><td height=3></td></tr></table></td>
</tr>
</table>
</td>
</tr>
<tr valign=top>
<td height="18" colspan="3"><table cellspacing=1 cellpadding=4 class=table_Home>
<tr><td class=td_Home>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<tr>
<td class=dtd_Home>搜索导航</td>
</tr>
</table>
<tr><td class=bg_Home align=center>
<table border="0" cellspacing="1" cellpadding="4">
<form action='/Common/search.asp' method=get onsubmit="javascript:frm_submitonce(this);">
<tr>
<td><img border=0 src='/Skin/Skin_1/main/ico_search.gif' align=absmiddle> </td>
<td> <input type=text name=keyword value='' size=20 maxlength=20 title='多个关键字请用 空格 格开' class=bg_search></td>
<td>
<select name=sea_type>
<option value='news'>学校新闻</option>
<option value='article'>德育之窗</option>
<option value='nian'>辉煌的一中</option>
<option value='xiaoyou'>校友天地</option>
<option value='bumeng'>部门时讯</option>
<option value='zhaosheng'>招生录取</option>
<option value='jiaoyan'>教研教学</option>
<option value='shizill'>师资力量</option>
<option value='down'>试题资源</option>
<option value='video'>一中视频</option>
<option value='photo'>校园图库</option>
<option value='forum'>交流论坛</option>
</select></td>
<td> <input type=checkbox name=celerity value='yes'></td>
<td>快速搜索 </td>
<td valign=top><input type=submit class=btn value='搜 索'></td>
<td> <a href='/Common/search.asp?action=help' title='多功能搜索' style='cursor:help;'>搜索帮助?</a></td>
</tr>
</form>
</table>
</td></tr>
</table>
<table border=0><tr><td height=3></td></tr></table></td>
</tr>
</table>
<!---------------------------------登陆、新闻、文章、调查、公告、搜索 结束--------------------------------->
<!---------------------------------下载、商城 开始--------------------------------->
<!---------------------------------论坛、电影 开始--------------------------------->
<!---------------------------------酷站、市场、企业 开始--------------------------------->
<!---------------------------------酷站、市场、企业 结束--------------------------------->
<!---------------------------------图库、动画 开始--------------------------------->
<!---------------------------------图库、动画 结束--------------------------------->
<!---------------------------------友情连接 开始--------------------------------->
<!---------------------------------友情连接 结束--------------------------------->
</td>
</tr>
</table>
</td>
</tr>
</table>
<table border=0 width="965" cellspacing=0 cellpadding=0>
<tr>
<td width=* align=center class=bg>
<DIV id=headFind>
<DIV id=headForm><SPAN id=menuFind>
<DIV align=center>
<A class=h_td href="/Common/GuestBook.asp">网站留言</A> -
<A class=h_td href="/Common/Links.asp">友情链接</A> -
<A class=h_td href="/Common/Online.asp">与我在线</A> -
<a class=h_td href="mailto:[email protected]">校长邮箱</a> -
<A class=h_td href="#top">TOP</A> </DIV></SPAN></DIV></DIV>
<DIV id=headV2>
<DIV align=center>Copyright &; 2006-2009 <A href="http://www.klyz.cn" target=_blank><B><FONT face=Arial>www.</FONT><FONT face=Arial color=#cc3300>klyz</FONT><FONT face=Arial>.cn</FONT></B></A> All Rights Reserved.
<SCRIPT language=JavaScript src="http://s127.cnzz.com/stat.php?id=1056402&web_id=1056402&show=pic" charset=gb2312></SCRIPT>
</DIV>
<DIV align=center><FONT face=Verdana><FONT face=Verdana>校址:贵州省凯里市文化北路30号 邮 编:556000</FONT></DIV>
<DIV align=center>
<DIV align=center><FONT face=Verdana>联系电话:0855-8506108 传真:0855-8503668</FONT></DIV></FONT></DIV>
<DIV align=center><A href="http://www.klyz.cn" target=_blank>凯里一中版权所有</A> </DIV></DIV></td>
</tr>
</table>
</center>
</body>
</html>
F. 谁用过CC皮肤盒子,怎么样啊
可以放心使用,封号的几率很小,操作说明都有,注意点基本不会封号。举个例子,腾讯最擅长的封号手段是直接查看你的后台程序,只要看到有疑似外挂的软件在运行就会封号。cc盒子在使用的时候明显可以看到游戏运行后是关闭了的,而且cc网址是官方承认的,和TGP是一个性质的软件,至于cc网址弄出这个cc盒子,不敢说绝对不会封号,不过大可放心使用。注意点使用说明和版本更新就没问题。希望这些能帮到你
G. mfc skinplusplusu是开源的吗
首先,MFC本身就是开源的,绝大部分源码都可以在VC的安装目录找到,这是最规范的源码教程,也是进阶学习必看的代码。 其次,MFC和“漂亮界面”实在是很难挂钩。用MFC做漂亮界面确实是很困难的一件事,需要编写大量的代码。vckbase上有大量MFC代码...
H. direct3d 如何加载多个x文件
.......
当然能啦,你看看DXUT的源码,里边是不是有模型类?
你声明两个模型,分别加载两个不久OK了??
#pragma once
#include "AllocateHierarchy.h"
class CSkinMesh
{
private:
CAllocateHierarchy* m_pAlloc;
LPDIRECT3DDEVICE9 m_pd3dDevice;
LPD3DXFRAME m_pFrameRoot;
D3DXMATRIXA16* m_pBoneMatrices;
UINT m_NumBoneMatricesMax;
private:
HRESULT SetupBoneMatrixPointers( LPD3DXFRAME pFrame );
HRESULT SetupBoneMatrixPointersOnMesh( LPD3DXMESHCONTAINER pMeshContainerBase );
HRESULT LoadFromXFile(WCHAR* strFileName);
VOID UpdateFrameMatrices( LPD3DXFRAME pFrameBase, LPD3DXMATRIX pParentMatrix );
VOID DrawFrame(LPD3DXFRAME pFrame);
VOID DrawMeshContainer(LPD3DXMESHCONTAINER pMeshContainerBase, LPD3DXFRAME pFrameBase);
public:
D3DXVECTOR3 m_vObjectCenter;
float m_fObjectRadius;
BOOL m_bPlayAnim;
LPD3DXANIMATIONCONTROLLER m_pAnimController;
public:
HRESULT OnCreate(LPDIRECT3DDEVICE9 pD3DDevice, WCHAR* strFileName);
HRESULT Render(D3DXMATRIXA16* matWorld, float fElapsedAppTime);
HRESULT OnDestory();
public:
CSkinMesh();
virtual ~CSkinMesh();
};
//=============================================================================
// SkinMesh.cpp: 蒙皮网格模型类的实现
//=============================================================================
#include "dxstdafx.h"
#include "SkinMesh.h"
//--------------------------------------------------------------------
// Desc: 构造函数和析构函数 Construction/Destruction
//--------------------------------------------------------------------
CSkinMesh::CSkinMesh()
{
m_bPlayAnim = true;
m_pd3dDevice = NULL;
m_pAnimController = NULL;
m_pFrameRoot = NULL;
m_pBoneMatrices = NULL;
m_NumBoneMatricesMax = 0;
m_pAlloc = new CAllocateHierarchy();
}
//-----------------------------------------------------------------------------
// Desc: 构造函数和析构函数
//-----------------------------------------------------------------------------
CSkinMesh::~CSkinMesh()
{
D3DXFrameDestroy(m_pFrameRoot, m_pAlloc);
SAFE_RELEASE(m_pAnimController);
delete m_pAlloc;
}
//-----------------------------------------------------------------------------
// Desc:创建并加载蒙皮网格模型
//-----------------------------------------------------------------------------
HRESULT CSkinMesh::OnCreate(LPDIRECT3DDEVICE9 pD3DDevice, WCHAR *strFileName)
{
HRESULT hr;
m_pd3dDevice = pD3DDevice;
hr = LoadFromXFile(strFileName);
if(FAILED(hr))
return hr;
return S_OK;
}
//-----------------------------------------------------------------------------
// Desc: 从文件加载蒙皮网格模型
//-----------------------------------------------------------------------------
HRESULT CSkinMesh::LoadFromXFile(WCHAR *strFileName)
{
HRESULT hr;
//根据文件名, 从指定的路经查找文件
WCHAR strPath[MAX_PATH];
DXUTFindDXSDKMediaFileCch( strPath, sizeof(strPath) / sizeof(WCHAR), strFileName );
//从.X文件加载层次框架和动画数据
V_RETURN(D3DXLoadMeshHierarchyFromX(strPath, D3DXMESH_MANAGED, m_pd3dDevice,
m_pAlloc, NULL, &m_pFrameRoot, &m_pAnimController));
//建立各级框架的组合变换矩阵
V_RETURN(SetupBoneMatrixPointers(m_pFrameRoot));
//计算框架对象的边界球
hr = (m_pFrameRoot, &m_vObjectCenter, &m_fObjectRadius);
if (FAILED(hr))
return hr;
return S_OK;
}
//--------------------------------------------------------------------------
// Desc: 仅在LoadFromXFile中调用。调用子函数SetupBoneMatrixPointersOnMesh()
// 安置好各级框架(实际上是各个骨骼)的组合变换矩阵。
// 注意: 在这里其实并没有计算出各个骨骼的组合变换矩阵,只是为每个矩阵开辟了相应
// 的存储空间,真正的计算是在函数CSkinMesh::UpdateFrameMatrices()中完成的。
//---------------------------------------------------------------------------
HRESULT CSkinMesh::SetupBoneMatrixPointers(LPD3DXFRAME pFrame)
{
HRESULT hr;
if (pFrame->pMeshContainer != NULL)
{
hr = SetupBoneMatrixPointersOnMesh(pFrame->pMeshContainer); //调用子函数
if (FAILED(hr))
return hr;
}
if (pFrame->pFrameSibling != NULL)
{
hr = SetupBoneMatrixPointers(pFrame->pFrameSibling); //递归
if (FAILED(hr))
return hr;
}
if (pFrame->pFrameFirstChild != NULL)
{
hr = SetupBoneMatrixPointers(pFrame->pFrameFirstChild); //递归
if (FAILED(hr))
return hr;
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Desc: 仅在SetupBoneMatrixPointers()中被调用,设置每个骨骼的组合变换矩阵
//-----------------------------------------------------------------------------
HRESULT CSkinMesh::SetupBoneMatrixPointersOnMesh(LPD3DXMESHCONTAINER pMeshContainerBase)
{
UINT iBone, cBones; // cBones表示骨骼数量,iBone表示循环变量
D3DXFRAME_DERIVED *pFrame;
//先强制转为扩展型
D3DXMESHCONTAINER_DERIVED *pMeshContainer = (D3DXMESHCONTAINER_DERIVED*)pMeshContainerBase;
// 只有蒙皮网格模型才有骨骼矩阵
if (pMeshContainer->pSkinInfo != NULL)
{
//得到骨骼数量
cBones = pMeshContainer->pSkinInfo->GetNumBones();
//申请存储骨骼矩阵的空间
pMeshContainer->ppBoneMatrixPtrs = new D3DXMATRIX*[cBones];
if (pMeshContainer->ppBoneMatrixPtrs == NULL)
return E_OUTOFMEMORY;
for (iBone = 0; iBone < cBones; iBone++)
{
//找到框架
pFrame = (D3DXFRAME_DERIVED*)D3DXFrameFind(m_pFrameRoot, pMeshContainer->pSkinInfo->GetBoneName(iBone));
if (pFrame == NULL)
return E_FAIL;
//将框架的组合变换矩阵赋值给对应的骨骼的复合变换矩阵
pMeshContainer->ppBoneMatrixPtrs[iBone] = &pFrame->CombinedTransformationMatrix;
}
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Desc: 更新框架并绘制框架
// (1)用m_pAnimController->AdvanceTime()设置时间,m_pAnimController是
// 类LPD3DXANIMATIONCONTROLLER的一个对象
// (2)用函数CSkinMesh::UpdateFrameMatrices()更新框架
// (3)用函数CSkinMesh::DrawFrame()绘制框架
//-----------------------------------------------------------------------------
HRESULT CSkinMesh::Render(D3DXMATRIXA16* matWorld, float fElapsedAppTime)
{
if( 0.0f == fElapsedAppTime )
return S_OK;
if (m_bPlayAnim && m_pAnimController != NULL)
m_pAnimController->AdvanceTime( fElapsedAppTime, NULL );
UpdateFrameMatrices(m_pFrameRoot, matWorld); //调用子函数
DrawFrame(m_pFrameRoot); //调用子函数
return S_OK;
}
//-----------------------------------------------------------------------------
// Desc:计算各个骨骼的组合变换矩阵
//-----------------------------------------------------------------------------
VOID CSkinMesh::UpdateFrameMatrices(LPD3DXFRAME pFrameBase, LPD3DXMATRIX pParentMatrix)
{
D3DXFRAME_DERIVED *pFrame = (D3DXFRAME_DERIVED*)pFrameBase;
if (pParentMatrix != NULL)
D3DXMatrixMultiply(&pFrame->CombinedTransformationMatrix, &pFrame->TransformationMatrix, pParentMatrix);
else
pFrame->CombinedTransformationMatrix = pFrame->TransformationMatrix;
if (pFrame->pFrameSibling != NULL)
{
UpdateFrameMatrices(pFrame->pFrameSibling, pParentMatrix);
}
if (pFrame->pFrameFirstChild != NULL)
{
UpdateFrameMatrices(pFrame->pFrameFirstChild, &pFrame->CombinedTransformationMatrix);
}
}
//-----------------------------------------------------------------------------
// Desc: 绘制框架.
// 先用CSkinMesh::DrawMeshContainer()绘制一个LPD3DXMESHCONTAINER类型
// 的变量pMeshContainer.然后递归绘制同一级框架和子一级框架。
//-----------------------------------------------------------------------------
VOID CSkinMesh::DrawFrame(LPD3DXFRAME pFrame)
{
LPD3DXMESHCONTAINER pMeshContainer;
pMeshContainer = pFrame->pMeshContainer;
while (pMeshContainer != NULL)
{
DrawMeshContainer(pMeshContainer, pFrame); //调用子函数
pMeshContainer = pMeshContainer->pNextMeshContainer;
}
if (pFrame->pFrameSibling != NULL)
{
DrawFrame(pFrame->pFrameSibling);
}
if (pFrame->pFrameFirstChild != NULL)
{
DrawFrame(pFrame->pFrameFirstChild);
}
}
//-----------------------------------------------------------------------------
// Name: DrawMeshContainer()
// Desc: Called to render a mesh in the hierarchy
//-----------------------------------------------------------------------------
VOID CSkinMesh::DrawMeshContainer(LPD3DXMESHCONTAINER pMeshContainerBase, LPD3DXFRAME pFrameBase)
{
D3DXMESHCONTAINER_DERIVED *pMeshContainer = (D3DXMESHCONTAINER_DERIVED*)pMeshContainerBase;
D3DXFRAME_DERIVED *pFrame = (D3DXFRAME_DERIVED*)pFrameBase;
UINT iMaterial;
UINT iAttrib;
LPD3DXBONECOMBINATION pBoneComb;
UINT iMatrixIndex;
UINT iPaletteEntry;
D3DXMATRIXA16 matTemp;
if (pMeshContainer->pSkinInfo != NULL) //如果是蒙皮网格
{
//检查是否使用软件顶点混合
HRESULT hr;
//如果当前硬件不支持, 则使用软件顶点处理
if (pMeshContainer->UseSoftwareVP)
V( m_pd3dDevice->SetSoftwareVertexProcessing(true) );
//启用索引顶点混合
if (pMeshContainer->NumInfl)
m_pd3dDevice->SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, true);
//根据影响当前网格模型顶点的骨骼数量, 设置需要使用的混合矩阵索引数量
if (pMeshContainer->NumInfl == 1)
m_pd3dDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_0WEIGHTS);
else if(pMeshContainer->NumInfl == 2)
m_pd3dDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_1WEIGHTS);
else if(pMeshContainer->NumInfl == 3)
m_pd3dDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_2WEIGHTS);
else
m_pd3dDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_3WEIGHTS);
//逐个子网格渲染进行渲染
pBoneComb = reinterpret_cast<LPD3DXBONECOMBINATION>(pMeshContainer->pBoneCombinationBuf->GetBufferPointer());
for (iAttrib = 0; iAttrib < pMeshContainer->NumAttributeGroups; iAttrib++)
{
//设置混合矩阵
for (iPaletteEntry = 0; iPaletteEntry < pMeshContainer->NumPaletteEntries; ++iPaletteEntry)
{
iMatrixIndex = pBoneComb[iAttrib].BoneId[iPaletteEntry];
if (iMatrixIndex != UINT_MAX)
{
D3DXMatrixMultiply( &matTemp, &pMeshContainer->pBoneOffsetMatrices[iMatrixIndex],
pMeshContainer->ppBoneMatrixPtrs[iMatrixIndex] );
m_pd3dDevice->SetTransform( D3DTS_WORLDMATRIX( iPaletteEntry ), &matTemp );
}
}
//设置材质和纹理
m_pd3dDevice->SetMaterial( &pMeshContainer->pMaterials[pBoneComb[iAttrib].AttribId].MatD3D );
m_pd3dDevice->SetTexture( 0, pMeshContainer->ppTextures[pBoneComb[iAttrib].AttribId] );
//渲染子网格模型
pMeshContainer->MeshData.pMesh->DrawSubset( iAttrib );
}
//恢复顶点混合状态
m_pd3dDevice->SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
m_pd3dDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_DISABLE);
//恢复顶点处理模式
if (pMeshContainer->UseSoftwareVP)
V( m_pd3dDevice->SetSoftwareVertexProcessing(false));
}
else // 如果只是普通网格,在添加材质后就绘制它。
{
m_pd3dDevice->SetTransform(D3DTS_WORLD, &pFrame->CombinedTransformationMatrix);
for (iMaterial = 0; iMaterial < pMeshContainer->NumMaterials; iMaterial++)
{
m_pd3dDevice->SetMaterial( &pMeshContainer->pMaterials[iMaterial].MatD3D );
m_pd3dDevice->SetTexture( 0, pMeshContainer->ppTextures[iMaterial] );
pMeshContainer->MeshData.pMesh->DrawSubset(iMaterial);
}
}
}
//-----------------------------------------------------------------------------
// Desc: 释放蒙皮网格模型
//-----------------------------------------------------------------------------
HRESULT CSkinMesh::OnDestory()
{
delete this;
return S_OK;
}
//=============================================================================
//Desc: AllocateHierarchy.h
//=============================================================================
#pragma once
//-----------------------------------------------------------------------------
// Desc: 继承自DXDXFRAME结构的结构
//-----------------------------------------------------------------------------
struct D3DXFRAME_DERIVED: public D3DXFRAME
{
D3DXMATRIXA16 CombinedTransformationMatrix;
};
//-----------------------------------------------------------------------------
// Desc: 继承自D3DXMESHCONTAINER结构的结构
//-----------------------------------------------------------------------------
struct D3DXMESHCONTAINER_DERIVED: public D3DXMESHCONTAINER
{
LPDIRECT3DTEXTURE9* ppTextures; //纹理数组
LPD3DXMESH pOrigMesh; //原始网格
DWORD NumInfl; //每个顶点最多受多少骨骼的影响
DWORD NumAttributeGroups; //属性组数量,即子网格数量
LPD3DXBUFFER pBoneCombinationBuf; //骨骼结合表
D3DXMATRIX** ppBoneMatrixPtrs; //存放骨骼的组合变换矩阵
D3DXMATRIX* pBoneOffsetMatrices; //存放骨骼的初始变换矩阵
DWORD NumPaletteEntries; //骨骼数量上限
bool UseSoftwareVP; //标识是否使用软件顶点处理
};
//-----------------------------------------------------------------------------
// Desc: 该类用来从.X文件加载框架层次和网格模型数据
//-----------------------------------------------------------------------------
class CAllocateHierarchy: public ID3DXAllocateHierarchy
{
private:
HRESULT GenerateSkinnedMesh(D3DXMESHCONTAINER_DERIVED *pMeshContainer);
HRESULT AllocateName( LPCSTR Name, LPSTR *pNewName );
void RemovePathFromFileName(LPSTR fullPath, LPWSTR fileName);
public:
STDMETHOD(CreateFrame)(THIS_ LPCSTR Name, LPD3DXFRAME *ppNewFrame);
STDMETHOD(CreateMeshContainer)( THIS_ LPCSTR Name,
CONST D3DXMESHDATA* pMeshData,
CONST D3DXMATERIAL* pMaterials,
CONST D3DXEFFECTINSTANCE* pEffectInstances,
DWORD NumMaterials,
CONST DWORD * pAdjacency,
LPD3DXSKININFO pSkinInfo,
LPD3DXMESHCONTAINER *ppNewMeshContainer);
STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree);
STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerBase);
};
//=============================================================================
//Desc: AllocateHierarchy.cpp
//=============================================================================
#include "dxstdafx.h"
#include "AllocateHierarchy.h"
#pragma warning(disable: 4995)
//-----------------------------------------------------------------------------
// Desc:
//-----------------------------------------------------------------------------
HRESULT CAllocateHierarchy::AllocateName( LPCSTR Name, LPSTR *pNewName )
{
UINT cbLength;
if( Name != NULL )
{
cbLength = (UINT)strlen(Name) + 1;
*pNewName = new CHAR[cbLength];
if (*pNewName == NULL)
return E_OUTOFMEMORY;
memcpy( *pNewName, Name, cbLength*sizeof(CHAR) );
}
else
{
*pNewName = NULL;
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Desc: 从绝对路径中提取文件名
//-----------------------------------------------------------------------------
void CAllocateHierarchy::RemovePathFromFileName(LPSTR fullPath, LPWSTR fileName)
{
//先将fullPath的类型变换为LPWSTR
WCHAR wszBuf[MAX_PATH];
MultiByteToWideChar( CP_ACP, 0, fullPath, -1, wszBuf, MAX_PATH );
wszBuf[MAX_PATH-1] = L'\0';
WCHAR* wszFullPath = wszBuf;
//从绝对路径中提取文件名
LPWSTR pch=wcsrchr(wszFullPath,'\\');
if (pch)
lstrcpy(fileName, ++pch);
else
lstrcpy(fileName, wszFullPath);
}
//-----------------------------------------------------------------------------
//Desc: 生成蒙皮网格模型(含有每个顶点的混合权重、索引和一个骨骼组合表)
//-----------------------------------------------------------------------------
HRESULT CAllocateHierarchy::GenerateSkinnedMesh(D3DXMESHCONTAINER_DERIVED *pMeshContainer)
{
HRESULT hr = S_OK;
if (pMeshContainer->pSkinInfo == NULL)
return hr;
SAFE_RELEASE( pMeshContainer->MeshData.pMesh );
SAFE_RELEASE( pMeshContainer->pBoneCombinationBuf );
//获取网格模型索引缓冲区
LPDIRECT3DINDEXBUFFER9 pIB;
if (FAILED(hr = pMeshContainer->pOrigMesh->GetIndexBuffer(&pIB)))
return E_FAIL;
//获取影响一个面(三角形)的矩阵数量
DWORD NumMaxFaceInfl;
hr = pMeshContainer->pSkinInfo->GetMaxFaceInfluences(pIB, pMeshContainer->pOrigMesh->GetNumFaces(), &NumMaxFaceInfl);
pIB->Release();
if (FAILED(hr))
return E_FAIL;
//影响一个面的矩阵数量不会超过12
NumMaxFaceInfl = min(NumMaxFaceInfl, 12);
//获取当前设备的能力
IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
D3DCAPS9 d3dCaps;
pd3dDevice->GetDeviceCaps( &d3dCaps );
//根据当前设备能力和NumMaxFaceInfl, 设置在进行骨骼蒙皮调色时使用骨骼数量的上限
if( (d3dCaps.MaxVertexBlendMatrixIndex+1)/2 < NumMaxFaceInfl )
{
pMeshContainer->NumPaletteEntries = min(256, pMeshContainer->pSkinInfo->GetNumBones());
pMeshContainer->UseSoftwareVP = true;
}
else
{
pMeshContainer->NumPaletteEntries = min( (d3dCaps.MaxVertexBlendMatrixIndex+1) / 2,
pMeshContainer->pSkinInfo->GetNumBones() );
pMeshContainer->UseSoftwareVP = false;
}
//生成蒙皮网格模型
hr = pMeshContainer->pSkinInfo->ConvertToIndexedBlendedMesh
( pMeshContainer->pOrigMesh,
0,
pMeshContainer->NumPaletteEntries,
pMeshContainer->pAdjacency,
NULL, NULL, NULL,
&pMeshContainer->NumInfl,
&pMeshContainer->NumAttributeGroups,
&pMeshContainer->pBoneCombinationBuf,
&pMeshContainer->MeshData.pMesh);
return hr;
}
//-----------------------------------------------------------------------------
// Desc: 创建框架, 仅仅是分配内存和初始化,还没有对其成员赋予合适的值
//-----------------------------------------------------------------------------
HRESULT CAllocateHierarchy::CreateFrame(LPCSTR Name, LPD3DXFRAME *ppNewFrame)
{
HRESULT hr = S_OK;
D3DXFRAME_DERIVED *pFrame;
*ppNewFrame = NULL;
pFrame = new D3DXFRAME_DERIVED; //创建框架结构对象
if (pFrame == NULL)
{
return E_OUTOFMEMORY;
}
//为框架指定名称
hr = AllocateName(Name, (LPSTR*)&pFrame->Name);
if (FAILED(hr))
{
delete pFrame;
return hr;
}
//初始化D3DXFRAME_DERIVED结构其它成员变量
D3DXMatrixIdentity(&pFrame->TransformationMatrix);
D3DXMatrixIdentity(&pFrame->CombinedTransformationMatrix);
pFrame->pMeshContainer = NULL;
pFrame->pFrameSibling = NULL;
pFrame->pFrameFirstChild = NULL;
*ppNewFrame = pFrame;
pFrame = NULL;
return hr;
}
太多了,自己回去看。
I. 问:这是什么播放器,很简洁。在哪里可以找到。
2.至于解码那个,其实系统自带的是能打开wmv和avi等视频文件,如果要打开rm或者rmvb等文件就需要解码了,格式不同......
也就是说 你下载解码器用系统自带的播放器可以播放 用自己做的也可以播放
3.界面啊 可以用vcskin控件 皮肤文件很多的
4.要注意的其实我用播放器个人而言就是不要太吃内存和CPU 资源占用尽量小点,主要你自己用方便自己最重要。。
5.至于这点其实留着源码等自己写出来看什么地方不足完全可以修改,没什么特意留什么空间的。。。
6.应该不需要了,不过我也没弄过,不好说。
J. 开源cms系统那个好要开源的
wordpress这个开源cms是不错的啊,很好用的,而且还是免费的。