本站首页    管理页面    写新日志    退出                                          --==~欢迎光临FoxWolf的Blog~==--   



 日志搜索


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告


我的分类

日志更新

最新评论

留言板

链接

 


Blog信息
blog名称:FoxWolf
日志总数:127
评论数量:246
留言数量:0
访问次数:854942
建立时间:2006年5月31日




[c/c++]不知道的函数总结
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/6/11 16:24:15

    1.关于SetSel()的用法:  CEDIT选取(反白)5-30个字符     SetSel(5,30)或者SetSel(MAKELONG(5,30));     选取所有字符     SetSel(0,-1)或SetSel(MAKELONG(0,-1));     取消所有选取     SetSel(-1,9)或SetSel(MAKELONG(-1,2002)) 2.转换问题 CString to Char * : LPCTSTR. Char * to CString: LPTSTR 3.GetDlgItem() GetDlgItem(控件ID):返回该控件的指针 CWnd::EnableWindow(布尔值):True使控件可用,False则禁用控件。 4.SetFocus 方法将焦点移至指定的控件或窗体。 语法 object.SetFocus object 所在处代表对象表达式,其值是“应用于”列表中的一个对象。 说明 对象必须是 Form 对象、MDIForm 对象或者能够接收焦点的控件。调用 SetFocus 方法以后,任何的用户输入将指向指定的窗体或控件。 焦点只能移到可视的窗体或控件。因为在窗体的 Load 事件完成前窗体或窗体上的控件是不可视的,所以如果不是在 Form_Load 事件过程完成之前首先使用 Show 方法显示窗体的话,是不能使用 SetFocus 方法将焦点移至正在自己的 Load 事件中加载的窗体的。 也不能把焦点移到 Enabled 属性被设置为 False 的窗体或控件。如果已在设计时将 Enabled 属性设置为 False,必须在使用 SetFocus 方法使其接收焦点前将 Enabled 属性设置为 True。  5. main(){char *s="Golden Global View";clrscr();memset(s,'G',6);printf("%s",s);getchar();return 0;} 3。memset() 函数常用于内存空间初始化。如:char str[100];memset(str,0,100);4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a));memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。strcpy就只能拷贝字符串了,它遇到'\0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘\0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。5.补充:某人的一点心得memset可以方便的清空一个结构类型的变量或数组。如:struct sample_struct{char csName[16];int iSeq;int iType;};对于变量struct sample_strcut stTest;一般情况下,清空stTest的方法:stTest.csName[0]='\0';stTest.iSeq=0;stTest.iType=0;用memset就非常方便:memset(&stTest,0,sizeof(struct sample_struct));如果是数组:struct sample_struct TEST[10];则memset(TEST,0,sizeof(struct sample_struct)*10);6。strcpy原型:extern char *strcpy(char *dest,char *src);用法:#include功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。memcpy原型:extern void *memcpy(void *dest, void *src, unsigned int count);用法:#include功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。memset原型:extern void *memset(void *buffer, int c, int count);用法:#include功能:把buffer所指内存区域的前count个字节设置成字符c。说明:返回指向buffer的指针。 6.AnsiString类的c_str()的作用 举个例子:比如你调用API函数:ShellExcuteString FilePath("E://main//Test.exe");ShellExecute(Application->Handle,"Open",FilePath.c_str(),NULL,NULL,SW_SHOW); 很简单,把string类表示的字符串转换为一个普通的c字符串(char *)类型的,有些老式的函数要这个类型--------------------------------------------------------------------------------------------------- 把string类串转换 字符串(char *)类型char *a;string ss;ss="asdfsdg";a=ss.c_str();//必须这样//不可以a=ss;-------------------------------------------------------------------------------------------------------- AnsiString是一个类,其中的空间是动态分配的,当我们对变量进行赋值的时候,AnsiString会根据赋值字符串的大小决定空间的大小,比如:AnsiString str = "111111";那么,这个空间现在就是7个字节。如果下一次你又另外的赋值:str = "1111111111";那么现在空间就是11个字节,空间大小发生了变化AnsiString::c_str()成员函数返回当前的对象的字符串空间的首指针,让你可以对该空间进行基于字符串的操作,但是,正是因为AnsiString是动态分配的,所以该字符指针不是永远不变的,而是随时会变的,所以该指针只是一个临时的指针,不要永久的保存,因为说不定什么时候就“野”了。 c_str()返回的是AnsiString内部字符串存贮区的地址,但不提倡将这个地址保留下来(见BCB帮助),原因在于AnsiString有自己的内存管理机制,这个地址是可能不断变化的,保留下来的指针在某一时刻就会失效导效内存的非法访问错误.典型的情况是保留了指针后字符串加长了,AnsiString不得不重新分配内存以放下新的字符串,此时的c_str()将返回新的地址,原地址内存已经释放. 所以c_str()应该随用随调,不要用一个指针变量来保存.这种错误是逻辑错误,编译器无法发现,建议AnsiString转换char时采用下列方法:char* cTemp = new char[ sScr.length() + 1 ];strcpy( cTemp, sScr );...delete [] cTemp;cTemp = NULL; 7. void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。 它和 UpdateWindow( )区别在于: UpdateWindow( )的作用是使窗口立即重绘。调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。


阅读全文(2122) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144759589 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号