Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Поднять окно с "Панели задач" после его сворачивания через SC_MINIMIZE.  (Прочитано 7928 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
malor
Опытный

ru
Offline Offline

« : 29-06-2011 12:39 » 

Как развернуть окно после того, как было послано сообщение (в блоке case WM_CREATE:);
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
?

Оно сейчас лежит в Панели задач и не хочет с неё слезать (развернувшись на экран) при тычке мышью.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 29-06-2011 13:40 » 

А какие стили у окна?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
malor
Опытный

ru
Offline Offline

« Ответ #2 : 29-06-2011 13:45 » 

Код:
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, 300, 200, NULL, NULL, hInstance, NULL);
Записан
kovalev
Новенький

ru
Offline Offline

« Ответ #3 : 09-10-2012 22:40 » new

Можно создать значок в системном трее:

Код: (Delphi)
program Example;

uses
  Windows, Messages;

const
  WM_TRAYICON = WM_USER + 1;
  WM_BTNCLK = WM_USER + 111;
  NIM_ADD         = $00000000;
  NIF_MESSAGE     = $00000001;
  NIF_ICON        = $00000002;
  NIF_TIP         = $00000004;
  NIM_MODIFY      = $00000001;
  NIM_DELETE      = $00000002;

type
  PNotifyIconData = ^TNotifyIconData;
  TNotifyIconData = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array [0..63] of AnsiChar;    
  end;

var
  WC: TWndClass;
  Msg: TMsg;
  Win, Memo1, Button1: HWND;
  Font1: HFONT;

function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL;
  stdcall; external 'shell32.dll' name 'Shell_NotifyIconA';


function TaskBarAddIcon(hWindow: HWND; idIcon: Cardinal; ICON: hIcon;
 CallbackMessage: Cardinal; Tip: PChar): Boolean;
var
  NID: TNotifyIconData;
begin
  FillChar(NID, SizeOf(TNotifyIconData), 0);
  with NID do begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := hWindow;
    uID := idIcon;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage := WM_TRAYICON;
    hIcon  := Icon;
    lstrcpyn(szTip, Tip, SizeOf(szTip));
  end;
  Result := Shell_NotifyIcon(NIM_ADD, @NID);
end;

function TaskBarDeleteIcon(hWindow: HWND; ID: Integer): Boolean;
var
  NID: TNotifyIconData;
begin
  FillChar(NID, SizeOf(TNotifyIconData), 0);
  with NID do begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := hWindow;
    uID := ID;
  end;
  Result := Shell_NotifyIcon(NIM_DELETE, @NID);
end;

function WindowProc(Win, Msg, WP, LP: Integer): Integer; stdcall;
begin
  case Msg of

    WM_CREATE:
    begin
      SendMessage(Win, WM_SYSCOMMAND, SC_MINIMIZE, 0);
      TaskBarAddIcon(Win, 1, LoadIcon(0, IDI_INFORMATION), WM_TRAYICON,    
        PChar('Тайминг 0.01'))
    end;

    WM_TRAYICON:
    if LP = WM_LBUTTONUP then
    begin
      SendMessage(Win, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
      TaskBarDeleteIcon(Win, 1)
    end;

    WM_DESTROY:
    begin
      TaskBarDeleteIcon(Win, 1);
      PostQuitMessage(0)
    end

  end;
  Result := DefWindowProc(Win, Msg, WP, LP)
end;


BEGIN
  with WC do
  begin
    lpszClassName:= 'asd';
    lpfnWndProc :=  @WindowProc;
    hbrBackground := 1;
    hCursor := LoadCursor(0, IDC_ARROW)
  end;
  RegisterClass(WC);

  Win := CreateWindow(WC.lpszClassName, 'Заголовок программы',
    WS_OVERLAPPED or WS_SYSMENU or WS_MINIMIZEBOX or WS_VISIBLE,
    400, 200, 350, 600, 0, 0, hInstance, nil);

  Font1 := GetStockObject(ANSI_VAR_FONT);
 
  Memo1 := CreateWindowEx(WS_EX_STATICEDGE, 'Edit', '',
    WS_VISIBLE or WS_CHILD or WS_VSCROLL or ES_MULTILINE,
    5, 5, 335, 540, Win, 1001, hInstance, nil);
  SendMessage(Memo1, WM_SETFONT, Font1, 0);

  Button1 := CreateWindowEx(WS_EX_STATICEDGE, 'Button', 'Кнопка',
    WS_VISIBLE or WS_CHILD, 275, 550, 66, 20, Win, 1002, hInstance, nil);
  SendMessage(Button1, WM_SETFONT, Font1, 0);

  while GetMessage(Msg, 0, 0, 0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg)
  end;
END.

Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines