Цитата: P.S. Найди книжку по D. Иначе тебя поставят в игнор.
Да какую именно? Большинство книг имеют напрвленность как создать окошко, а аспекты интерфейса и прочих оконных приблуд не описывают.
Вот допустим мне надо через WM_DRAWITEM перерисовать листбокс, чтобы на нем мирно существовали фоновый рисунок и строки. Поисковики лезут на китайские сайты. На русских одна шняга. Код:
Код: var
hBMP : hBitmap;
function DlgProc(hWin: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): bool; stdcall;
var
ps: TPaintStruct;
dc: HDC;
hMemDC: HDC;
rect: TRect;
begin
Result := False;
case uMsg of
WM_INITDIALOG :
begin
hBMP := LoadBitmap(hInstance, 'IMAGE');
SendMessage(GetDlgItem(hWin, 113), LB_ADDSTRING, 0, Integer(PChar('')));
SendMessage(GetDlgItem(hWin, 113), LB_ADDSTRING, 0, Integer(PChar('')));
end;
WM_PAINT:
begin
dc := BeginPaint(getdlgitem(hWin, 113), ps);
hMemDC := CreateCompatibleDC(dc);
SelectObject(hMemDC, hBMP);
GetClientRect(getdlgitem(hWin, 113), rect);
BitBlt(dc, 0, 0, rect.right, rect.bottom, hMemDC, 0, 0, SRCCOPY);
DeleteDC(hMemDC);
EndPaint(getdlgitem(hWin, 113), ps);
InvalidateRect(getdlgitem(hWin, 113), 0, False);
UpdateWindow(hwin);
end;
WM_DESTROY, WM_CLOSE:
begin
DeleteObject(hBMP);
PostQuitMessage(0);
end;
end;
end;