在学习DirectSound播放声音时有一个函数:SetCooperativeLevel(m_hWnd,DSSCL_PRIORITY),第一个参数是窗口句柄,使用NULL会返回失败的,而我的是Console程序,如何得到一个窗口句柄(当创建一个窗口,也是可以的,但比较繁琐,下面的方法比较简单)
HWND GetConsoleHwnd(void)
{
<span style="white-space:pre"> </span>#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndFound; // This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
// WindowTitle.
char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
// WindowTitle.
// Fetch current window title.
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
// Format a "unique" NewWindowTitle.
wsprintf(pszNewWindowTitle,"%d/%d",
GetTickCount(),
GetCurrentProcessId());
// Change current window title.
SetConsoleTitle(pszNewWindowTitle);
// Ensure window title has been updated.
Sleep(40);
// Look for NewWindowTitle.
hwndFound=FindWindow(NULL, pszNewWindowTitle);
// Restore original window title.
SetConsoleTitle(pszOldWindowTitle);
return(hwndFound);
}