我在Visual Studio C ++中有一个Windows窗体。 (CLR)
在头文件中,我声明bool isRunning
(查找记事本是否正在运行):
private:
bool isRunning(LPCSTR pnotepad)
{
HWND hwnd;
hwnd = FindWindow(NULL, pnotepad);
if (hwnd != 0)
{
return true;
}
else
{
return false;
}
}
现在在复选框上,我希望它检查进程是否正在运行。
private: System::Void checkBox2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
if (bool application::GUI::isRunning)
label1->Text = "cat";
我收到此错误:
指向成员的指针对托管类
无效
我尝试将其更改为&isRunning
。这给了我与上面相同的错误和
对绑定成员函数表达式的非法操作
我该如何解决这个问题?
答案 0 :(得分:2)
下面的一切似乎都是错误的:
if (bool application::GUI::isRunning)
如果您不想保存功能结果,则不需要bool
。定义一个“bool”的变量,并将函数的结果赋值给:
bool result = isRunning(...);
if(result)
...
或
if(isRunning())
...
application::gui::isRunning
表达式返回您尝试定义为bool变量的isRunning
函数的指针。让我们说你把前两个修改为:
LPCSTR arg = ...;
if(application::GUI::isRunning(arg))
label1->Text = "cat";
这意味着您正在调用static
类的GUI
函数
或GUI
命名空间下的函数(GUI
也在application
命名空间下)。
我的猜测是GUI
是一个Form
类,所以你试图调用,因为函数不是static
,你会再次出错。所以你有两个案例需要解决:
如果您从GUI
LPCSTR arg = ...;
if (isRunning(arg))
label1->Text = "cat";
否则你需要一个指向GUI对象的指针:
LPCSTR arg = ...;
if (gui-> isRunning(arg))
label1->Text = "cat";
答案 1 :(得分:0)
我认为你正在以错误的方式进行函数调用。 可能它应该像下面一样,
if (application::GUI::isRunning())
{
label1->Text = "cat";
}
上面只是提示进行正确的函数调用 - 但是由于isRunning
是一个私有成员函数,它如何直接从外部类调用,而且不需要创建任何对象。它不是静态成员函数。请检查这一点。