我是VC ++的自学者。我试图读取环境变量,如果有特定变量,那么它应该启用一个复选框。这是代码
if (Environment.GetEnvironmentVariable("GR_STRIP") == NULL)
{
GetDlgItem(PRINTER)->Enabled = false ;
}
else
GetDlgItem(PRINTER)->Enabled = true ;
但我收到了以下错误
error C2660: 'GetEnvironmentVariable' : function does not take 1 parameter
error C2039: 'Enabled' : is not a member of 'CWnd'
我甚至尝试过改变
if (Environment::GetEnvironmentVariable("GR_STRIP") == NULL)
if (System::Environment::GetEnvironmentVariable("GR_STRIP") == NULL)
但没有效果。提前致谢
答案 0 :(得分:2)
好的,您发布的代码非常令人困惑。如果您使用的是C ++ / CLI,则应该可以使用(如果您更改为使用::
而不是.
)。如果没有,我不知道你在哪里找到了,但.Net Framework中的任何内容都是禁止的。
相反,您可以使用Windows API调用GetEnvironmentVariable
声明如下:
DWORD WINAPI GetEnvironmentVariable(
_In_opt_ LPCTSTR lpName,
_Out_opt_ LPTSTR lpBuffer,
_In_ DWORD nSize
);
我没有测试过这个,但我认为它应该做你想要的(示例不读取值,因为你似乎只想检查存在:
DWORD size = 0;
GetEnvironmentVariable("GR_STRIP", NULL, &size); //get the size of the value
if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
{
EnableWindow(GetDlgItem(PRINTER), FALSE);
}
else
{
EnableWindow(GetDlgItem(PRINTER), TRUE);
}
"更简单"选项是使用C库函数getenv
if (getenv("GR_STRIP") == NULL)
{
EnableWindow(GetDlgItem(PRINTER), FALSE);
}
else
{
EnableWindow(GetDlgItem(PRINTER), TRUE);
}
我认为你会得到一些混合的.Net,MFC和Windows API代码。我更新了使用EnableWindow的答案。如果你在MFC课程中,那就不一样了。