【问题标题】:Is it feasible to pass HANDLE(S) to another function?将 HANDLE(S) 传递给另一个函数是否可行?
【发布时间】:2013-11-24 04:18:47
【问题描述】:

这样编译时:

void DisplayPos (void)
{
    SetWindowPos (ConsoleWindow, HWND_TOPMOST, 0, 0, 600, 600, SWP_SHOWWINDOW);
}

int main (void)
{
    HWND ConsoleWindow = GetConsoleWindow();
    DisplayPos ();
}

GCC 将报告:

Line 3 | error: 'ConsoleWindow' undeclared (first use in this function) // expected

但是在不声明新函数的情况下将 HANDLE 传递给另一个函数是否可行?谢谢。

【问题讨论】:

  • 传递句柄很好——但实际上你必须传递它们。函数不能看到彼此的局部变量。
  • @cHao 那么,如何传递 HANDLE(s) ?
  • 看到(void)了吗?这就是参数所在,void 表示您不接受任何参数。尝试将其声明为 void DisplayPos(HWND ConsoleWindow)。然后,您可以在调用DisplayPos 时传递括号中的句柄,例如DisplayPos(ConsoleWindow);
  • @cHao 哦,谢谢。我懂了。 HWND 也是intchar 等类型。对吧?
  • 我建议,在你尝试学习 Windows 编程之前,你先学习 C 编程。试图同时学习两者将是非常困难的。

标签: c winapi mingw32


【解决方案1】:

感谢@cHao 的帮助。 :-)

我回答了我自己的问题。

void DisplayPos (HWND ConsoleWindow)
{
    SetWindowPos (ConsoleWindow, HWND_TOPMOST, 0, 0, 600, 600, SWP_SHOWWINDOW);
}

int main (void)
{
    HWND ConsoleWindow = GetConsoleWindow();
    DisplayPos (ConsoleWindow);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2012-09-25
    • 2020-10-03
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多