📄 bcjq062.txt
字号:
C++ Builder开发者:程序员之家
var how_many_ads = 3;
var now = new Date()
var sec = now.getSeconds()
var ad = sec % how_many_ads;
ad +=1;
首页
| 控件天堂 | 控件使用
| 编程技巧
| 源代码 | 编程工具 |
系统补丁 | 电子书籍 | 技术论坛
| 相关链接
if (ad==1) {document.write(''+'');}
if (ad==2) {document.write(''+'');}
if (ad==3) {document.write(''+'');}
var marqueecontents=''+scroll_text+''
if (document.all)
document.write(''+marqueecontents+'')
function regenerate(){
window.location.reload()
}
function regenerate2(){
if (document.layers){
setTimeout("window.onresize=regenerate",450)
intializemarquee()
}
}
function intializemarquee(){
document.cmarquee01.document.cmarquee02.document.write(marqueecontents)
document.cmarquee01.document.cmarquee02.document.close()
thelength=document.cmarquee01.document.cmarquee02.document.height
scrollit()
}
function scrollit(){
if (document.cmarquee01.document.cmarquee02.top>=thelength*(-1)){
document.cmarquee01.document.cmarquee02.top-=speed
setTimeout("scrollit()",100)
}
else{
document.cmarquee01.document.cmarquee02.top=marqueeheight
scrollit()
}
}
window.onload=regenerate2
当前位置
:
编程技巧
用C++
Builder3 制作NotePad(记事本)续篇
上回说到“我的记事本”小功告成,copy给朋友一份,咦,不能用,说是缺文件?噢,像VB的VBRUN???
.dll一样,C++ Builder3编译的程序也需要运行库的支持的。找到并打开它看看我们还有些什么没有做?首先是关于菜单的快捷键问题。如果你是使用我上次所给的资源脚本导人的菜单,你会发现带有快捷键的菜单项的文字都像“撒消(U)\tCtrl+Z”一样。以前用BC的资源编辑器做过菜单的朋友都知道,“\t”表示右对齐,而在C++ Builder3中也作为菜单的文字了。另外C++ Builder3中的快捷键的建立也简单的多,快捷键已经作为菜单的ShortCut属性了。这里,仅改动“编辑(E)”中的“撒消(U)Ctrl+Z”项来示众,其余皆可依样而画葫芦之。
先双击MainMenu1菜单组件,进入菜单编辑器,选中“编辑(E)”中的“撤消(U)Ctrl+Z”项。接着将Caption属性改为“撤消(U)”(即把“\tCtrl+Z”删去),并在shortCut瞩性中选择Ctrl+Z。这样,该项的快捷键就设完了。接着是编辑菜单里的各个项。首先是“撤消(&U)Ctrl+Z”到“全部选定(&A)”六项(必须先将他们的Enabled属性都设为true),C++ Builder3为这些功能提供了现成的方法(Method)。比如“撤消(&U)Ctral+Z”菜单,可以使用Undo方法,即在该菜单的OnClick事件处理函数中输入“Memo1->Undo();”。同理有:
“剪切(&T)\tCtrl+X”项,输入:“Memo1->CutToClipboard();”
“复制(&C)\tCtrl+C”项,输入:“Memo1->CopyToClipboard();”
“粘贴(&P)\tCtrl+V”项,输入:“Memo1->PasteFromClipboard();”
“删除(&L)\tDel”项,输入:“Memo1->ClearSelection();”
“全部选定(&A)”项,输入:“Memo1->SelectAll();”
下面是“时间/日期(&D)F5”项,我们必须先取得当前的日期和时间。有两种方法,一种是用getdate和
gettime函数,一种是用C++ Builder3中的TDateTime类。这里选择后一种,但有时使用getdate和gettime函数会更简便。下面给出该菜单项的处理代码:
TDateTime * Current_DateTime =newTDateTime; //生成TDateTime对象
* Current_DateTime=Current_DateTime->CurrentDateTime(); //获取当前日期和时间
Memo1->SetselTextBuf(Current_DateTime->DateTimeString().c_str());//将当前日期和时间转换成字符串,并用SetSelTextBuf方法插入当前光标位置
接着是处理‘自动换行(&W)”的代码:
//W1是“自动换行(&W)”菜单项的名字(Name)属性,如果你不是W1,请做相应的改动
if(W1->Checked) //该菜单已经检取(Checked)
{W1->Checked=false; //取消检取
Memo1->ScrollBars=ssBoth; //Memo1两根滚动条都要
} else
{ W1->Checked=true; //设置检取
Memo1->ScrollBars = ssVertical; //Memo1只设垂直滚动条,效果就是自动换行
}
接下来处理“设置字体(&F)...”菜单,我们首先需要一个设置字体的公用对话框。从Dialogs组件条中选FontDialog组件放入表单中。下面是处理“设置字体(&F)...”的代码:
if(FontDialog1->Execute())Memo1->Font=FontDialog1->Font;
至此,“编辑(E)”菜单的功能都处理完了,下面将是处理“搜索(S)”菜单的工作。其中,我们又将用到两个公用对话框。C++ Builder3只提供了用来获取用户欲查我的字符串的对话框,并未提供具体查找的函数,所以我们得自己写处理函数。下面我给出修改的Win32 SDK的范例代码,你需要将这些代码插在程序的首部,即定义全局变量的地方。
typedef enum {
frtFind
frtReplace,
frtRepAll
} FRT
#define GETSEL(ichS,ichE) \ SendMessage(MainForm - > Memo1 - > Handle,
EM_GETSEL,(WPARAM) & ichs, (LPARAM) & ichE)
#define SETSEL(ichS,ichE) \SendMessage(MainForm - > Memo1 - > Handle,
EM_SETSEL, (WPARAM) ichS, (LPARAAM) ichE)
BOOL FWholeWord(char * sz, char * szStart, char * szEnd,
int cch) {
if ( sz! = szStart & &
* (sz - 1 ) ! = ' ' & &
* (sz - 1 ) ! = '\t' & &
* (sz - 1 ) ! = ',' & &
* (sz - 1 ) ! = '.' & &
* (sz - 1 ) ! = '\r'
) { return FALSE;
}
if ( sz + cch! = szEnd & &
* (sz + cch) ! = ' ' & &
* (sz +cch) ! = '\t' & &
* (sz + cch) ! = ',' & &
* (sz + cch) ! = '.' & &
* (sz + cch) ! = '\r'
) { return FALSE;
}
return TRUE;
}
BOOL Find(char * szFind, BOOL fDown, BOOL fMatchCase, BOOL fWholeWord, BOOL fNoScroll)
{ char * szText;
UINT ichStart;
UINT ichEnd;
UINT cch;
int dch;
int dchComp;
char * szTerm;
char * sz;
UINT cchFind;
BOOL fFound = FALSE;
int dcbOnFind;
szText = MainForm - > Memo1 - > Lines - > GetText();
cchFind = strlen (szFind);
GETSEL(ichStart, ichEnd);
cch = strlen(szText);
if (
ichEnd - ichStart = = cchFind & &
!strnicmp(szText + ichStart, szFind, cchFind)
)
dchOnFind = 1;
else
dchOnFind = 0;
if (fDown)
{ dch = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -