lpszClassName问题

hymzk 2011-10-24 02:34:24
写了一个画板,要实现通信功能,也就是说一个窗口的操作要在另一个窗口中也能看到,在实现功能是时候发现一个问题,

就是窗口类注册是的类名怎么写,两个窗口用的都是同一段代码,怎么才能区分那个是哪个呢?
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjiawei007 2011-10-25
  • 打赏
  • 举报
回复
遍历任务栏中的窗体,根据你的类名,或者窗体名,进行过滤。

过滤后你可以获得你所要的多个窗体,记录下他们的HWND。放入一个vector中。


自己代码中摘出来的 参考下。



vector<HWND> m_windows;


HWND hwnd = ::FindWindow( L"Shell_TrayWnd ",NULL); //获得控制台窗体


EnumChildWindows(hwnd,EnumChildProc,(LPARAM)this);


回调

BOOL CALLBACK EnumChildProc(HWND hwndChild,LPARAM lParam)
{

TCHAR szWndTitle[1024] = {0};

Cself_clickDlg* p = (Cself_clickDlg*)lParam;

GetClassName(hwndChild,szWndTitle,1024);//获取类名

TCHAR temp[14] =L"XYQ_STOCK";//过滤

/*int nLen = GetWindowText(hwndChild,szWndTitle,1024);*/

if (memcmp(temp, szWndTitle,14) == 0 && wcslen(szWndTitle) < 20)
{

//TCHAR str[20] =L"qq:1151134728";
/* ::SendMessage(hwndChild, WM_SETTEXT,0,(LPARAM)str);*/




/* p->AddWindow(hwndChild);*/

SendMessage(hwndChild,WM_SHOWWINDOW,0,0);
}



return TRUE;


}


hymzk 2011-10-24
  • 打赏
  • 举报
回复
被搞晕了,我要实现的功能是不是多个线程之间的通信呢?是的话,要怎么做呢,看到有用Sendmessage的,

然后FindWindowEX中找到接收消息的窗口句柄中根据类名来找,可是代码中的类名都是相同的啊。各位大侠

知道的能不能讲解下呢,最好详细点啊
healer_kx 2011-10-24
  • 打赏
  • 举报
回复
一段注册代码,注册两个class name即可。
xhb296 2011-10-24
  • 打赏
  • 举报
回复
HWND怎么具体操作呢?有不同的类名解决应该简单一点
Eleven 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 hymzk 的回复:]
写了一个画板,要实现通信功能,也就是说一个窗口的操作要在另一个窗口中也能看到,在实现功能是时候发现一个问题,

就是窗口类注册是的类名怎么写,两个窗口用的都是同一段代码,怎么才能区分那个是哪个呢?
[/Quote]
HWND区分嘛,他们的值不一样嘛
用户 昵称 2011-10-24
  • 打赏
  • 举报
回复
没有问题,考虑简单一些,只要类名不一样就容易找了。
ouyh12345 2011-10-24
  • 打赏
  • 举报
回复
这不是问题吧,一个进程有多个实例

16,472

社区成员

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

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

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