??xml version="1.0" encoding="utf-8" standalone="yes"?>一本色道久久88综合日韩精品
,漂亮人妻被中出中文字幕久久
,久久综合九色综合网站 http://www.shnenglu.com/chaosuper85/zh-cn Wed, 07 May 2025 20:28:51 GMT Wed, 07 May 2025 20:28:51 GMT 60 vim语法着色和排版解决Ҏ http://www.shnenglu.com/chaosuper85/archive/2011/06/18/148893.htmlchaosuper chaosuper Fri, 17 Jun 2011 23:25:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/06/18/148893.html http://www.shnenglu.com/chaosuper85/comments/148893.html http://www.shnenglu.com/chaosuper85/archive/2011/06/18/148893.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/148893.html http://www.shnenglu.com/chaosuper85/services/trackbacks/148893.html 1s,=1s,:1s
6Q如果想在左侧显C文本的行号Q可以用以下语句Q?
set nu
7Q最后,如果没有下列语句Q就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif ]]> VI~辑器命令大?/title> http://www.shnenglu.com/chaosuper85/archive/2011/06/16/148751.htmlchaosuper chaosuper Wed, 15 Jun 2011 23:58:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/06/16/148751.html http://www.shnenglu.com/chaosuper85/comments/148751.html http://www.shnenglu.com/chaosuper85/archive/2011/06/16/148751.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/148751.html http://www.shnenglu.com/chaosuper85/services/trackbacks/148751.html 把文?插入到第n?
:so 文g> d文g>,再执行文仉面的命o(文g中的命o应该都是一些ex命o)
:l1,l2w 文g> 把第l1和第l2行之间的文本写到文g>中去
:w >> 文g> d到文?末尾. 也可以用行?
:e! 重新~辑当前文g,忽略所有的修改
·(、[、、]?对应昄
% 昄当前(、[、{ 、}、] ?的对应项
) Q光标移臛_?
( Q光标移臛_?
}Q光标移x落开?
{Q光标移x落结?
·(、[、、]?内数据选择
daB 删除{}及其内的内容 (在非v可视模式?
diB 删除{}中的内容
ab 选择()中的内容
ib 选择()中的内容( 不含() )
aB 选择{}中的内容
iB 选择{}中的内容( 不含{} )
·语法提示与自动补?
? 插入模式下的单词自动完成
? 行自动完?有用)
·讄ctags
#ctags -f /usr/share/vim/vim63/funcs.tags -R /opt/j2sdk/src /usr/src/kernels/2.6.9-5.EL-i686
^p 自动补齐上下文已有相q项
^n 自动补齐~/.tags中的相近函数
^[ 昄~/.tags中的光标下的函数的原?
按^t退出函?
:pta 函数?预览H口快速打开相应函数所在文Ӟq将光标定位在对应函数的开?
K 昄光标下的C函数的man说明手册
·变量定位
gd 转到光标下局部变量的定义?
Gd 转到光标下全局变量的定义处
·~译选项
:cn 命o会把你带C一个出错地点,而不考虑它在什么文仉?
:cc 命o会向你显C当前错误的~译器输Z息;
:cl 会生成一个列有项目所有错误的列表Q以供浏览这些错?
3]光标Ud
·字符
h 光标左移一个字W?
l 光标右移一个字W?
·?
w ?W 光标右移一个字臛_首?
B ?b 光标左移一个字臛_首?
E ?e 光标右移一个字臛_?
·句} 光标U至句尾?
( 光标U至句首?
·D? 光标U至D落开头?
{ 光标U至D落l尾?
·行k ?Ctrl+p 光标上移一行?
j ?Ctrl+n 光标下移一行?
Enter 光标下移一行?
nG 光标U至W?n 行首?
n+ 光标下移 n 行?
n- 光标上移 n 行?
n$ 光标U至W?n 行尾?
0 光标U至当前行首?
$ 光标U至当前行尾?
·屏幕
H 光标U至屏幕行?
M 光标U至屏幕中间行?
L 光标U至屏幕最后行?
Ctrl+u 向文仉d屏?
Ctrl+d 向文件尾d屏?
Ctrl+f 向文件尾M屏?
Ctrl+b 向文仉M屏?
nz 第 n 行滚臛_q顶部。不指定 n 时将当前行滚臛_q顶?
4}插入
# 在文件中插入行号(不是昄行号Q是插入Q?
?g/^/exec "s/^/".strpart(line(".")." ", 0, 4)
·光标
i 在光标前插入?
a 在光标后插入?
·?
I 在当前行首插入?
A 在当前行插入?
o 在当前行之下一新行插入?
O 在当前行之上新开一行插入?
5)替换
r 替换当前字符?
R 替换当前字符及其后的字符Q直x ESC 键?
s 从当前光标位|处开始,以输入的文本代替指定数目的字W?
S 删除指定数目的行Qƈ以所输入的文本代ѝ?
6)修改
ncw ?nCW 修改指定数目的字W?
nCC 修改指定数目的行?
:r filename 文?filename 插入在当前行之下
7)查找替换
/ 把狭义单? 写到 搜烦命o?
/ 把广义单? 写到 搜烦命o?
:g/str/s/str1/str2/g
W一个g表示Ҏ一个包括s1的行都进行替换,
W二个g表示Ҏ一行的所有进行替?
包括str的行所有的str1都用str2替换
:%s/f $/for$/g 每一行尾部的“f ”(f键和I格键)替换为for
:%s/^/mv /g 在每一行的头部d“mv ”(mv键和I格键)
:s/fred/a/g 替换fred成register a中的内容Q呵?
:g/昄含或的行
# 替换一个visual区域
# 选择一个区域,然后输入 :s/Emacs/Vim/ {等Qvim会自动进?模式
:'s/Emacs/Vim/g 前面?是vim自动d?
# 在多个文中搜烦
:bufdo /searchstr
:argdo /searchstr
复制与剪?
xp 交换前后两个字符的位|?
ddp 上下两行的位|交?
:g/fred/t$ 拯行,从fred到文件末?EOF)
9)H口操作
:vne [filename]
:sp [filename]
:S [filename]
:new [filename]
:^w + ^r 交换两个H口的位|?
^w = H口{宽
:res -n H口高度减小n
:res +n H口高度增大n
:vert res -n
:vert res +n
10)DOS格式文本转成Unix格式文本
:1,$s/^M//g
11)书签
在阅d~写大的E序文gӞ利用标记Q书{)功能定位是十分有帮助的?
光标移到想做标记的位置。假如做一个名为“debug1”的标记Q那么用户可在命令模式下输入做标记的命o“mdebug1”,然后敲入回R键,一个名为“debug1”的标记做好了?
接下来用户可以随意将光标Ud其它的位|,当在命o模式下输入“`debug1”后Q就能快速回到“debug1”的标记所在行的行首?
馨竹 2007-12-24 19:13
12)删除操作
:%s/r//g 删除DOS方式的回车^M
:%s= *$== 删除行尾I白
:%s/^(.*)n1/1$/ 删除重复?
:%s/^.pdf/new.pdf/ 只是删除W一个pdf
:%s/// 又是删除多行注释Q咦Qؓ什么要说「又」呢Q)
:g/^s*$/d 删除所有空?
:g!/^dd/d 删除不含字符?dd'的行
:v/^dd/d 同上 Q译释:v == g!Q就是不匚wQ)
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join 压羃I
:g/^$/,/./-j 压羃I
Qs/p1/p2/gQ将当前行中所有p1均用p2替代
Qn1,n2s/p1/p2/gQ将Wn1至n2行中所有p1均用p2替代
Qg/p1/s//p2/gQ将文g中所有p1均用p2替换
ndw ?ndW 删除光标处开始及其后?n-1 个字W?
d0 删至行首?
d$ 删至行尾?
ndd 删除当前行及其后 n-1 行?
x ?X 删除一个字W?
Ctrl+u 删除输入方式下所输入的文本?
^R 恢复u的操?
J 把下一行合q到当前行尾
V 选择一?
^V 按下^V后即可进行矩形的选择?
aw 选择单词
iw 内部单词(无空?
as 选择句子
is 选择句子(无空?
ap 选择D落
ip 选择D落(无空?
D 删除到行?
x,y 删除与复制包含高亮区
dl 删除当前字符Q与x命o功能相同Q?
d0 删除到某一行的开始位|?
d^ 删除到某一行的W一个字W位|(不包括空格或TAB字符Q?
dw 删除到某个单词的l尾位置
d3w 删除到第三个单词的结位|?
db 删除到某个单词的开始位|?
dW 删除到某个以I格作ؓ分隔W的单词的结位|?
dB 删除到某个以I格作ؓ分隔W的单词的开始位|?
d7B 删除到前?个以I格作ؓ分隔W的单词的开始位|?
dQ?删除到某个语句的l尾位置
d4Q?删除到第四个语句的结位|?
dQ?删除到某个语句的开始位|?
dQ?删除到某个段落的l尾位置
d{ 删除到某个段落的开始位|?
d7{ 删除到当前段落v始位|之前的W?个段落位|?
dd 删除当前?
d/text 删除从文本中出现“text”中所指定字样的位|,
一直向前直C一个该字样所出现的位|(但不包括该字P之间的内?
dfc 删除从文本中出现字符“c”的位置Q一直向前直C一个该字符所出现的位|(包括该字W)之间的内?
dtc 删除当前行直C一个字W“c”所出现位置之间的内?
D 删除到某一行的l尾
d$ 删除到某一行的l尾
5dd 删除从当前行所开始的5行内?
dL 删除直到屏幕上最后一行的内容
dH 删除直到屏幕上第一行的内容
dG 删除直到工作~存区结内容
d1G 删除直到工作~存区开始的内容
修改命o操作
r 更改当前字符
cw 修改到某个单词的l尾位置
c3w 修改到第三个单词的结位|?
cb 修改到某个单词的开始位|?
cW 修改到某个以I格作ؓ分隔W的单词的结位|?
cB 修改到某个以I格作ؓ分隔W的单词的开始位|?
c7B 修改到前?个以I格作ؓ分隔W的单词的开始位|?
c0 修改到某行的l尾位置
c} 修改到某个语句的l尾位置
c4} 修改到第四个语句的结位|?
cQ?修改到某个语句的开始位|?
cQ?修改到某个段落的l尾位置
c{ 修改到某个段落的开始位|?
c7{ 修改到当前段落v始位|之前的W?个段落位|?
ctc 修改当前行直C一个字Wc所出现位置之间的内?
C 修改到某一行的l尾
cc 修改当前?
5cc 修改从当前行所开始的5行内?
. 重复上一ơ修改!
13}Set 选项讄
set all 列出所有选项讄情况?
set term 讄l端cd?
set ignorecase 在搜索中忽略大小写?
set list 昄制表?^I)和行标?$)?
set number 昄行号?
set showmode C用户处在什么模式下
set report 昄由面向行的命令修改国的行数目?
set terse 昄短的警告信息?
set warn 在{到别的文件时Q若没有保存当前文g则显C?No write 信息?
set autowrite 在?n”和?!”命令之前都自动保存文g
set nomagic 允许在搜索模式中Q用前面不带\的特D字W?
set nowrapscan 止 vi 在搜索到达文件两端时,又从另一端开始?
set mesg 允许 vi 昄其他用户?write 写到自己l端上的信息?
autoindent (ai) noai 使新行自动羃q?和上(?行的位置寚w
autoprint (ap) ap 每条命o之后都显C出修改之处
autowrite (aw) noaw ?n,:!命o之前都自动保存文?
beautify (bf) nobf 在输入的时候忽略所有的控制字符(除了制表?tab),换行(newline),q纸(formfeed))
directory= (dir=) /tmp 存放~冲区的目录?
edcompatible noedcompatible 在替换的时候用类ed的用?
errorbells (eb) errorbells 出错的时候响?
exrc (ex) noexrc 允许在主目录(home)外面之外?exrc文g
hardtabs= (ht=) 8 讄制表的边界
ignore case (ic) noic 正规式里忽略大小?
lisp nolisp 打开lisp模式
list nolist 昄所有的制表键和行的l尾
magic agic 可以使用更多的正规表辑ּ
mesg mesg 允许向终端发送消?
number (nu) nonumber 昄行号
open open 允许开攑֒可视?
optimize (opt) optimize 优化吞吐?打印时不发回?
paragraphs= (para=) IPLPPPQPPLIbp 讄{ & }的分界符
prompt prompt 命o模式下的输入l出:的提C符
readonly (ro) noro 除非?号否则不准保存文?
redraw noredraw 当编辑的时候重l屏q?
remap remap 允许宏指向其他的?
report= 5 如果影响的行?q个数的话就报告
scroll 1/2 window 下卷屏幕时滚动屏q的数目, 同样q也是z命o输出的行?z 输出2倍滚屏的大小)
sections= SHNHH HU 定义节的末尾(当用命令[[ ?]] ?
shell= (sh=) /bin/sh ~省的SHELL,如果讄了环境变量SHELL的话,׃用变?
shiftwidth= (sw=) 8 当用移?shift)命o时移动的字符?
showmatch (sm) nosm 昄{, }, (, ), [, 或?] 的匹配情?
showmode noshowmode 昄你处在什么模式下?
slowopen (slow) 插入之后不要立刻更新昄
tabstop= (ts=) 8 讄制表停止?tabstop)的长?
taglength= (tl=) 0 重要标记的字W个?0表示所有的字符)
tags= tag, /usr/lib/tags 定义包含标记的文件\?
term= 讄l端cd
terse noterse 昄短的错误信息
timeout (to) timeout 一U钟后键盘映超?
ttytype= 讄l端cd
warn warn 昄"No write since last change"信息
window= (w=) 可视模式下窗口的行数
wrapmargin= (wm=) 0 双?大于0的话最双的单词将折行,留出n个空白位|?
wrapscan (ws) ws 查找到文件尾后再重头开?
writeany (wa) nowa 可以保存CQ意一个文件去
14}Ҏ字符
^ 匚w字符串位于行首?
$ 匚w字符串位于行?
. 用在模式串中Q表CZQ何单个字W?
在命令模式下Q重复上ơ的命o?
* 在模式串中,表示其前字符可出CQ意多ơ?
[] 用在模式串中,表示指定方位内字W,其中可用-表示一个字
W范_用^表示不在某个范围内的字符?
ESC 从插入状态{换到命o状?
^[ 功能?ESC
15]大小写{?
guu 行小?
gUU 行大?
g~~ 行翻转(当然指大写啦)
guw 字小?狭义? 译注Q徏议对比iw
gUw 字大?狭义?
g~w 字翻?狭义?
vEU 字大?q义?
vE~ 字翻?q义?
ggguG 把整个文章全部小写(ft!bt!Q?
16) 跌{'. 跛_最后修改的那一?(有用)(ft,怎么又是q个评h)
`. 不仅跛_最后修改的那一行,q要定位C改点
依次沿着你的跌{记录向回?(从最q的一ơ开?
依次沿着你的跌{记录向前?
:ju(mps) 列出你蟩转的
17)命o历史
:history 列出历史命o记录
:his c 命o行命令历?
:his s 搜烦命o历史
q/ 搜烦命o历史的窗?
q 命o行命令历史的H口
: 历史命o记录的窗?
18]寄存?
# 列出寄存?Registers)
:reg 昄所有当前的registers
"1p 表示引用registerQ?表示一个名字叫?的registerQp是_脓QpasteQ命?
译释Q?
"也用来定义register
先输?",表示定义register
然后输入名字Q如0~9,a~z
然后执行删除或复制命令,如dd或yQ?
或者是visual模式下的d(删除选中的部?或y(复制选中的部?
则被删除或复制的部分p存入了这个命名的register
观察Q一个特D的register, "" Q里面存储了一个匿名的删除/复制
在你执行dd或y的时候,被作用的部分被存C""?
19}命o?
"ayy@a 把当前行作ؓ一个Vim命o来执?
译释Q?ayy 是定义当前行到register aQ然后@a是执行register a中存储的指o
10yy copy 当前行以?0?
11} 排序
:%!sort -u 使用sortE序排序整个文gQ用l果重写文gQ?
!1Q?sort -u 排序当前D落 (只能在normal模式下?!)
:.,+5!sort 排序当前行及以下5?
20Q?列操?
:%s= [^ ]+$=&&= 复制最后一?
:%s= f+$=&&= 一L功能
:%s= S+$=&& ft,q是一?
:s/(.*).*)/2"1/ 颠倒用:分割的两个字D?
:%s(w+s+))str1:1str2: 处理列,替换所有在W三列中的str1
:%sw+)(.*s+)(w+)$:321: 交换W一列和最后一?(??
·.vimrc
" Use Vim settings, rather then Vi settings (much better!).
set nocompatible
"c风格的羃q?
:set expandtab "不用tab只用空?
:set cindent shiftwidth=4
"自动~进
:set ai
"语法
":set filetype=java
:set syntax=java
"键入)、] 、}Q显C?、[、{
:set showmatch
"手工定义折叠
:set foldmethod=manual
"标签文g位置
set tags=/usr/share/vim/vim63/funcs.tags
"在插入模式下通过按[Ctrl]N自动地将McR方法或者字D名补齐
set complete+=k
" 不要用声音烦我!
set visualbell
"历史
:set history=50
"昄行列位置
:set ruler
"讄字符~码
set fileencodings=gb2312
"set encoding=euc-cn
"讄ruler
set ruler
"昄当前命o
set showcmd
"incsearch
set incsearch
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
"自动文件类?
:filetype on ]]> E序员面试、算法研I、编E艺术、红黑树4大系列集锦与ȝQ{载) http://www.shnenglu.com/chaosuper85/archive/2011/06/15/148742.htmlchaosuper chaosuper Wed, 15 Jun 2011 14:19:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/06/15/148742.html http://www.shnenglu.com/chaosuper85/comments/148742.html http://www.shnenglu.com/chaosuper85/archive/2011/06/15/148742.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/148742.html http://www.shnenglu.com/chaosuper85/services/trackbacks/148742.html ]]>学习LINUX内核的网址 http://www.shnenglu.com/chaosuper85/archive/2011/06/12/148556.htmlchaosuper chaosuper Sun, 12 Jun 2011 14:33:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/06/12/148556.html http://www.shnenglu.com/chaosuper85/comments/148556.html http://www.shnenglu.com/chaosuper85/archive/2011/06/12/148556.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/148556.html http://www.shnenglu.com/chaosuper85/services/trackbacks/148556.html ]]> 学习|络~程的网址记录 http://www.shnenglu.com/chaosuper85/archive/2011/06/11/148497.htmlchaosuper chaosuper Sat, 11 Jun 2011 09:21:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/06/11/148497.html http://www.shnenglu.com/chaosuper85/comments/148497.html http://www.shnenglu.com/chaosuper85/archive/2011/06/11/148497.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/148497.html http://www.shnenglu.com/chaosuper85/services/trackbacks/148497.html ]]>Linux下用automake生成makefileҎ(一)(转蝲) http://www.shnenglu.com/chaosuper85/archive/2011/05/09/146011.htmlchaosuper chaosuper Mon, 09 May 2011 03:19:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/05/09/146011.html http://www.shnenglu.com/chaosuper85/comments/146011.html http://www.shnenglu.com/chaosuper85/archive/2011/05/09/146011.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/146011.html http://www.shnenglu.com/chaosuper85/services/trackbacks/146011.html ]]>使用ubuntu 下用automake/autoconf生成makefile http://www.shnenglu.com/chaosuper85/archive/2011/05/08/145934.htmlchaosuper chaosuper Sun, 08 May 2011 03:17:00 GMT http://www.shnenglu.com/chaosuper85/archive/2011/05/08/145934.html http://www.shnenglu.com/chaosuper85/comments/145934.html http://www.shnenglu.com/chaosuper85/archive/2011/05/08/145934.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/145934.html http://www.shnenglu.com/chaosuper85/services/trackbacks/145934.html ]]>MFC中获取各U类指针的方?? http://www.shnenglu.com/chaosuper85/archive/2010/07/08/119753.htmlchaosuper chaosuper Thu, 08 Jul 2010 09:26:00 GMT http://www.shnenglu.com/chaosuper85/archive/2010/07/08/119753.html http://www.shnenglu.com/chaosuper85/comments/119753.html http://www.shnenglu.com/chaosuper85/archive/2010/07/08/119753.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/119753.html http://www.shnenglu.com/chaosuper85/services/trackbacks/119753.html m_pMainWnd;
4) 获得ViewQ已建立Q指?CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;
CyouView *pView=(CyouView *)pMain->GetActiveView();
5) 获得当前文指针 CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument();
6) 获得状态栏与工h指针 CStatusBar * pStatusBarQ?CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);
7) 如果框架中加入工h和状态栏变量q可以这?(CMainFrame *)GetParent()->m_wndToolBar;
(CMainFrame *)GetParent()->m_wndStatusBar;
8) 在Mainframe获得菜单指针 CMenu *pMenu=m_pMainWnd->GetMenu();
9) 在Q何类中获得应用程序类
用MFC全局函数AfxGetApp()获得?
10) 从文类取得视图cȝ指针
我是从http://download.cqcnc.com/soft/program/article/vc/vc405.html学到的,从文获得视囄指针目的一般ؓ了控制同一文档的多个视囄定位问题Q我的体会特别是文字处理CEditView当生多个视囄Ӟq个功能是非帔R要的?
CDocumentcL供了两个函数用于视图cȝ定位Q?
GetFirstViewPosition()和GetNextView() virtual POSITION GetFirstViewPosition() const;
virtual CView* GetNextView(POSITION& rPosition) const;
注意QGetNextView()括号中的参数用的是引用方式,因此执行后值可能改变?
GetFirstViewPosition()用于q回W一个视图位|(q回的ƈ非视囄指针Q而是一个POSITIONcd|QGetNextView()有两个功能:q回下一个视囄的指针以及用引用调用的方式来改变传入的POSITIONcd参数的倹{很明显Q在TestE序中,只有一个视囄Q因此只需这两个函数调用一ơ即可得到CTestView的指针如下(需定义一个POSITIONl构变量来辅助操作)Q?CTestView* pTestView;
POSITION pos=GetFirstViewPosition();
pTestView=GetNextView(pos);
q样Q便可到了CTestViewcȝ指针pTestView.执行完几句后Q变量pos=NULL,因ؓ没有下一个视囄Q自然也没有下一个视囄的POSITION.但是q几条语句太单,不具有太强的通用性和安全特征Q当象前面说的那P当要在多个视图ؓ中返回某个指定类的指针时Q我们需要遍历所有视囄Q直到找到指定类为止。判断一个类指针指向的是否某个类的实例时Q可用IsKindOf()成员函数时行查,如: pView->IsKindOf(RUNTIME_CLASS(CTestView));
卛_查pView所指是否是CTestViewcR?
有了以上基础Q我们已l可以从文cd得Q何类的指针。ؓ了方便,我们其作ؓ一个文类的成员函敎ͼ它有一个参敎ͼ表示要获得哪个类的指针。实现如下: CView* CTestDoc::GetView(CRuntimeClass* pClass)
{
CView* pView;
POSITION pos=GetFirstViewPosition();
while(pos!=NULL){
pView=GetNextView(pos);
if(!pView->IsKindOf(pClass))
break;
}
if(!pView->IsKindOf(pClass)){
AfxMessageBox("Connt Locate the View.\r\n http://www.VCKBASE.com");
return NULL;
}
return pView;
}
其中用了两次视图cȝ成员函数IsKindOf()来判断,是因为退出while循环有三U可能:
1.pos为NULLQ即已经不存在下一个视囄供操作;
2.pView已符合要求?
1?同是满。这是因为GetNextView()的功能是当前视图指针改变成一个视囄位置同时q回当前视图指针Q因此pos是pView的下一个视囄的POSITION,完全有可能既是pos==NULL又是pViewW合需要。当所需的视图是最后一个视图是最后一个视囄时就如引。因此需采用两次判断?
使用该函数应遵@如下格式Q以取得CTestView指针ZQ:CTestView* pTestView=(CTestView*)GetView(RUNTIME_CLASS(CTestView));
RUNTIME_CLASS是一个宏Q可以简单地理解它的作用Q将cȝ名字转化为CRuntimeClass为指针?
至于强制cd转换也是Z安全Ҏ考虑的,因ؓ从同一个基cM间的指针cd是互相兼容的。这U强制类型{换也许ƈ不必要,但能避免一些可能出现的ȝ?
3.从一个视囄取得另一视图cȝ指针 l合1?Q很Ҏ得出视图cM间互相获得指针的ҎQ就是用文cM中{Q先?的方法得到文档类的指针,再用2的方法,以文类的视囑֮位函数取得另一个视囄。同P可以实现成一个函敎ͼ
Q假设要从CTestAView中取得指向其它视囄的指针)CView* CTestAView::GetView(CRuntimeClass* pClass)
{
CTestDoc* pDoc=(CTestDoc*)GetDocument();
CView* pView;
POSITION pos=pDoc->GetFirstViewPosition();
while(pos!=NULL){
pView=pDoc->GetNextView(pos);
if(!pView->IsKindOf(pClass))
break;
}
if(!pView->IsKindOf(pClass)){
AfxMessageBox("Connt Locate the View.");
return NULL;
}
return pView;
}
q个函数?中的GetView()相比Q一是多了第一句以取得文cL针,二是在GetFirstViewPosition()和GetNextView()前加上了文cL针,以表C它们是文cL员函数?
有了此函敎ͼ当要从CTestAView中取得CTestBView的指针时Q只需如下QCTestBView* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView));
11Q对于单文档中也可以加入多个文档模板Q但是一般的开发就使用MDI方式开发多文档模板Q其Ҏ与上q视囄获取Ҏ很接q,q里E做解释Q如果不清楚Q请查阅MSDNQ(以下四个内容Q?1?2?3?4Q来源:http://sanjianxia.myrice.com/vc/vc45.htmQ?
可以用CWinApp::GetFirstDocTemplatePostion获得应用E序注册的第一个文模板的位置Q?
利用该值来调用CWinApp::GetNextDocTemplate函数Q获得第一个CDocTemplate对象指针?POSITION GetFirstDocTemplate( ) const;
CDocTemplate *GetNextDocTemplate( POSITION & pos ) const;
W二个函数返回由pos 标识的文模ѝPOSITION是MFC定义的一个用于P代或对象指针索的倹{通过q两个函敎ͼ应用E序可以遍历整个文档模板列表。如果被索的文模板是模板列表中的最后一个,则pos参数被置为NULL?
接我?
12Q一个文模板可以有多个文Q每个文模杉K保留q维护了一个所有对应文档的指针列表?
用CDocTemplate::GetFirstDocPosition函数获得与文模板相关的文集合中第一个文的位置Qƈ用POSITIONg为CDocTemplate::GetNextDoc的参数来重复遍历与模板相关的文列表。函数原形ؓQ?viaual POSITION GetFirstDocPosition( ) const = 0;
visual CDocument *GetNextDoc(POSITION & rPos) const = 0;
如果列表为空Q则rPos被置为NULL.
13Q在文中可以调用CDocument::GetDocTemplate获得指向该文模板的指针。函数原形如下: CDocTemplate * GetDocTemplate ( ) const;
如果该文档不属于文模板理Q则q回gؓNULL?
14)一个文可以有多个视。每一个文档都保留q维护一个所有相兌的列表。CDocument::AddView一个视q接到文上Q将该视加入到文相联系的视的列表中Qƈ视的文指针指向该文档。当有File/New、File/Open、Windows/New或Window/Split的命令而将一个新创徏的视的对象连接到文上时Q?MFC会自动调用该函数Q框枉过文档/视的l构文和视联pv来。当ӞE序员也可以Ҏ自己的需要调用该函数?Virtual POSITION GetFirstViewPosition( ) const;
Virtual CView * GetNextView( POSITION &rPosition) cosnt;
应用E序可以调用CDocument::GetFirstViewPositionq回与调用文相联系的视的列表中的第一个视的位|,q调用CDocument::GetNextViewq回指定位置的视QƈrPositon的值置为列表中下一个视的POSITION倹{如果找到的视ؓ列表中的最后一个视Q则rPosition|ؓNULL.
15)从一个视囄取得另一视图cȝ指针
q个应用在多视的应用E序中很多见Q一般如果自己在ȝ序或者主框架中做好变量记P也可以获得,q有比较通用的就是用文cM中{Q以文cȝ视图遍历定位Q取得另一个视囄。这个功能从本文W?0中可以得到?
16)获取分割视图中各个视囄指针
CSplitterWnd m_wndSplitterQ?
m_wndSplitter.CreateStatic(this, 1, 2)Q?/分割成一行两?
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftPaneView), CSize(10Q?10), pContext)Q?
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightPaneFrame), CSize(0, 0), pContext)Q?
//获取左边视图的两U方?
CLeftPaneView* pLeftPaneView = (CLeftPaneView*) m_wndSplitter.GetPane(0,0);
//上一句可以用下句代替Q?
//CLeftPaneView* pLeftPaneView = (CLeftPaneView *)GetActiveView();
//获取双视图
pLeftPaneView->m_pRightPaneFrame = (CRightPaneFrame*) m_wndSplitter.GetPane(0,1);
]]> 设计模式 http://www.shnenglu.com/chaosuper85/archive/2010/04/10/112141.htmlchaosuper chaosuper Sat, 10 Apr 2010 01:37:00 GMT http://www.shnenglu.com/chaosuper85/archive/2010/04/10/112141.html http://www.shnenglu.com/chaosuper85/comments/112141.html http://www.shnenglu.com/chaosuper85/archive/2010/04/10/112141.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/112141.html http://www.shnenglu.com/chaosuper85/services/trackbacks/112141.html ]]>关于北京户口的知?/title> http://www.shnenglu.com/chaosuper85/archive/2010/04/05/111657.htmlchaosuper chaosuper Mon, 05 Apr 2010 02:43:00 GMT http://www.shnenglu.com/chaosuper85/archive/2010/04/05/111657.html http://www.shnenglu.com/chaosuper85/comments/111657.html http://www.shnenglu.com/chaosuper85/archive/2010/04/05/111657.html#Feedback 0 http://www.shnenglu.com/chaosuper85/comments/commentRss/111657.html http://www.shnenglu.com/chaosuper85/services/trackbacks/111657.html ]]>
ҹƷþþþþ99 |
þþۺ |
ձƷþþþĻ8 |
þwwƷw˳ |
ŷƷþѿ |
ѾƷþþþþĻ |
þþþùƷ鶹ARӰԺ |
ƷþþþþԻ
|
ҹþþ |
AVպƷþþþ |
91þó |
þþAVɫۺ |
ھƷþþþþ鶹 |
Ʒþþѿ |
99þþþþѿ |
þþþþþƷͼƬ |
һֻƴƬ99þ |
þ99žŹѿС˵ |
þþùƷ
|
69Ʒþþþվ |
þۺϾɫۺϾƷ |
ٸþĻ
|
ƷȾþëƬ |
ƷŮþþþ99 |
Ʒþ
|
Ƶþ |
ۺϾþϵ |
þþþþþòҰ¸߳ |
91þۺ |
Ʒþþþ |
Ʒþþþþ |
þþ뾫ƷպĦ
|
þþþþAV |
˾þþƷһ |
þþƷƷƷ |
þӰԺҹƬ
|
˾Ʒþ岻 |
ƷŮٸavѾþ |
þ99Ʒþþþ |
þþƷɧ |
۲˾þþƷٸAV |