Proszę o pomoc w prostym edytorze tekstowym. Nie wiem jaką akcję wykonywać po naciśnięciu Backspace [glowa] . Co się będę rozpisywał ja na razie zrobiłem tyle:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HDC hdc;
PAINTSTRUCT ps;
RECT rect;
static int x,y;
static HINSTANCE inst;
static int sz,wz;
static int a,b;
static SIZE s;
static LOGFONT lf;
static HFONT hf;
char z;
switch (message)
{
case WM_CREATE:
inst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
hdc=GetDC(hwnd);
lf.lfHeight=17;
lstrcpy(lf.lfFaceName,"Times New Roman");
lf.lfCharSet=238;
hf=CreateFontIndirect(&lf);
ReleaseDC(hwnd,hdc);
CreateCaret(hwnd,NULL,1,17);
a=b=0;
break;
case WM_SETFOCUS:
SetCaretPos(a,b);
ShowCaret(hwnd);
break;
case WM_KILLFOCUS:
HideCaret(hwnd);
DestroyCaret();
break;
case WM_CHAR:
switch(wParam)
{
case '\n':
case '\r':
HideCaret(hwnd);
b+=s.cy;
a=0;
SetCaretPos(a,b);
ShowCaret(hwnd);
break;
case '\b':
//jak to obsłużyć??
break;
default: {
hdc=GetDC(hwnd);
SelectObject(hdc,hf);
z=(char)wParam;
HideCaret(hwnd);
GetTextExtentPoint32(hdc,&z,1,&s);
TextOut(hdc,a,b,&z,1);
a=a+s.cx;
SetCaretPos(a,b);
ShowCaret(hwnd);
ReleaseDC(hwnd,hdc);}
}
break;
case WM_SIZE:
x=LOWORD(lParam);
y=HIWORD(lParam);
break;
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
Proszę o pomoc z tym Backspace i o jakieś rady