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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процесс программы не завершается 
:(
    Опции темы
Ksander1000
  Дата 28.7.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста найти ошибку smile

Код

#undef UNICODE

#include <Windows.h>
#include <iostream>
#include <fstream>

LRESULT _stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int nCmdShow)
{
    MSG msg;
    
    WNDCLASSEX wc;

    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH)(6);
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.hIcon = LoadIcon(0, IDI_APPLICATION);
    wc.hInstance = hInstance;
    wc.lpfnWndProc = WndProc;
    wc.lpszClassName = "myclass";
    wc.lpszMenuName = 0;
    wc.style = CS_HREDRAW|CS_VREDRAW;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.hIconSm = 0;

    RegisterClassEx(&wc);

    HWND hMainWindow = CreateWindowEx(0,
        "myclass",
        "Окно",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        0,
        0,
        hInstance,
        0);

    ShowWindow(hMainWindow, nCmdShow);
    UpdateWindow(hMainWindow);

    if(hMainWindow == 0)
        MessageBox(0, "Ошибка при создании окна", "Ошибка!", MB_OK);

    while(1)
    {
        GetMessage(&msg, hMainWindow, 0, 0);
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

}

LRESULT _stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
    case WM_CREATE:
        MessageBox(0,"Окно созданно :)","Оно созданно",MB_OK);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;        
    default: return DefWindowProc(hWnd, msg, wParam, lParam);
    }
}


Проблема в том что при закрытии программы она остаёться в процессах smile

Это сообщение отредактировал(а) Ksander1000 - 28.7.2010, 12:27
PM MAIL   Вверх
GremlinProg
Дата 28.7.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



Код

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


Это сообщение отредактировал(а) GremlinProg - 28.7.2010, 12:36


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Ksander1000
Дата 28.7.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо smile
Ошибка была в GetMessage (второй аргумент был дескриптор CreateWindow)

Это сообщение отредактировал(а) Ksander1000 - 28.7.2010, 12:42
PM MAIL   Вверх
12usver12
Дата 28.7.2010, 13:03 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

 while(1)
    {
        GetMessage(&msg, hMainWindow, 0, 0);
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
return 0;
}

да и лучше добавь return 0  в конце , не знаю как в твоем случае но по моей памяти иногда процесс оставался висеть если явно не указано, хотя смотря какой компилятор... 
return 0;  в данном случае компилиться как ExitThread 
PM MAIL   Вверх
xvr
Дата 2.8.2010, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(12usver12 @ 28.7.2010,  13:03)
Цитата

 while(1)
    {
        GetMessage(&msg, hMainWindow, 0, 0);
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
return 0;
}

да и лучше добавь return 0  в конце , 

It's no use from 'return 0' at end - while(1) blocks execution, so return 0 never come  smile 
while(1) should be changed to while(GetMessage()) first

PM MAIL   Вверх
HellStranger
Дата 2.8.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

while(1)
{      
GetMessage(&msg, hMainWindow, 0, 0);        
TranslateMessage(&msg);        
DispatchMessage(&msg);    
}


Впервые вижу такую гениТальную конструкцию, хотя с WinAPI знаком уже 6 лет...
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.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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