На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> WM_CLOSE
    Подскажите как отлавливать сообщение WM_CLOSE ??
    А точнее как узнать что твое приложение закрывают, если не используеш форм ??
      AllocateHWnd()
      DeAllocateHWnd()
        А где взять hwnd или handle ?? (если нету форм)
        Сообщение отредактировано: Serial -
          Вероятно все делао на апи, тогда ведь все равно оконный обработчик то есть, вот в нем и лови любое сообщение!
            WndProc
              FWindowHandle := AllocateHWnd(WndProc);


              procedure TC......WndProc(var Msg: TMessage);
              begin
               with Msg do
                 if Msg =  WM_CLOSE then .......
                 else
                   DefWindowProc(FWindowHandle, Msg, wParam, lParam);
                 end;
              end;
                Thanks 2 Was!
                Но все-таки мне не очень понятно! Не мог бы кто-нибудь поделиться исходниками??
                Надо чтобы программа постоянно проверяла, если ее пытаются закрыть чтоб выдавала сообщение "Меня закрывают" и закрывалась!
                Жду помощи.....
                  Ты может объяснишь хоть - у тебя есть оконный обработчик или консоль лепишь? А то может мы на разные темы говорим?!
                    У меня только ".dpr" !! окон не создаю!!
                    Forms, SysUtils не использую! Чистый WinAPI !!
                    Сообщение отредактировано: Serial -
                      Сообщения передаются только окнам. Отсюда вывод - нужно создать окно.
                        Понимаешь то, что у тебя .dpr это еще ни очем не говорит, т.к. консоль и в нем можно делать...
                        А если ты оформляешь создание окна на чистом апи, то ведь обработчик то полюбой есть!!!!
                        Короче - покажи хоть кусочик кода!!! Не мучай нас =)
                          program Project1;

                          uses
                           Windows;

                          {$R *.RES}

                          begin
                          while True do
                          begin
                           GetMessage(Msg, 0, 0, 0);
                           DispatchMessage(Msg);
                          end;
                          end.
                          // Главная задача, которую надо достичь:
                          //Надо чтобы программа постоянно проверяла, если ее пытаются закрыть,
                          //чтоб выдавала сообщение "Меня закрывают" и закрывалась!
                          Сообщение отредактировано: Serial -
                            ExpandedWrap disabled
                              <br>function WndProc(hWn:Thandle;mMsg,wParam,lParam:integer):integer; stdcall;<br>begin<br><br>   Case mMsg of<br><br>     WM_DESTROY:begin<br>                           halt(0);<br>                           //вот это событие<br>                         end;<br>     WM_TIMER:UnderCur;<br><br>   end;<br><br> result:=DefWindowProc(hWn,mMsg,wParam,lParam);<br><br>end;<br>begin<br><br> with WClass do<br>  begin<br>   lpfnWndProc:=@WndProc;<br>   hInstance:=hInstance;<br>   hIcon:=LoadIcon(0,IDI_hand);<br>   hCursor:=LoadCursor(0,IDC_ARROW);<br>   hbrBackground:=color_menu+9;<br>   lpszClassName:='My';<br>   style:=CS_HREDRAW or CS_VREDRAW;<br>  end;<br><br>RegisterClass(WClass);<br>  hWnd:=CreateWindow('My','',WS_OVERLAPPEDWINDOW,100,100,300,150,0,0,hInstance,nil);<br><br>ShowWindow(hWnd,SW_Normal);<br>  UpdateWindow(hWnd);<br><br>  SetTimer(hWnd,1,100,nil);<br><br> while GetMessage(mMsg, hWnd , 0, 0) do<br>  begin<br>   TranslateMessage(mMsg);<br>   DispatchMessage(mMsg);<br>  end;<br>
                            Сообщение отредактировано: xZero -
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0333 ]   [ 16 queries used ]   [ Generated: 3.05.24, 10:52 GMT ]