很快结贴:GetFileAttributes

疯癫小程序 2011-03-02 01:13:57
WINBASEAPI
DWORD
WINAPI
GetFileAttributesA(
__in LPCSTR lpFileName
);

这里的 __in 是什么意思?是不是表示参数是传入型?

WINBASEAPI也能这样加?

感觉微软的编译器真的好乱。。。这样都行?
...全文
184 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hucailai 2011-03-02
  • 打赏
  • 举报
回复
__in
__out
就是一个意思 是一个宏,是空的。
izardMan 2011-03-02
  • 打赏
  • 举报
回复
这个是文件数据指针,应该可以为NULL
疯癫小程序 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 visualeleven 的回复:]
即你需要分配一块内存区域来接收数据
[/Quote]
这个是必须要接收的吗? 我好像印象中是有些函数尽管有返回值,但同样可以不用接收它的返回值啊。
Eleven 2011-03-02
  • 打赏
  • 举报
回复
即你需要分配一块内存区域来接收数据
Eleven 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 helonsy 的回复:]
引用 4 楼 visualeleven 的回复:
__in 表示需要传入参数


C/C++ code

WINBASEAPI
__out HANDLE
WINAPI
FindFirstFileA(
__in LPCSTR lpFileName,
__out LPWIN32_FIND_DATAA ……
[/Quote]
用来接收传出来的数据。
疯癫小程序 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
__in 表示需要传入参数
[/Quote]

WINBASEAPI
__out HANDLE
WINAPI
FindFirstFileA(
__in LPCSTR lpFileName,
__out LPWIN32_FIND_DATAA lpFindFileData
);


部长,这个 __out 是什么意思?
疯癫小程序 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 aaadddzxc 的回复:]
楼主是散分来的吧
[/Quote]
对啊,我天天散,好让像像您这样的牛人多一天内裤穿啊。。。

我天天散,以后多多关注啊,您会很快多一条内裤的。。。
xengine-qyt 2011-03-02
  • 打赏
  • 举报
回复
楼主是散分来的吧
疯癫小程序 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 arpnet99 的回复:]
C/C++ code
#ifndef IN
#define IN
#endif

#ifndef OUT
#define OUT
#endif
[/Quote]
#define __in __pre __valid __pre __deref __readonly
__in好像是像上面那样定义的吧?
TandyT 2011-03-02
  • 打赏
  • 举报
回复
__in 就是表示需要传入参数的啊
这不是鸭头 2011-03-02
  • 打赏
  • 举报
回复
#ifndef IN
#define IN
#endif

#ifndef OUT
#define OUT
#endif
zyyoung 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
__in 表示需要传入参数
[/Quote]
这个是很形象的标志
Eleven 2011-03-02
  • 打赏
  • 举报
回复
__in 表示需要传入参数
Eleven 2011-03-02
  • 打赏
  • 举报
回复
#if !defined(COREDLL)
#define WINBASEAPI DECLSPEC_IMPORT
#else
#define WINBASEAPI
#endif
疯癫小程序 2011-03-02
  • 打赏
  • 举报
回复
WINBASEAPI就是__declspec(dllimport),表示dll的导入函数,这个我查出来了。。。
快乐鹦鹉 2011-03-02
  • 打赏
  • 举报
回复
是啊 。
void CTestDlg::ReadIniInform()// 读取配置文件 { CString strPath; char tmpstr[120] = {0}; strPath = GetINIPath(); if (GetFileAttributes(strPath) == -1) { return; } memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","频谱仪起始频率" ,NULL, tmpstr,MAX_PATH,strPath); startfreq=atof(tmpstr); memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","频谱仪终止频率" ,NULL, tmpstr,MAX_PATH,strPath); stopfreq=atof(tmpstr); memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","频谱仪频率步进" ,NULL, tmpstr,MAX_PATH,strPath); stepfreq=atof(tmpstr); memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","信号源频率" ,NULL, tmpstr,MAX_PATH,strPath); xhyfreq=atof(tmpstr); memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","信号源功率" ,NULL, tmpstr,MAX_PATH,strPath); xhyamp=atof(tmpstr); memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","信号源VISA地址" ,NULL, tmpstr,MAX_PATH,strPath); XHYvisa=tmpstr; memset(tmpstr, 0,120); ::GetPrivateProfileString("设置","频谱仪VISA地址" ,NULL, tmpstr,MAX_PATH,strPath); PPYvisa=tmpstr; } void CTestDlg::WriteDataToWnd() { CString temp; temp.Format("%.3f",startfreq); GetDlgItem(IDC_PPYSTARTFREQ)->SetWindowText(temp); temp.Format("%.3f",stopfreq); GetDlgItem(IDC_PPYSTOPFREQ)->SetWindowText(temp); temp.Format("%.3f",stepfreq); GetDlgItem(IDC_PPYSTEPFREQ)->SetWindowText(temp); temp.Format("%.3f",xhyfreq); GetDlgItem(IDC_XHYFREQ)->SetWindowText(temp); temp.Format("%.2f",xhyamp); GetDlgItem(IDC_XHYAMP)->SetWindowText(temp); GetDlgItem(IDC_XHYVISA)->SetWindowText(XHYvisa); GetDlgItem(IDC_PPYVISA)->SetWindowText(PPYvisa); } void CTestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CString strtmp, strPath; char tmpstr[120] = {0}; strPath = GetINIPath(); if (GetFileAttributes(strPath) == -1) { return; } GetDlgItem(IDC_XHYVISA)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","信号源VISA地址",strtmp,strPath); GetDlgItem(IDC_PPYVISA)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","频谱仪VISA地址",strtmp,strPath); AfxMessageBox("修改完成"); } void CTestDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 CString strtmp, strPath; char tmpstr[120] = {0}; strPath = GetINIPath(); if (GetFileAttributes(strPath) == -1) { return; } GetDlgItem(IDC_PPYSTARTFREQ)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","频谱仪起始频率",strtmp,strPath); GetDlgItem(IDC_PPYSTOPFREQ)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","频谱仪终止频率",strtmp,strPath); GetDlgItem(IDC_PPYSTEPFREQ)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","频谱仪频率步进",strtmp,strPath); GetDlgItem(IDC_XHYFREQ)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","信号源频率",strtmp,strPath); GetDlgItem(IDC_XHYAMP)->GetWindowTextA(strtmp); ::WritePrivateProfileString("设置","信号源功率",strtmp,strPath); AfxMessageBox("修改完成"); }
vb编程常用命令集锦 vb编程常用命令集锦 API函数声明 数据类型与"类型安全" 常 数 结 构 小 结 一些API函数集: 控件与消息函数、硬件与系统函数、菜单函数、绘图函数 什么是API 首先,有必要向大家讲一讲,什么是API。所谓API本来是为C和C++程序员写的。API说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在Windows95和Windows NT操作系统上的应用程序。可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。 如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,甚至是数百个。我们能都掌握它嘛?回答是否定的∶不可能掌握。但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了。但,在其中还应当抛开掉同VB本身自有的函数重复的函数。如,VB 的etAttr命令可以获得文件属性,SetAttr可以设置文件属性。对API来讲也有对应的函数 GetFileAttributes和SetFileAttributes,性能都差不多。如此地一算,剩下来的也就5、600个。是的,也不少。但,我可以敢跟你说,只要你熟悉地掌握100个,那么你的编程水平比现在高出至少要两倍。尽管人们说VB和WINDOWS具有密切的关系,但我认为,API更接近 WINDOWS。如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。这个收获是来自不易的。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧