Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

Не могу создать TabControl, WinApi   Найти похожие ветки 

 
Arazel ©   (2006-03-21 11:35) [0]

Не создается и все  Что я не так сделал?  

program TabControl;

uses
 windows,
 messages,
 commctrl;

var
  ScrWidth          : integer;
  ScrHeight         : integer;  

  pTabControlProc   : Pointer;
  hTabControl       : THandle;

procedure SetTrans(h:hwnd;procent:integer);
var
 old: longint;
begin
old:=GetWindowLongA(h,GWL_EXSTYLE);
 if procent>0 then begin

   SetWindowLongA(h,GWL_EXSTYLE,old or WS_EX_LAYERED);
   SetLayeredWindowAttributes(h, 0, procent, LWA_ALPHA);
 end else SetWindowLongA(h,GWL_EXSTYLE,old xor WS_EX_LAYERED);
end;

procedure HideTaskBarButton(hWindow: HWND);
var
wndTemp: HWND;
begin
wndTemp := CreateWindow("STATIC", "", WS_POPUP, 0, 0, 0, 0, 0, 0, 0, nil);
ShowWindow(hWindow, SW_HIDE);
SetWindowLong(hWindow, GWL_HWNDPARENT, wndTemp);
ShowWindow(hWindow, SW_SHOW);
end;

function TopPosition(hWin: HWND; Top: Boolean): BOOL;
var
Regim: Integer;
begin
if Top
 then Regim := HWND_TOPMOST
 else Regim := HWND_NOTOPMOST;
Result := SetWindowPos(hWin, Regim, 0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE);
end;

function TabCtrlSubclassProc(hWnd:HWND; Msg : Integer; wParam: WPARAM; lParam: LPARAM):LRESULT; stdcall;
var
  hControlDC   : HDC;
  hMemoryDC    : HDC;
  rc           : TRECT;  // Для определения размеров окна
  hBmp         : HBITMAP; // Битмап для двойной буферизации
  hSave        : HGDIOBJ; // Оригинальный битмап из hMemoryDC
begin
{case msg of

WM_ERASEBKGND: Result:=1;
WM_PAINT:
       begin
       // Чтобы поменьше генерилось WM_ERASEBKGND, сэкономим время на
       // диспетчеризации сообщений.
      ValidateRect (hWnd, nil);
      GetClientRect (hWnd, rc); // TabControl не использует non-client area
      hControlDC := GetDC (hWnd);
      hMemoryDC := CreateCompatibleDC (hControlDC);
      hBmp := CreateCompatibleBitmap (hControlDC, rc.right, rc.bottom);
      hSave := SelectObject (hMemoryDC, hBMp);
      // Очистим буфер-битмап, зальём его фоном
      CallWindowProc (pTabControlProc, hWnd, WM_ERASEBKGND, hMemoryDC, 0);
      // Прорисуем контрол в битмапе
      CallWindowProc (pTabControlProc, hWnd, WM_PRINTCLIENT, hMemoryDC, PRF_CLIENT);
      // Ну и нарисуем контрол на дисплее
      BitBlt (hControlDC, 0, 0, rc.right, rc.bottom, hMemoryDC, 0, 0, SRCCOPY);
      DeleteObject (SelectObject (hMemoryDC, hSave));
      DeleteDC (hMemoryDC);
      ReleaseDC (hWnd, hControlDC);
      result := 0;
    end;
end;     }
Result:=CallWindowProc (pTabControlProc, hWnd, Msg, wParam, lParam);
end;

function WindowProc(wnd:HWND; Msg : Integer; wParam: WPARAM; lParam: LPARAM):LRESULT; stdcall;
begin
case msg of
 WM_NCHITTEST:  result := HTCAPTION;
 WM_COMMAND :
             begin
               case LoWord(wParam) of
                 IDCANCEL : DestroyWindow(wnd);
               end;
               result := 0;
             end;

 WM_DESTROY :
             begin
               PostQuitMessage(0);
               Result:=0;
             end;

 else Result:=DefWindowProc(wnd,msg,wParam,lParam);
end;
 TopPosition(wnd, True);
end;//of WindowProc

var
  w,h               : DWORD;
  R                 : TRect;
  tie               : TTCITEM;
  WndClassEx        : TWndClassEx;
  Handle            : HWND;
  Msg               : TMsg;

begin
  ScrWidth:=GetSystemMetrics (SM_CXSCREEN);
  ScrHeight:=GetSystemMetrics (SM_CYSCREEN);

  WndClassEx.cbSize:=sizeof(WndClassEx);
  WndClassEx.style:=CS_HREDRAW or CS_VREDRAW;
  WndClassEx.lpfnWndProc:=@WindowProc;
  WndClassEx.cbClsExtra:=0;
  WndClassEx.cbWndExtra:=0;
  WndClassEx.hInstance:=hInstance;
  WndClassEx.hIcon:=LoadIcon(0,IDI_APPLICATION);
  WndClassEx.hCursor:=LoadCursor(0,IDC_ARROW);
  WndClassEx.hbrBackground:=COLOR_BTNFACE+1;
  WndClassEx.lpszMenuName:=nil;
  WndClassEx.lpszClassName:="Class";
  RegisterClassEx(WndClassEx);

  Handle:= CreateWindowEx(WS_EX_DLGMODALFRAME,"Class", "Name", WS_POPUP or WS_VISIBLE or WS_BORDER,
  10, 10, 300, 100,0, 0,hInstance,nil);

  GetClientRect(Handle, r);
  hTabControl:=CreateWindow(WC_TABCONTROL,nil,
  WS_CHILD or WS_CLIPSIBLINGS or WS_VISIBLE,
  0, 20, 400, 40,Handle,100, hInstance, nil);

  if(hTabControl <> 0) Then
  pTabControlProc:=Pointer(SetWindowLong(hTabControl, GWL_WNDPROC,Integer(@TabCtrlSubclassProc)));
  with tie do
    begin
      mask := TCIF_TEXT or TCIF_IMAGE;
      iImage := -1;
        pszText := "ID0"; SendMessage(hTabControl, TCM_INSERTITEM, integer(0), Longint(@tie));
        pszText := "ID1"; SendMessage(hTabControl, TCM_INSERTITEM, integer(1), Longint(@tie));
        pszText := "ID2"; SendMessage(hTabControl, TCM_INSERTITEM, integer(2), Longint(@tie));
    end;

  HideTaskBarButton(Handle);
  SetTrans(Handle,230);
  ShowWindow(Handle,SW_SHOW);
  UpdateWindow(Handle);

  While GetMessage(Msg,0,0,0) do begin
  if Handle<>0 then
  if IsDialogMessage(Handle,Msg) then continue;
 TranslateMessage(Msg);
 DispatchMessage(Msg);
end;
end.


 
clickmaker ©   (2006-03-21 11:39) [1]

InitCommonControls()



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
15-1148383916
Ламот
2006-05-23 15:31
2006.06.18
Помогите пож. с теорией!


6-1139760370
Shamansky
2006-02-12 19:06
2006.06.18
TUdpSocket


11-1128923897
shalex
2005-10-10 09:58
2006.06.18
Помогите с MCK


11-1128575351
DmiSb
2005-10-06 09:09
2006.06.18
Можно ли при отправке почты при помощи Synapse прикрепить файл ?


2-1148896285
IAmDanil
2006-05-29 13:51
2006.06.18
Как загрузить текстовый файл из интернета в memo1.lines?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский