Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрыть временное окно 
:(
    Опции темы
freeuserr
Дата 4.12.2011, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.2.2010

Репутация: нет
Всего: нет



Ребят объясните, почему закрыв временное окно вместе с ним закрывается и главное, ведь сообщение передается оконной процедуре временного окна.
Код

#include<windows.h>
#include<tchar.h>
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK PopupWndProc(HWND, UINT, WPARAM, LPARAM);
void RegClass(HINSTANCE hIstance, WNDPROC WndProc, LPCWSTR szClassName);
//===================================================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{    
    HWND hMainWnd, hPopupWnd;                            
    MSG msg;                                
    RegClass(hInstance, MainWndProc, _T("Main Window"));
    RegClass(hInstance, PopupWndProc, _T("Popup Window"));
    hMainWnd=CreateWindow(_T("Main Window"), _T("Window 1"), WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,0,CW_USEDEFAULT,0, (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL);
    if(!hMainWnd)                            
    {                                        
        MessageBox(NULL, _T("Cannot create window"), _T("Error"), MB_OK);
        return 1;
    }

    hPopupWnd=CreateWindow(_T("Popup Window"), _T("Window 2"), WS_POPUPWINDOW | WS_CAPTION | WS_VISIBLE,
        CW_USEDEFAULT,0,500,400, (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL);
    if(!hMainWnd)                            
    {                                        
        MessageBox(NULL, _T("Cannot create window"), _T("Error"), MB_OK);
        return 1;
    }


    while(GetMessage(&msg, NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}    

//====================================================================================
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{    
    HDC hDc;                    
    PAINTSTRUCT ps;            
    RECT rect;
    switch(uMsg)
    {
    case WM_PAINT:
        hDc=BeginPaint(hWnd, &ps);
        GetClientRect(hWnd, &rect);
        DrawText(hDc,_T("Window's center"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        EndPaint(hWnd, &ps);
        break;
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMsg,wParam, lParam);
    }
    return 0;
}    

LRESULT CALLBACK PopupWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{    
    switch(uMsg)
    {
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMsg,wParam, lParam);
    }
    return 0;
}    
void RegClass(HINSTANCE hInstance, WNDPROC WndProc, LPCWSTR szClassName)
{
    WNDCLASSEX wc;                            

    wc.cbSize=sizeof(wc);                    
    wc.style=CS_HREDRAW | CS_VREDRAW;    
    wc.lpfnWndProc=WndProc;                    
    wc.cbClsExtra=0;                        
    wc.cbWndExtra=0;                        
    wc.hInstance=hInstance;                    
    wc.hIcon=LoadIcon(NULL, IDI_APPLICATION);                
    wc.hCursor=LoadCursor(NULL, IDC_ARROW);                    
    wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName=NULL;                    
    wc.lpszClassName=szClassName;            
    wc.hIconSm=NULL;                        

    if(!RegisterClassEx(&wc))                
    {                                        
        MessageBox(NULL, _T("Cannot register class"), _T("Error"), MB_OK);
        return;
    }
}



Это сообщение отредактировал(а) freeuserr - 4.12.2011, 23:10
PM MAIL   Вверх
volatile
Дата 4.12.2011, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(freeuserr @  4.12.2011,  23:09 Найти цитируемый пост)
почему закрыв временное окно вместе с ним закрывается и главное

Потому-что
Цитата(freeuserr @  4.12.2011,  23:09 Найти цитируемый пост)
PostQuitMessage(0);


PM MAIL   Вверх
freeuserr
Дата 5.12.2011, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.2.2010

Репутация: нет
Всего: нет



Спасибоsmile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.