大家帮忙看看这段代码哪里 错了?我得到的窗口句柄总是为0 !

ppyy 2001-12-20 04:55:16
HWND Had[3];

BOOL CALLBACK EnumWindowsProc(HWND hwnd, DWORD lParam)
{
char szCaption[127];
::GetWindowText(hwnd,szCaption,127);
for (int i=0;i<=3;i++);
{

if (!(strcmp(szCaption,"我的窗口")))
{
if (Had[i]==0)
Had[i]=hwnd;
}
}
return true;
}


void CFindwindowDlg::OnButton1()
{
// TODO: Add your control notification handler code here
for (int i=0;i<=3;i++)
{
Had[i]=0;
}

EnumWindows((int (__stdcall *)(struct HWND__ *,long))EnumWindowsProc, 0);
CString szStr;
szStr.Format("%d",Had[0]);
::MessageBox(NULL,szStr,"test",MB_ICONINFORMATION);
}

我桌面上有四个窗口的标题都是“我的窗口”,但是程序运行的时候弹出的对话框总是0
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppyy 2001-12-20
  • 打赏
  • 举报
回复
BOOL CALLBACK EnumWindowsProc(HWND hwnd, DWORD lParam)
{
char szCaption[127];
::GetWindowText(hwnd,szCaption,127);
CString szTemp=_T("");
szTemp.Format(szCaption);
if (!(szTemp.CompareNoCase("我的窗口")))
{
HWND h=::FindWindow(NULL,"我的窗口");
for (int i=0;i<=3;i++)
{
if (Had[i]==0)
Had[i]=h;
}
}

return true;
}

别的地方都没有修改,这样就可以找到窗口句柄了
但是为什么开始那种方法就不行呢?
ppyy 2001-12-20
  • 打赏
  • 举报
回复
我自己用另外一个方法一定搞定,谢谢
ppyy 2001-12-20
  • 打赏
  • 举报
回复
没有用,我用你的方法试过了,还是不行
zzh 2001-12-20
  • 打赏
  • 举报
回复
(!(strcmp(szCaption,"我的窗口)不要使用这个方式进行比较,操作系统是什么,如果是98,是使用单字符,如果是2000或NT,是使用宽字符的也就是UNICODE字符集,你采用这种方式进行比较当然查找不到了。
CString strTemp = _T("");
strTemp.Format("szCaption);
strTemp.CompareNoCase("我的窗口")
CString 支持ANSI和UNICODE两个版本。

16,551

社区成员

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

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

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