Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2009, 13:38   #1
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
Вопрос Фома на WinAPI не отображается

пишу форму на WinAPI, но она не отображается, только в процессах висит(((
вот код:
Код:
program Project1;

uses
  Windows,
  Messages;

{$R *.res}
var
  hm, hw, hb:HWND;
  wc:TWndClass;
  msg:TMsg;

function WndProc(wnd:HWND; msg:integer; wParam:wParam; lParam:lParam):lResult; stdcall;
begin
  result:=defwindowproc(wnd, msg, wParam, lParam);

  case msg of
    wm_destroy:PostQuitMessage(0);
  end;

end;

begin
  hm:=GetModuleHandle(nil);

  wc.style:=CS_VREDRAW or CS_HREDRAW;
  wc.lpfnWndProc:=@WndProc;
  wc.hInstance:=hm;
  wc.hbrBackground:=color_btnface+1;
  wc.lpszClassName:='WPForm';

  RegisterClass(wc);

  hw:=CreateWindowEx(0, 'WPForm', 'Caption', WS_SYSMENU, 100, 100, 200, 200, hm, 0, 0, 0);
  hb:=CreateWindow('BUTTON', 'Close', WS_VISIBLE or WS_CHILD, 10, 10, 75, 25, hw, 0, hm, 0);

  ShowWindow(hw, SW_SHOW);
  UpdateWindow(hw);

  while GetMessage(msg, 0, 0, 0) do
   begin
    TranslateMessage(msg);
    DispatchMessage(msg);
   end;

end.
помогите разобраться...
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 23.02.2009, 14:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот правильный пример:
Код:
{
  Данный код был спроектирован в среде APIx - Visual WinAPI 2
  Copyright (c) PiddleSoft 2004-2006
  http://piddlesoft.narod.ru
  piddlesoft@mail.ru

  Дата генерации листинга - 23.02.2009 13:00:08
}

program APIx_Project22;

uses
  windows, messages, commctrl; //Используемые модули

// Иконка
{$R 'icon.res'}

var
  WinClass : TWndClass; //переменная класса TWndClass для создания главного окна
  hInst : HWND; //хандлер приложения
  Handle : HWND; //локальный хандлер
  Msg : TMSG; //сообщение

procedure ShutDown; //процедура завершения программы
begin
  UnRegisterClass('TAPIxForm', hInst); //удаление окна
  ExitProcess(hInst); //закрытие программы
end;

function WindowProc(hwnd, msg, wparam, lparam: longint): longint; stdcall; //обработчик сообщений
begin
  Result := DefWindowProc(hwnd, msg, wparam, lparam);
  case Msg of

  WM_DESTROY: ShutDown;
  end;
end;

begin
hInst := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := CS_PARENTDC; //стиль класса главного окна
   hIcon := LoadIcon(hInst, MAKEINTRESOURCE('APIXICON')); //иконка программы
   lpfnWndProc := @WindowProc; //назначение обработчика сообщений
   hInstance := hInst;
   hbrBackground := COLOR_BTNFACE + 1; //цвет окна
   lpszClassName := 'TAPIxForm'; //класс окна
   hCursor := LoadCursor(0, IDC_ARROW); //активный курсор
  end;
InitCommonControls;
RegisterClass(WinClass); //регистрация класса в системе

// Создание главного окна программы
Handle := CreateWindowEx(0, 'TAPIxForm', 'Форма1',
WS_OVERLAPPEDWINDOW or
WS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU,
219, 116, 550, 366,
0, 0,
hInst, nil);

  // Цикл сбора сообщений
  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg); //прием сообщений
    DispatchMessage(Msg); //удаление сообщений из очереди
  end;
  end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2009, 14:09   #3
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Код:
program Project1;

uses
  Windows, Messages;

{$R *.res}

var
  WC: TWndClassEx;
  pWnd, pBtn: hwnd;
  Msg: TMsg;

function WindowProc (wnd: HWND; Msg: integer; wParam: wParam; lParam:lparam):lresult; stdcall;
begin
  Result := DefWindowProc(wnd, msg, wparam, lparam);
  case Msg of
    WM_DESTROY:
      begin
        PostQuitMessage(0);
        Exit;
      end;
  end;
end;

begin
  WC.cbSize        := SizeOf(WC);
  WC.lpfnWndProc   := @WindowProc;
  WC.hInstance     := HInstance;
  WC.style         := CS_VREDRAW or CS_HREDRAW;
  WC.hbrBackground := COLOR_BTNFACE + 1;
  WC.lpszClassName := 'WPForm';
  RegisterClassEx(WC);
  pWnd := CreateWindowEx(ws_ex_appwindow, 'WPForm', ' Caption', ws_sysmenu, 100, 100, 200, 200, 0, 0, hinstance, nil);
  pBtn :=CreateWindow('BUTTON', 'Close', WS_VISIBLE or WS_CHILD, 10, 10, 75, 25, Pwnd, 0, HInstance, 0);
  ShowWindow(PWnd, SW_SHOW);
  while GetMessage(Msg, 0, 0, 0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end.
NieL вне форума Ответить с цитированием
Старый 23.02.2009, 14:11   #4
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

спс, заменил параметры CreateWindowEx и все работает!!!
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 23.02.2009, 14:19   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

В этом параметре указывается родительское окно или 0

hw:=CreateWindowEx(0, 'WPForm', 'Caption', WS_SYSMENU, 100, 100, 200, 200, hm, 0, 0, 0);
пыщь
JTG вне форума Ответить с цитированием
Старый 23.02.2009, 16:06   #6
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Цитата:
В этом параметре указывается родительское окно или 0

hw:=CreateWindowEx(0, 'WPForm', 'Caption', WS_SYSMENU, 100, 100, 200, 200, hm, 0, 0, 0);
мне казалось там передается указатель на приложение, а родительское окно передается в функции CreateWindow.
я имел ввиду о параметрах стиля окна:
Код:
hw:=CreateWindowEx(0, 'WPForm', 'Форма1', WS_OVERLAPPEDWINDOW or
 WS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU, 100, 100, 200, 200, hm, 0, 0, nil);
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отображается русский шрифт about_pooh БД в Delphi 11 10.04.2012 16:36
Не отображается картинка Luna_13 Общие вопросы C/C++ 2 15.11.2008 12:25
не отображается картинка sstyle JavaScript, Ajax 3 30.01.2008 02:59
Неправильно отображается вещественный тип frantic БД в Delphi 4 23.02.2007 14:24