pttoolԴ?源码?
一、程序窗口设计步骤
(1)用AppWizard生成一个名为Clock的源码单文档(SDI)程序框架。为了简化应用程序,源码在第四步时去掉Docking toolbar和Initial status bar选择项(不删除也可),源码其他各选项均可用缺省设置。源码ip监控定位源码
(2)编辑项目的源码菜单资源,在主框架窗口的源码主菜单(IDR_MAINFRAME)中添加一个名为“时钟控制”的下拉菜单。在“时钟控制”菜单中添加三个菜单选项“启动时钟”、源码“停止时钟”和“时间设置”。源码并在菜单属性项中设定“启动时钟”菜单的源码ID标号为ID_START,“停止时钟”菜单的源码ID标号为ID_STOP,“时间设置”菜单的源码ID标号为ID_SETTIME。为了简化菜单,源码可删除系统原有的源码“文件”、“编辑”菜单项。
(3)利用ClassWizard为视图类添加菜单命令处理函数。进入ClassWizard的Message Maps选项卡,选择Class Name项为CClockView类,在Object IDs列表框中分别选择新添加的菜单选项的ID,在Messages列表框中选择COMMAND,按下Add Function按钮添加成员函数。ClassWizard会为“启动时钟”、“停止时钟”和“时间设置”菜单选项添加相应的消息响应函数OnStart ( )、OnStop ( )和OnSettime ( )。
(4)利用ClassWizard为视图类添加定时器和鼠标消息处理函数。进入ClassWizard的Message Maps选项卡,选择Class Name项为 CClockView类,在Messages列表框中分别选择定时器消息WM_TIMER和鼠标消息WM_LBUTIONDOWN,按下Add Function按钮添加成员函数。ClassWizard会添加相应的定时器和鼠标消息响应函数OnTimer和OnLButtonDown。
(5)使用Developer Studio菜单的Insert / Resource…选项调出Insert Source对话框,为项目添加新的对话框资源。在对话框属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、月、vuex源码学习教程日、时、分、秒的编辑框控件。
通过控件属性,将年、月、日、时、分、秒等编辑控件的ID改为IDC_YEAR、IDC_MONTH、IDC_DAY、IDC_HOUR、IDC_MINUTE和IDC_SECOND。
(6)利用ClassWizard自动建立对话框类。进入ClassWizard后,弹出一个对话框询问是否要为该对话框模板建立类。按下“OK”按钮,会弹出New Class对话框,在Name栏填写对话框类的名称CSetTimeDlg后按“OK”按钮,即可为对话框创建一个对应的类。
(7) 利用ClassWizard为对话框类添加与各控件对应的数据成员。选择MemberVariables选项卡,确保Class Name项为对话框CSetTimeDlg类,然后在选项卡下方的窗口中选择各控件的ID并按下“Add Variable…”按钮,为其添加对应成员变量。
控制ID
变量类型
变量名
变量范围
IDC_YEAR
int
m_Year
0~
IDC_MONTH
int
m_Month
1~
IDC_DAY
int
m_Day
1~
IDC_HOUR
int
m_Hour
0~
IDC_MINUTE
int
m_Minute
0~
IDC_SECOND
int
m_Second
0~
最后一列为变量取值范围。
(8)编辑工程的图标资源,在Resource View选项窗口中修改Icon结点所包含的主框架图标(IDR_MAINFRAME)。此步非必须。
(9)完成以上工作后,即可修改程序框架,添加必要的代码。
二、主要源代码:
按以下步骤向视图类(CClockView)添加下列数据成员及成员函数。丹麦离冰岛源码
(1) 添加表示年、月、日、时、分、秒的变量。
int year;
int month;
int day;
int hour;
int minute;
int second;
(2) 添加秒表的计数变量。
int watch;
(3) 添加时钟的画笔及画刷变量。
CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔
CBrush m_MarkBrush; // 表盘标记的画刷
(4) 添加时钟控制变量。
CPoint m_Center; // 表的中心
double m_Radius; // 表的半径
CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置
CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置
CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置
(5) 添加秒表的两个按钮位置变量。
CRect m_WatchStart;
CRect m_WatchStop;
(6) 添加两个函数,计算时钟各指针位置。
void SetClock (int hour, int minute, int second);
CPoint GetPoint (int nLenth, int nValue);
(7) 在视图类构造函数中增加初始化语句,之前加上头文件
#include<ctime>
CClockView::CClockView()
{
// 设定时间
char time[];
SYSTEMTIME st;
GetLocalTime(&st);
day = st.wDay;
hour = st.wHour;
minute = st.wMinute;
month = st.wMonth;
second = st.wSecond;
year = st.wYear;
// 设定画笔/画刷
m_HouPen. CreatePen (PS_SOLID, 5, RGB (, 0, 0) ); // 时针画笔
m_MinPen. CreatePen (PS_SOLID, 3, RGB (0, 0, ) ); // 分针画笔
m_SecPen. CreatePen (PS_SOLID, 1, RGB (0, 0, 0) ); // 秒针画笔
m_MarkBrush. CreateSolidBrush (RGB (, , 0) );
// 设定表心位置
m_Center. x = ;
m_Center. y = ;
// 设定时钟半径
m_Radius = ;
// 计算指针位置
SetClock (hour, minute, second);
// 设定秒表计数器及按钮位置
watch = 0;
m_WatchStart = CRect (, , , ); // 启动钮
m_WatchStop = CRect (, , , ); // 停止钮
}
编写指针位置计算函数SetClock和GetPoint。首先在ClockView. cpp文件头部添加下面两行代码,以便进行数学计算。
#include "math.h"
#define PI 3.
然后添加下列代码:
//计算各个指针位置的函数
void CClockView::SetClock(int hour, int minute, int second)
{
hour=hour*5;
hour=hour+minute/;
// 保存时针原位置
m_OldHour [0] = m_Hour[0];
m_OldHour [1] = m_Hour[1];
// 计算时针当前位置
m_Hour[0]= GetPoint(int(m_Radius/2),hour);
m_Hour[1]= GetPoint(7,hour + );
// 保存分针原位置
m_OldMin[0]= m_Minute[0];
m_OldMin[1]= m_Minute[1];
// 计算分针当前位置
m_Minute[0]=GetPoint(int(m_Radius*7/), minute);
m_Minute[1]=GetPoint(, minute+);
// 保存秒针原位置
m_OldSec [0] = m_Second [0];
m_OldSec [1] = m_Second [1];
// 计算秒针当前位置
m_Second [0]= GetPoint (int(m_Radius * 8/), second);
m_Second [1] = GetPoint (, second + );
}
// 计算以表心为原点的指针的端点位置
CPoint CClockView ::GetPoint (int nLenth, int nValue)
{
CPoint p;
double angle = nValue* PI /-PI/2;
p.x = m_Center.x + (int) (nLenth * cos(angle));
p.y = m_Center.y + (int) (nLenth * sin(angle));
return p;
}
绘制表盘上的标记、时针、分针和秒针,并显示数字时钟及秒表,在OnDraw函数中添加下面代码:
void CClockView::OnDraw(CDC* pDC)
{
CClockDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// 绘制表盘上的标记
pDC->SelectObject(m_MarkBrush);
int k=0;
for(int i=0;i<;i++)
{
CPoint pt=GetPoint(,i);
if (i%5==0)
{
//显示表盘上的数字
CString str[]={ "","1","2","3","4","5","6","7","8","9","",""};
pDC->TextOut(pt.x-5,pt.y-5,str[k]);
k++;
}else
{
//显示数字之间的圆圈
pDC->Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);
}
}
// 画时针
pDC->SelectObject (m_HouPen);
if (m_OldHour[0]!= m_Hour[0])
{
// 用白色覆盖原位置时针
pDC->SetROP2(R2_WHITE);
pDC->MoveTo(m_OldHour [0] );
pDC->LineTo(m_OldHour [1] );
pDC->SetROP2(R2_COPYPEN);
//时针绘制
pDC->MoveTo(m_Hour[0]);
pDC->LineTo(m_Hour[1]);
}
else
{
// 时针绘制
pDC->MoveTo(m_Hour[0]);
pDC->LineTo(m_Hour[1]);
}
// 画分针
pDC->SelectObject (m_MinPen);
if (m_OldMin[0]!=m_Minute[0])
{
// 用白色覆盖原位置分针
pDC->SetROP2(R2_WHITE);
pDC->MoveTo(m_OldMin[0]);
pDC->LineTo(m_OldMin[1]);
pDC->SetROP2(R2_COPYPEN);
// 分针绘制
pDC->MoveTo(m_Minute[0]);
pDC->LineTo(m_Minute[1]);
}
else
{
// 分针绘制
pDC->MoveTo(m_Minute[0]);
pDC->LineTo(m_Minute[1]);
}
// 用白色覆盖原位置秒针
pDC->SelectObject(m_SecPen);
pDC->SetROP2(R2_WHITE);
pDC->MoveTo(m_OldSec[0]);
pDC->LineTo(m_OldSec[1]);
pDC->SetROP2(R2_COPYPEN);
// 秒针绘制
pDC->MoveTo(m_Second[0]);
pDC->LineTo(m_Second[1]);
// 数字时钟显示
pDC->SelectStockObject(WHITE_BRUSH);
pDC->Rectangle(,,,);
pDC->TextOut(,,"当前时间");
CString m_Date,m_Time;
m_Date.Format ("% 4d年%4d月%4d日",year,month,day);
pDC->TextOut(,,m_Date);
m_Time.Format("%4d点%4d分%4d秒",hour,minute,second);
pDC->TextOut(,,m_Time);
// 秒表显示
pDC->Rectangle(,,,);
pDC->TextOut(,,"秒 表");
int minSec= watch%;
int Sec=(watch/)%;
int Min=(watch/)/;
m_Time.Format("% d: % d: % d",Min,Sec,minSec);
pDC->TextOut(,,m_Time);
pDC->Rectangle(&m_WatchStart);
pDC->Rectangle(&m_WatchStop);
pDC->TextOut(m_WatchStart.left + ,m_WatchStart.top + 5,"启动");
pDC->TextOut(m_WatchStop.left + ,m_WatchStop.top + 5,"停止");
}
请注意将表示时间的整数转换为CString字符串类型的方法以及秒表的显示方法。另外,watch计数器以1/秒为计数单位,每达到则秒数加1。
按照下列步骤增加时钟控制代码:
修改Onstart和OnStop函数,设置时钟运动消息。按比正常时钟快倍的假定,ms产生一个消息。本程序采用和正常时间同步,即ms产生一个消息, 其代码为:
void CClockView::OnStart()
{
SetTimer (1, , NULL);
}
void CClockView::OnStop()
{
KillTimer (1);
}
修改OnTimer函数,正确计算并处理年、月、日、时、分、微信生鲜源码秒等变量的联动变化 ,其代码为:
void CClockView::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1)
{
second++; // 秒增加
if (second>)
{
second=0;
minute++; // 分增加
}
if (minute>)
{
minute= 0;
hour++; // 小时增加
}
if (hour>)
{
hour=0;
day++; // 日增加
}
switch(month)
{
case 1: // 大月
case 3:
case 5:
case 7:
case 8:
case :
case :
if (day>)
{
day= 1;
month++; // 月增加
}
break;
case 4: // 小月
case 6:
case 9:
case :
if (day>)
{
day=1;
month++; // 月增加
}
break;
case 2:
if (year%4 ==0 && day>) // 润二月
{
day=1;
month++; // 月增加
}
if (year%4!=0 && day>) // 二月
{
day=1;
month++;
}
break;
}
if (month > )
{
// 年增加
year++;
month=1;
}
SetClock (hour, minute, second);
Invalidate (false);
}
// 秒表定时器消息处理
if (nIDEvent == 2)
{
watch++;
Invalidate (false);
}
CView::OnTimer(nIDEvent);
}
添加时间设置对话框代码。
首先在ClockView. cpp文件头部添加下列语句:
#include “SetTimeDlg. h”
在时间设定对话框类的构造函数中,做如下修改,将初始日期设为当前时间,之前要加上头文件
#include<ctime>
CSetTimeDlg::CSetTimeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetTimeDlg::IDD, pParent)
{
//||AFX_DATA_INIT(CSetTimeDlg)
char time[];
SYSTEMTIME st;
GetLocalTime(&st);
m_Day = st.wDay;
m_Hour = st.wHour;
m_Minute = st.wMinute;
m_Month = st.wMonth;
m_Second = st.wSecond;
m_Year = st.wYear;// ||AFX_DATA_INIT
}
最后,在OnSettime函数中添加代码如下:
void CClockView::OnSettime()
{
CSetTimeDlg SetDlg;
if (SetDlg.DoModal ()==IDOK)
{
year=SetDlg.m_Year;
month= SetDlg.m_Month;
day= SetDlg.m_Day;
hour=SetDlg.m_Hour;
minute=SetDlg.m_Minute;
second=SetDlg.m_Second;
}
// 计算各指针位置
SetClock (hour,minute,second);
Invalidate (true);
}
按以下步骤设计秒表控制程序:
在OnLButtonDown函数中增加下列内容,以便响应单击秒表启动、停止框所发出的消息:
void CClockView::OnLButtonDown(UINT nFlags, CPoint point)
{
if (m_WatchStart.PtInRect(point))
{
watch=0;
SetTimer(2,,NULL);
}
if (m_WatchStop.PtInRect(point))
{
KillTimer (2);
}
CView::OnLButtonDown(nFlags, point);
}
编译,连接,运行程序。
运行结果:
FCKeditorå¦ä½ä½¿ç¨
FCKEDITOR使ç¨è¯´æ-- :ä¸ãFCKEDITORç±»åè:
æé å¨:
FCKeditor( instanceName[, width, height, toolbarSet, value] )
instanceName:ç¼è¾å¨çå¯ä¸å称(ç¸å½äºID)
WIDTH:宽度
HEIGHT:é«åº¦
toolbarSet:å·¥å ·æ¡éåçå称
value:ç¼è¾å¨åå§åå 容
å±æ§:
instanceName:ç¼è¾å¨å®ä¾å
width:宽度,é»è®¤å¼ä¸º%
height:é«åº¦,é»è®¤å¼æ¯
ToolbarSet:å·¥å ·éå称,åèFCKCONFIG.JS,é»è®¤å¼æ¯Default
value:åå§åç¼è¾å¨çHTML代ç ,é»è®¤å¼ä¸ºç©º
BasePath:ç¼è¾å¨çåºè·¯å¾,é»è®¤ä¸º/Fckeditor/æ件夹,注æ,å°½éä¸è¦ä½¿ç¨ç¸å¯¹è·¯å¾.æ好è½ç¨ç¸å¯¹äºç«ç¹æ ¹è·¯å¾ç表示æ¹æ³,è¦ä»¥/ç»å°¾
CheckBrowser:æ¯å¦å¨æ¾ç¤ºç¼è¾å¨åæ£æ¥æµè§å¨å ¼å®¹æ§,é»è®¤ä¸ºtrue
DisplayErrors:æ¯å¦æ¾ç¤ºæ示é误,é»ä¸ºtrue;
éå:
Config[Key]=value;
è¿ä¸ªéåç¨äºæ´æ¹é ç½®ä¸æä¸é¡¹çå¼,å¦
oFckeditor.Config["DefaultLanguage"]="pt-br";
æ¹æ³:
Create() 建ç«å¹¶è¾åºç¼è¾å¨
RepaceTextArea(TextAreaName) ç¨ç¼è¾å¨æ¥æ¿æ¢å¯¹åºçææ¬æ¡
äºãé ç½®FCKEDITOR
主é ç½®æ件å为Fckconfig.js
FCKEDITORæä¾äºä¸å¥ç¨äºå®å¶å ¶å¤è§,ç¹æ§åè¡ä¸ºç设置é.ä½ æ¢å¯ä»¥ç¼è¾ä¸»é ç½®æ件,ä¹å¯ä»¥èªå·±å®ä¹åç¬çé ç½®æ件.é ç½®æ件使ç¨JAVASCRIPTè¯æ³.
ä¿®æ¹å,å¨å»ºç«ç¼è¾å¨æ¶,å¯ä»¥ä½¿ç¨ä»¥ä¸è¯æ³:
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.Config['CustomConfigurationsPath'] = '/myconfig.js' ;
oFCKeditor.Create() ;
æé:å½ä½ ä¿®æ¹é ç½®å,è¯·æ¸ ç©ºæµè§å¨ç¼å以æ¥çææ
é ç½®é项:
AutoDetectLanguage=true/false èªå¨æ£æµè¯è¨
BaseHref="" ç¸å¯¹é¾æ¥çåºå°å
ContentLangDirection="ltr/rtl" é»è®¤æåæ¹å
ContextMenu=å符串æ°ç»,å³é®èåçå 容
CustomConfigurationsPath="" èªå®ä¹é ç½®æ件路å¾åå称
Debug=true/false æ¯å¦å¼å¯è°è¯åè½,è¿æ ·,å½è°ç¨FCKDebug.Output()æ¶,ä¼å¨è°è¯çªä¸è¾åºå 容
DefaultLanguage="" 缺çè¯è¨
EditorAreaCss="" ç¼è¾åºçæ ·å¼è¡¨æ件
EnableSourceXHTML=true/false 为TRUEæ¶,å½ç±å¯è§åçé¢åæ¢å°ä»£ç 页æ¶,æHTMLå¤çæXHTML
EnableXHTML=true/false æ¯å¦å 许使ç¨XHTMLå代HTML
FillEmptyBlocks=true/false 使ç¨è¿ä¸ªåè½,å¯ä»¥å°ç©ºçå级å ç´ ç¨ç©ºæ ¼æ¥æ¿ä»£
FontColors="" 设置æ¾ç¤ºé¢è²æ¾åå¨æ¶æåé¢è²å表
FontFormats="" 设置æ¾ç¤ºå¨æåæ ¼å¼å表ä¸çå½å
FontNames="" åä½å表ä¸çåä½å
FontSizes="" åä½å¤§å°ä¸çåå·å表
ForcePasteAsPlainText=true/false 强å¶ç²è´´ä¸ºçº¯ææ¬
ForceSimpleAmpersand=true/false æ¯å¦ä¸æ&符å·è½¬æ¢ä¸ºXMLå®ä½
FormatIndentator="" å½å¨æºç æ ¼å¼ä¸ç¼©è¿ä»£ç 使ç¨çå符
FormatOutput=true/false å½è¾åºå 容æ¶æ¯å¦èªå¨æ ¼å¼å代ç
FormatSource=true/false å¨åæ¢å°ä»£ç è§å¾æ¶æ¯å¦èªå¨æ ¼å¼å代ç
FullPage=true/false æ¯å¦å 许ç¼è¾æ´ä¸ªHTMLæ件,è¿æ¯ä» å 许ç¼è¾BODYé´çå 容
GeckoUseSPAN=true/false æ¯å¦å 许SPANæ 记代æ¿B,I,Uæ è®°
IeSpellDownloadUrl=""ä¸è½½æ¼åæ£æ¥å¨çç½å
ImageBrowser=true/false æ¯å¦å 许æµè§æå¡å¨åè½
ImageBrowserURL="" æµè§æå¡å¨æ¶è¿è¡çURL
ImageBrowserWindowHeight="" å¾åæµè§å¨çªå£é«åº¦
ImageBrowserWindowWidth="" å¾åæµè§å¨çªå£å®½åº¦
LinkBrowser=true/false æ¯å¦å 许å¨æå ¥é¾æ¥æ¶æµè§æå¡å¨
LinkBrowserURL="" æå ¥é¾æ¥æ¶æµè§æå¡å¨çURL
LinkBrowserWindowHeight=""é¾æ¥ç®æ æµè§å¨çªå£é«åº¦
LinkBrowserWindowWidth=""é¾æ¥ç®æ æµè§å¨çªå£å®½åº¦
Plugins=object 注åæ件
PluginsPath="" æ件æ件夹
ShowBorders=true/false å并边æ¡
SkinPath="" ç®è¤æ件夹ä½ç½®
SmileyColumns= å¾ç¬¦çªåæ°
SmileyImages=å符æ°ç» å¾ç¬¦çªä¸å¾çæ件åæ°ç»
SmileyPath="" å¾ç¬¦æ件夹路å¾
SmileyWindowHeight å¾ç¬¦çªå£é«åº¦
SmileyWindowWidth å¾ç¬¦çªå£å®½åº¦
SpellChecker="ieSpell/Spellerpages" 设置æ¼åæ£æ¥å¨
StartupFocus=true/false å¼å¯æ¶FOCUSå°ç¼è¾å¨
StylesXmlPath="" 设置å®ä¹CSSæ ·å¼å表çXMLæ件çä½ç½®
TabSpaces=4 TABé®äº§ççç©ºæ ¼å符æ°
ToolBarCanCollapse=true/false æ¯å¦å 许å±å¼/æå å·¥å ·æ
ToolbarSets=object å 许使ç¨TOOLBARéå
ToolbarStartExpanded=true/false å¼å¯æ¯TOOLBARæ¯å¦å±å¼
UseBROnCarriageReturn=true/false å½å车æ¶æ¯äº§çBRæ è®°è¿æ¯Pæè DIVæ è®°
ä¸ãèªå®ä¹æ ·å¼å表
FckStyls.xmlæ¯é»è®¤çèªå®ä¹æ ·å¼å表æ件ã
FCKEDITORçæ ·å¼å·¥å ·æ ä¸æä¾äºé¢å®ä¹çæ ·å¼,æ ·å¼æ¯éè¿XMLæ件å®ä¹ç,é»è®¤çXMLæ ·å¼æ件åå¨äºFCkEditoræ ¹æ件夹ä¸çFckStyls.xmlæ件ä¸è¿ä¸ªXMLæ件çç»æåæå¦ä¸:
<?xml version="1.0" encoding="utf-8" ?>
<Styles >
<Style name="My Image" element="img">
<Attribute name="style" value="padding: 5px" />
<Attribute name="border" value="2" />
</Style >
<Style name="Italic" element="em" />
<Style name="Title" element="span">
<Attribute name="class" value="Title" />
</Style >
<Style name="Title H3" element="h3" />
</Styles>
æ¯ä¸ä¸ªSTYLEæ è®°å®ä¹ä¸ç§æ ·å¼,NAMEæ¯æ¾ç¤ºå¨ä¸æå表ä¸çæ ·å¼å,ELEMENTå±æ§æå®æ¤æ ·å¼æéç¨ç对象,å 为FCKEDITORä¸çæ ·å¼æ¯ä¸ä¸æææç,ä¹å°±æ¯è¯´,éæ©ä¸åç对象,ä» ä¼æ¾ç¤ºé对è¿ç±»å¯¹è±¡å®ä¹çæ ·å¼
åãæ¼åæ£æ¥
FCKEDITOR 带äºä¸¤ç§æ¼åæ£æ¥å·¥å ·,ä¸ç§æ¯ieSpell,é»è®¤æ åµä¸ä½¿ç¨è¿ç§,使ç¨è¿ç§æ¹å¼çæ¼åæ£æ¥,è¦æ±å®¢æ·ä¸è½½å¹¶å®è£ iespellè¿ä¸ªå°è½¯ä»¶,å¦å¤,ä¹æä¾ SpellPagerçæ¹å¼æ¥è¿è¡æ¼åæ£æ¥,ä¸è¿,ç±äºSPELLPAGERæ¯ç±PHPç¼åçæå¡å¨ç«¯èæ¬,å æ¤,è¦æ±ä½ çWEBæå¡å¨å¿ é¡»æ¯æPHPèæ¬è¯è¨æ¹å¯
æ´æ¹æ¼åæ£æ¥å¨çæ¹å¼è¯·åè§æå ³é ç½®æ件ç详ç»è¯´æ
äºãå缩èæ¬
为äºæä¾èæ¬è½½å ¥çæç,FCKEDITORéç¨ä»¥ä¸æ¹æ³å¯¹èæ¬å°½éå缩以åå°èæ¬å°ºå¯¸:
1,移é¤æèæ¬ä¸ç注é
2.移é¤æèæ¬ä¸æææ æä¹ç空ç½
å¦å¤,FCKEDITORè¿æä¾äºä¸ä¸ªä¸é¨ç¨äºå缩èæ¬çå·¥å ·ä»¥ä¾¿ ä½ å¨åå¸æ¶è½åå°æ件尺寸,ä½ å¯ä»¥å°_Packageræ件夹ä¸çFckeditor.Packager.exeå¤å¶å°FCKEDITORæ ¹æ件夹æ¥è¿è¡å¹¶å缩èæ¬
å ãæ¬å°åFCKEDITOR
å¦æFCKEDITOR没ææä¾æ¨æéè¦çè¯è¨(å®é ä¸å ¨æäº),ä½ ä¹å¯ä»¥èªè¡å¶ä½æ°çè¯è¨,ä½ åªéè¦å¤å¶åºEN.JS,ç¶åå¨å ¶åºç¡ä¸è¿è¡ç¿»è¯.å¦å¤,è¯è¨å称ä¸å¯¹åºçèæ¬æ件åå¿ é¡»éµå¾ªRFC æ å,ä½æ¯,éè¦å°å,ä¾å¦:Portuguess Language对åºçèæ¬æ件åå¿ é¡»ä¸ºpt.jså¦æéè¦é对æ个å½å®¶çæç§è¯ç³»,åå¯ä»¥å¨è¯ç³»ç¼©ååå ä¸æ¨ªçº¿åå½å®¶ç¼©åå³å¯
å¨ä½¿ç¨æ¶,ç³»ç»ä¼èªå¨ä¾¦æµå®¢æ·ç«¯è¯ç³»åå½å«èè¿ç¨éå½ççé¢è¯è¨.
å½å»ºç«ä¸ç§æ°çè¯è¨å,ä½ å¿ é¡»å¨"Edit/lang/fcklanguagemanager.js"ä¸ä¸ºå ¶å»ºç«ä¸ä¸ªæ¡ç®,å¦ä¸æ示:
FCKLanguageManager.AvailableLanguages =
{
en : 'English',
pt : 'Portuguese'
}
éè¦æéçæ¯,æä»¶å¿ é¡»ä¿å为UTF-8æ ¼å¼
å ãä¸ASP.NETæå¡å¨ç«¯èæ¬è¿è¡äº¤äº
1.æFCKEDITORæ·»ä¸å°å·¥å ·ç®±
2.ææ½FCKEDITORæ§ä»¶å°é¡µé¢
3.ä¸ºå ¶æå®å称
4.FCKEDITOR ç±»çææå±æ§ä¸å å¯ä»¥å¨ä»£ç ä¸ä½¿ç¨,èä¸å¯ä»¥ä½ä¸ºFCKEDITORæ§ä»¶çå±æ§ç´æ¥ä½¿ç¨,ä¾å¦,è¦æ¹åç®è¤,å¯ä»¥å¨UI页é¢ä¸æå®SkinPath= "/fckeditor/editor/skins/office"å³å¯,å ¶å®FCKEDITORçASP.NETçæ¬å¯ä»¥åå¾æ´å¥½,ä½ å¯ä»¥æ¾å° FCKEDITOR ASP.NET 2.1çæºæ件,ç¶åä¿®æ¹è¯¥æ§ä»¶ç设计,ä¸ºå ¶æ´é²æ´å¤æç¨çå±æ§,éæ°ç¼è¯å³å¯
5,POSTBACKåçæ°æ®,使ç¨FCKEDITORæ§ä»¶çvalueå±æ§è·å¾
6. ç±äºé»è®¤ç¶æä¸,ASP.NETä¸å 许æ交å«æHTMLåJAVASCRIPTçå 容,å æ¤,ä½ å¿ é¡»å°ä½¿ç¨FCKEDITORç页é¢ç ValidateRequest设为false.(<%@page validteRequest="false" %>å³å¯)
ä¸ã设置ä¸ä¼ æ件è¯è¨
æFCKeditoræ ¹ç®å½ä¸é¢çfckconfig.jsæ件é
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php
è¿ä¸¤è¡ä¸æ¹ææ¨æéè¦è°ç¨çç¼è¾å¨è¯è¨ï¼å¦ç¨asp.netåæ¹ä¸ºaspxï¼
å «ã解å³ä¸æçé®é¢:
å¨web.configä¸å å ¥:
<globalization requestEncoding="GB" responseEncoding="GB"/>
è¿æ ·è®¾ç½®åå¯ä»¥æ¾ç¤ºä¸æçæ件ï¼ä½URLå°åä¹æ¯ä¸æçï¼
å¦ææå¡å¨å¯¹ä¸æå°åç解æä¸å¥½ï¼å¯è½å¯¼è´å¾çæ æ³æµè§ï¼
æ以修æ¹ï¼editor\filemanager\browser\default\frmresourceslist.html
ä¸çOpenFileå½æ°ï¼æ
window.top.opener.SetUrl( fileUrl ) ;
ä¿®æ¹ä¸º:
window.top.opener.SetUrl( escape(fileUrl) ) ;
ä¹.设置ä¸ä¼ çç®å½ï¼
1:å¨web.configä¸è®¾ç½®:
<appSettings>
<add key="FCKeditor:UserFilesPath" value="/fck/UpLoad/" />
</appSettings>
2:å¨Sessionä¸è®¾ç½®:
å¨editor\filemanager\browser\default\connectors\aspx\connector.aspxä¸å å ¥ä»¥ä¸ä»£ç :
<script runat="server" language="C#">
protected override void OnInit(EventArgs e)
{
Session["FCKeditor:UserFilesPath"] = "/fck/UpLoad1/";
}
</script>
aiç»å¾è½¯ä»¶åªä¸ªå¥½ç¨
触ç«ãDeepArt.ioãPrismaçã
1ã触ç«æ¯å½å é«äººæ°ç»å¸ä½åå享平å°ï¼ææµ·éæç»å¸å ¥é©»ï¼åæ¶è§¦ç«æ¨åºçAIç»ç»åè½åå强大ï¼é¶åºç¡å°ç½ä¹è½å¿«éææç²¾ç¾çä½åï¼å¹¶ä¸æ¯æä¸é®ä¸è½½ï¼æ°ç¾ä¸ç¨æ·å¨ä¸é¢å享ãåä½ã
2ãDeepArt.ioæ¯ä¸æ¬¾é常强大çAIç»ç»å¹³å°ï¼å¯ä»¥å°ä½ ä¸ä¼ çä»»ä½å¾ç转å为任ä½ä¸å¼ èºæ¯å¤§å¸çåä½é£æ ¼ãæ以ï¼æ³è®©èªå·±ç头ååæä¸å¹ 梵é«çæ²¹ç»ä½åçè¯ï¼é£ä¹DeepArt.ioå°±æ¯ä¸äºéæ©ã
3ãPrismaæ¯ä¸æ¬¾ååæ趣çAIç»ç»å¹³å°ï¼å¯ä»¥å°ç §ç转åæåç§ä¸åçèºæ¯é£æ ¼ï¼å æ¬ææåç«æ´¾ãæ¯å ç´¢ççãèä¸ï¼Prismaè¿é å¤äºè®¸å¤ç¾å¦ç滤éææï¼æ以ç¨æ·å¯ä»¥è½»æ¾å°è®©èªå·±çç §çæ´å åºå½©ã
帮我分析一下网页源码(我想知道它的视频下载地址)
建议你最好把那段视频下载下来
使用方法:
1、打开土豆视频或豆单视频页面,如:/playlist/playindex.do?lid=
2、在地址栏的tudou.com前面加一个kiss后回车,即访问:
/playlist/playindex.do?lid=,怎么样,看到所有flv下载地址了吗?开始下载吧!
3、目前可以kiss的地址示例:
/programs/view/YDn_zTq_8gI/(单视频播放页面1)
/programs/view.php?itemID=(单视频播放页面2)
/playlist/playindex.do?lid=(豆单播放页面)
/playlist/id//(豆单介绍页面,无需进入播放页面)
/playlist/showPlayList.do?lid=(豆单介绍页面2)
/album/view/RCFpiU0PYAM/(相册视频播放页面)
4、其它视频网站(如,优酷等)的下载方法:将视频播放地址复制到上面的文本框后点“开始解析”,同样能看到flv下载地址。
如:/u/v_MTAwMDAwMA.html
/
关于集成电路的专业术语有那些,各位有谁知道啊
集成电路(IC)电子专业术语英汉对照加注解
电子专业英语术语
★rchitecture(结构):可编程集成电路系列的通用逻辑结构。
★ASIC(Application Specific Integrated Circuit-专用集成电路):适合于某一单一用途的集成电路产品。
★ATE(Automatic Test EQUIPment-自动测试设备):能够自动测试组装电路板和用于莱迪思 ISP 器件编程的设备。
★BGA(Ball Grid Array-球栅阵列):以球型引脚焊接工艺为特征的一类集成电路封装。可以提高可加工性,减小尺寸和厚度,改善了噪声特性,提高了功耗管理特性。
★Boolean Equation(逻辑方程):基于逻辑代数的文本设计输入方法。
★Boundary Scan Test(边界扫描测试):板级测试的趋势。为实现先进的技术所需要的多管脚器件提供了较低的测试和制造成本。
★Cell-Based PLD(基于单元的如何查看xla源码可编程逻辑器件):混合型可编程逻辑器件结构,将标准的复杂的可编程逻辑器件(CPLD)和特殊功能的模块组合到一块芯片上。
★CMOS(Complementary Metal Oxide Semiconductor-互补金属氧化物半导体):先进的集成电路★加工工艺技术,具有高集成、低成本、低能耗和高性能等特征。CMOS 是现在高密度可编程逻辑器件(PLD)的理想工艺技术。
★CPLD(Complex Programmable Logic Device-复杂可编程逻辑器件):高密度的可编程逻辑器件,包含通过一个中央全局布线区连接的宏单元。这种结构提供高速度和可预测的性能。是实现高速逻辑的理想结构。理想的可编程技术是 E2CMOS?。
★Density (密度):表示集成在一个芯片上的逻辑数量,单位是门(gate)。密度越高,门越多,也意味着越复杂。
★Design Simulation(设计仿真):明确一个设计是否与要求的功能和时序相一致的过程。
★E2CMOS?(Electrically Erasable CMOS-电子可擦除互补金属氧化物半导体):莱迪思专用工艺。基于其具有继承性、可重复编程和可测试性等特点,因此是一种可编程逻辑器件(PLD)的理想工艺技术。
★EBR(Embedded BLOCk RAM-嵌入模块RAM):在 ORCA 现场可编程门阵列(FPGA)中的 RAM 单元,可配置成 RAM、只读存储器(ROM)、先入先出(FIFO)、内容地址存储器(CAM)等。
★EDA(Electronic Design Automation-电子设计自动化):即通常所谓的电子线路辅助设计软件。
★EPIC (Editor for Programmable Integrated Circuit-可编程集成电路编辑器):一种包含在 ★ORCA Foundry 中的低级别的图型编辑器,可用于 ORCA 设计中比特级的编辑。
★Explore Tool(探索工具):莱迪思的新创造,包括 ispDS+HDL 综合优化逻辑适配器。探索工具为用户提供了一个简单的图形化界面进行编译器的综合控制。设计者只需要简单地点击鼠标,就可以管理编译器的设置,执行一个设计中的类似于多批处理的编译。
★Fmax:信号的最高频率。芯片在每秒内产生逻辑功能的最多次数。
★FAE(Field Application Engineer-现场应用工程师):在现场为客户提供技术支持的工程师。
★Fabless:能够设计,销售,通过与硅片制造商联合以转包的方式实现硅片加工的一类半导体公司。
★Fitter(适配器):在将一个设计放置到目标可编程器件之前,用来优化和分割一个逻辑设计的软件。
★Foundry:硅片生产线,也称为 fab。 FPGA(Field Programmable Gate Array-现场可编程门阵列):高密度 PLD 包括通过分布式可编程阵列开关连接的小逻辑单元。这种结构在性能和功能容量上会产生统计变化结果,但是可提供高寄存器数。可编程性是通过典型的易失的 SRAM 或反熔丝工艺一次可编程提供的。
★"Foundry" :一种用于ORCA 现场可编程门阵列(FPGA)和现场可编程单芯片系统(FPSC)的软件系统。
★FPGA(Field Programmable Gate Array-现场可编程门阵列):含有小逻辑单元的高密度 PLD,这些逻辑单元通过一个分布式的阵列可编程开关而连接。这种体系结构随着性能和功能容量不同而产生统计上的不同结果,但是提供的寄存器数量多。其可编程性很典型地通过易失 SRAM 或者一次性可编程的反熔丝来体现。
★FPSC(Field Programmable System-on-a-Chip-现场可编程单芯片系统):新一代可编程器件用于连接 FPGA 门和嵌入的 ASIC 宏单元,从而形成一芯片上系统的解决方案。
★GAL? (Generic Array Logic-通用阵列逻辑):由莱迪思半导体公司发明的低密度器件系统。
★Gate(门):最基本的逻辑元素,门数越多意味着密度越高。
★Gate Array(门阵列):通过逻辑单元阵列连接的集成电路。由生产厂家定制,一般会导致非再生工程(NRE)消耗和一些设计冗余。
★GLB(Generic Logic BLOCk-通用逻辑块):莱迪思半导体的高密度 ispPSI?器件的标准逻辑块。每一个 GLB 可实现包含输入、输出的大部分逻辑功能。
★GRP(Global Routing Pool-全局布线池):专有的连接结构。能够使 GLBs 的输出或 I/O 单元输入与 GLBs 的输入连接。莱迪思的 GRP 提供快速,可预测速度的完全连接。
★High Density PLD(高密度可编程逻辑器件):超过 门的 PLD。
★I/O Cell(Input/Output Cell-输入/输出单元):从器件引脚接收输入信号或提供输出信号的逻辑单元。
★ISPTM(In-System Programmability-在系统可编程):由莱迪思首先推出,莱迪思 ISP 产品可以在系统电路板上实现编程和重复编程。ISP 产品给可编程逻辑器件带来了革命性的变化。它极大地缩短了产品投放市场的时间和产品的成本。还提供能够对在现场安装的系统进行更新的能力。
★ispATETM:完整的软件包使自动测试设备能够实现:
1)利用莱迪思 ISP 器件进行电路板测试和
2)编程 ISP 器件。
★ispVM EMBEDDEDTM:莱迪思半导体专用软件由 C 源代码算法组成,用这些算法来执行控制编程莱迪思 ISP 器件的所有功能。代码可以被集成到用户系统中,允许经由板上的微处理器或者微控制器直接编程 ISP 器件。
★ispDaisy Chain Download SOFtware (isp菊花链下载软件):莱迪思半导体专用器件下载包,提供同时对多个在电路板上的器件编程的功能。
★ispDSTM:莱迪思半导体专用基于 Windows 的软件开发系统。设计者可以通过简单的逻辑公式或莱迪思 - HDL 开发电路,然后通过集成的功能仿真器检验电路的功能。整个工具包提供一套从设计到实现的方便的、低成本和简单易用的工具。
★ispDS+TM:莱迪思半导体兼容第三方HDL综合的优化逻辑适配器,支持PC和工作站平台。IspDS+ 集成了第三方 CAE 软件的设计入口和使用莱迪思适配器进行验证,由此提供了一个功能强大、完整的开发解决方案。第三方 CAE 软件环境包括:Cadence, Date I/O-Synario,Exemplar Logic,ISDATA, Logical Devices,Mentor Graphics,OrCAD, Synopsys,Synplicity 和 Viewlogic。
★isPGAL?:具有在系统可编程特性的 GAL 器件
★ispGDSTM:莱迪思半导体专用的 ISP 开关矩阵被用于信号布线和 DIP 开关替换。
★ispGDXTM:ISP 类数字交叉点系列的信号接口和布线器件。
★ispHDLTM:莱迪思开发系统,包括功能强大的 VHDL 和 Verilog HDL 语言和柔性的在系统可编程。完整的系统包括:集成了 Synario, Synplicity 和 Viewlogic 的综合工具,提供莱迪思 ispDS+ HDL 综合优化逻辑适配器。
★ispLSI?:莱迪思性能领先的 CPLD 产品系列的名称。世界上最快的高密度产品,提供非易失的,在系统可编程能力和非并行系统性能。
★ispPAC?:莱迪思唯一的可编程模拟电路系列的名称。世界上第一个真正的可编程模拟产品,提供无与伦比的所见即所得(WYSIYG)逻辑设计结果。
★ispSTREAMTM:JEDEC 文件转化为位封装格式,节省原文件1/8 的存储空间。
★ispTATM:莱迪思静态时序分析器,是 ispDS+ HDL 综合优化逻辑适配器的组成部分。包括所有的功能。使用方便,节省了大量时序分析的代价。设计者可以通过时序分析器方便地获得任何莱迪思 ISP 器件的引脚到引脚的时序细节。通过一个展开清单格式方便地查看结果。
★ispVHDLTM:莱迪思开发系统。包括功能强大的 VHDL 语言和灵活的在系统可编程。完整的系统工具包括 Synopsys,Synplicity 和 Viewlogic,加上 ispDS+ HDL 综合优化逻辑适配器。
★ispVM System:莱迪思半导体第二代器件下载工具。是基于能够提供多供应商的可编程支持的便携式虚拟机概念设计的。提高了性能,增强了功能。
★JEDEC file(JEDEC 文件):用于对 ispLSI 器件编程的工业标准模式信息。
★JTAG(Joint Test Action Group-联合测试行动组):一系列在主板加工过程中的对主板和芯片级进行功能验证的标准。
★Logic(逻辑):集成电路的三个基本组成部分之一:微处理器内存和逻辑。逻辑是用来进行数据操作和控制功能的。
★Low Density PLD(低密度可编程逻辑器件):小于 门的 PLD,也称作 SPLD。
★LUT (Look-Up Table-查找表):一种在 PFU 中的器件结构元素,用于组合逻辑和存储。基本上是静态存储器(SRAM)单元。
★Macrocell(宏单元):逻辑单元组,包括基本的产品逻辑和附加的功能:如存储单元、通路控制、极性和反馈路径。
★MPI(MicroprocesSOr Interface-微处理器接口):ORCA 4 系列 FPGA 的器件结构特征,使 FPGA 作为随动或外围器件与 PowerQUIC mP 接口。
★OLMC(Output Logic Macrocell-输出逻辑宏单元):D 触发器,在输入端具有一个异或门,每一个 GLB 输出可以任意配置成组合或寄存器输出。
★ORCA(Optimized Reconfigurable Cell Array-经过优化的可被重新配置的单元阵列):一种莱迪思的 FPGA 器件。
★ORP(Output Routing Pool-输出布线池):ORP 完成从 GLB 输出到 I/O 单元的信号布线。I/O 单元将信号配置成输出或双向引脚。这种结构在分配、锁定 I/O 引脚和信号出入器件的布线时提供了很大的灵活性。
★PAC(Programmable Analog Circuit-可编程模拟器件):模拟集成电路可以被用户编程实现各种形式的传递函数。
★PFU(Programmable Function Unit-可编程功能单元):在 ORCA 器件的PLC中的单元,可用来实现组合逻辑、存储、及寄存器功能。
★PIC (Programmable I/O Cell-可编程 I/O 单元):在 ORCA FPGA 器件上的一组四个 PIO。PIC 还包含充足的布线路由选择资源。
★Pin(引脚):集成电路上的金属连接点用来:
1)从集成电路板上接收和发送电信号;
2)将集成电路连接到电路板上。
★PIO(Programmable I/O Cell-可编程I/O单元):在 ORCA FPGA 器件内部的结构元素,用于控制实际的输入及输出功能。
★PLC(Programmable Logic Cell-可编程逻辑单元):这些单元是 ORCA FPGA 器件中的心脏部分,他们被均匀地分配在 ORCA FPGA 器件中,包括逻辑、布线、和补充逻辑互连单元(SLIC)。
★PLD(Programmable Logic Device-可编程逻辑器件):数字集成电路,能够被用户编程执行各种功能的逻辑操作。包括:SPLDs, CPLDs 和 FPGAS。
★Process Techonology(工艺技术):用来将空白的硅晶片转换成包含成百上千个芯片的硅片加工工艺。通常按技术(如:E2CMOS)和线宽 (如:0. 微米)分类。
★Programmer(编程器):通过插座实现传统 PLD 编程的独立电子设备。莱迪思 ISP 器件不需要编程器。
★Schematic Capture(原理图输入器):设计输入的图形化方法。
★SCUBA(SOFtware Compiler for User Programmable Arrays-用户可编程阵列综合编译器):包含于 ORCA Foundry 内部的一种软件工具,用于生成 ORCA 特有的可用参数表示的诸如存储的宏单元。
★SLIC (Supplemental Logic Interconnect Cell-补充逻辑相互连接单元):包含于每一个 PLC 中,它们有类似 PLD 结构的三态、存储解码、及宽逻辑功能。
★SPLD(SPLD-简单可编程逻辑器件):小于 门的 PLD,也称作低密度 PLD。
★SWL(SOFt-Wired Lookup Table-软连接查找表):在 ORCA PFU 的查找表之间的快速、可编程连接,适用于很宽的组合功能。
★Tpd:传输延时符号,一个变化了的输入信号引起一个输出信号变化所需的时间。
★TQFP(Thin Quad Flat PACk-薄四方扁平封装):一种集成电路的封装类型,能够极大地减少芯片在电路板上的占用的空间。TQFP 是小空间应用的理想选择,如:PCMCIA 卡。
★UltraMOS?:莱迪思半导体专用加工工艺技术。
★Verilog HDL:一个专用的、高级的、基于文本的设计输入语言。
★VHDL:VHSIC 硬件描述语言,高级的基于文本的设计输入语言。
2024-11-20 09:15
2024-11-20 08:35
2024-11-20 07:22
2024-11-20 07:09
2024-11-20 07:01