- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++初学者常见问题解惑
Visual C++是功能非常强大的工具,但也是公认比较难于入门的。这里,我们整理了一些初学者常见的问题,希望帮助那些刚刚接触Visual C++的朋友享受编程的乐趣。
问:我是一新手,请问我以前在TC++中写的C++程序,在VC中要建立一个什么样的工程来运行它(程序在TC++是正确的)?
答:在VC++中新建工程时,你可以选择Win 32 Console Application。这种控制台程序像DOS程序一样工作并输出文本信息,虽然不能使用图形函数,但可以使用其它Windows API函数。要注意的是,如果你的TC++程序使用了非ANSI标准的语句,如Conio.h中的函数,可能需要进行一些修改才能在VC++下编译。
问:VC中有没有类拟DoEvents的函数?
答:你可以使用这样的函数:
BOOL CheckMessageQueue()
{ MSG msg;
while(PeekMessage(msg, NULL, 0, 0, PM_REMOVE)){
if(msg.message==WM_QUIT)
return FALSE;
TranslateMessage(msg);
DispatchMessage(msg);
}
return TRUE;
}
调用PeekMessage取消息时,其它程序将有机会获得控制权,可以实现DoEvents的效果。但要注意这个函数返回值的含义,如果该函数返回FALSE,说明用户按下了关闭按钮。
问:在不拷贝文件的情况下,如何在C/C++中去掉文件尾部,也就是快速剪短文件?
答:在C/C++中,一般都有一个函数chsize或_chsize可以改变文件的大小。下面是一段例子:
int fh, result;
unsigned int nbytes = BUFSIZ;
/* 打开文件 */
if( (fh = _open( c:\\testdata, _O_RDWR | _O_CREAT, _S_IREAD
| _S_IWRITE )) != -1 )
{ printf( 修改前文件长度: %ld\n, _filelength( fh ) );
if( ( result = _chsize( fh, 329678 ) ) == 0 )
printf( 成功地修改了文件长度\n );
else
printf( 改变文件长度出错\n );
printf( 修改后文件长度: %ld\n, _filelength( fh ) );
_close( fh );}}
问:使用VC5.0将OBJ文件编译成DLL后,用VB调用时总说找不到入口点。请问在什么地方加入关于入口点的参数?
答:找不到入口点有以下几种情况:
1.没有注意函数名的大小写
在Win32中,DLL中的函数和VB中的函数必须大小写完全相同,否则系统认为DLL中没有要调用的函数。
2.没有声明入口函数
你需要在DLL的.def文件中加上入口函数,如:
EXPORTS
SetData @1
GetData @2
这样VB程序就可以访问SetData和GetData函数了。其中@1、@2是这两个函数的引用序号,通常在VB中不使用。如果你的DLL工程原本没有使用.def文件,你可以建立一个文本文件,并命名为.def扩展名存盘后加入到工程中。
3.采用了C++编译方式
在C++中编译函数时会将函数名进行转换,如将DLL中的kk(double k)转换为_kk@8。解决的办法有两种:
(1)如果没有使用C++的类,可以将.cpp文件改名为.c,就不进行这种转换了。
(2)在函数定义前加上extern c,如:
extern c void _stdcall kk(double k);
需要指出的是,VC++允许不编写.def文件,而是在函数定义前加__declspec(dllexport)修饰符,这样的函数也可以被外部程序调用。但是这样的函数都将会按C++方式进行函数名转换。虽然这样的函数可以被VB程序调用,但显得不方便,所以仍然建议使用.def文件的办法。
您可能关注的文档
- vb统考试题.doc
- VB拓展练习1教程.doc
- VB网络编程中Winsock的使用-jy.doc
- vb网络聊天程序制作方法.doc
- VB网络性能监控与流量统计系统0247.doc
- VB威力加强版选择题.doc
- VB未来教育.doc
- VB文件操作.doc
- VB文件操作小结.doc
- VB文件练习.doc
- 初中生亲子阅读与阅读策略训练研究论文.docx
- 高中数学课堂如何提升学生空间想象力的教学策略研究论文.docx
- 初中英语课堂互动模式下的教学策略与教学评价改革与实践研究论文.docx
- 小学美术教育中创新思维培养路径研究论文.docx
- 绿色化学实验在初中化学教学中的应用与优化策略论文.docx
- 小学生早餐饮食习惯对视力保护作用的研究与饮食习惯教育论文.docx
- 初中生艺术社团活动对学生社会责任感培养的实证研究论文.docx
- 小学数学课堂学生数学学习心理辅导策略创新研究论文.docx
- 劳动教育在学生劳动教育理论研究中的地位论文.docx
- 小学英语单元整体教学目标与多元智能理论的结合实践论文.docx
文档评论(0)