读书人

如果在一个BUTTON响应函数中弹出一个全

发布时间: 2012-03-09 16:54:57 作者: rapoo

如果在一个BUTTON响应函数中弹出一个全屏的对话框,BUTTON响应函数中要能知道对话框被关闭的事件
//TestTFTColor是一个BUTTON的响应函数
void TestDlg::TestTFTColor()
{
HANDLE hTFTTestEvent;

pColorTestDlg=new CDialogColorTest(this);
//IDD_DIALOG_COLOR_TEST是一个测试对话框,连续点击几次后,会调用DestroyWindow销毁自己,
pColorTestDlg->Create(IDD_DIALOG_COLOR_TEST);

pColorTestDlg->ModifyStyle(WS_CAPTION|WS_BORDER|WS_DLGFRAME|WS_THICKFRAME,0,0);
pColorTestDlg->CenterWindow(GetDesktopWindow());
int WINDOW_W= ::GetSystemMetrics(SM_CXSCREEN);
int WINDOW_H= ::GetSystemMetrics(SM_CYSCREEN);
pColorTestDlg->SetWindowPos(NULL, -3, -3, WINDOW_W+5, WINDOW_H+5, SWP_SHOWWINDOW); //全屏显示

///////////////////////////////////////////////////////////
//下面代码是我的想法,但行不通,加了后,整个程序没有响应了
hTFTTestEvent=CreateEvent(NULL,TRUE,FALSE,_T("TEST_TFT"));
if(hTFTTestEvent)
{
while(1)
{
if(WaitForSingleObject(hTFTTestEvent, 0)!=WAIT_TIMEOUT )
break;
Sleep(200);
}
CloseHandle(hTFTTestEvent);
}
//我要在pColorTestDlg关闭后,在本函数中处理点其它事,
}

//在IDD_DIALOG_COLOR_TEST对话框中,
//我调用如下代码关闭自己

hTFTTestEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, L"TCC_REARCAM_STARTUP");
if(hTFTTestEvent)
{
PulseEvent(hTFTTestEvent);
CloseHandle(hTFTTestEvent);
}
DestroyWindow();




[解决办法]
可以发消息呀,为什么非要弄事件内核对象
[解决办法]

C/C++ code
CAboutDlg* pDlg = NULL;#define MSG_EXIT (WM_USER + 0x11)void CGSDlg::OnOK() {    // TODO: Add extra validation here    if(NULL == pDlg)    {        pDlg = new CAboutDlg;        pDlg->Create(IDD_ABOUTBOX, this);    }        pDlg->ShowWindow(SW_SHOW);    MSG msg;    while(GetMessage(&msg, NULL, 0, 0))    {        if(MSG_EXIT == msg.message)        {            break;        }        TranslateMessage(&msg);        DispatchMessage(&msg);    }    AfxMessageBox(_T("OK"));}void CAboutDlg::OnClose() {    // TODO: Add your message handler code here and/or call default        //CDialog::OnClose();    GetParent()->PostMessage(MSG_EXIT, 0, 0);    DestroyWindow();} 

读书人网 >VC/MFC

热点推荐