首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

为什么将窗口变成嵌入到另一个窗口后就收不到消息了呢?该如何解决

2012-02-24 
为什么将窗口变成嵌入到另一个窗口后就收不到消息了呢? - C++ Builder / Windows SDK/API我现在是在一个线

为什么将窗口变成嵌入到另一个窗口后就收不到消息了呢? - C++ Builder / Windows SDK/API
我现在是在一个线程中用PostMessage的方式向一个窗口发送消息,当这个窗口时定层窗口的时候,窗口可以收到这个消息,但是一旦把它签入到另外一个窗口以后就收不到这些消息了,但是又可以收到父窗口用PostMessage方式发送的消息,这是怎么回事儿呢?

[解决办法]
没有代码 不好分析
一、检查句柄是否正确 
二、用GetLastError 看看错误代码
[解决办法]
我贴一个子窗体给主窗体发送消息的例子

C/C++ code
//---------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit1.h"#include "Unit2.h"//---------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;#define WM_USER_THREAD_FINISHED WM_USER+0x400//---------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)    : TForm(Owner){}//---------------------------------------// 重载Form的WndProc以处理自定义消息void __fastcall TForm1::WndProc(TMessage &Msg){    if (Msg.Msg == WM_USER_THREAD_FINISHED)    {        //LPTSTR lp = (LPTSTR)Msg.LParam;        char * lp = (char *)Msg.LParam;        if (lp)        {            if (Msg.WParam == 1)            ShowMessage(AnsiString(lp));        }    }    TForm::WndProc(Msg);}void __fastcall TForm1::Button2Click(TObject *Sender){  TForm2 * frm =new TForm2(this);  frm->ShowModal() ;  delete frm ;}//---------------------------------------
[解决办法]
关键看你如何把这个窗口“嵌入到”别的窗口中。
建议用API:SetParent,而不要用给子窗口的Parent属性赋值的方式。
[解决办法]
告诉楼主,嵌入过后找这个窗体的句柄就特殊一点点了.起码我直接用FindWindow 没能正确找到.

C/C++ code
    HWND h2 = FindWindowEx(frmMain->scrlbxMain->Handle, NULL, NULL, TEXT("摄像头监控"));    if (h2 != NULL) {        SetWindowPos(h2, NULL, 360, 10, 0, 0, SWP_NOSIZE);    } 

热点排行