Skocz do zawartości

Kilka prpblemów


Gering

Recommended Posts

Napisałem sobie programik z kontrolka richedit .
Ładuje kontrolke richedit zgodnie z tym co jest napisane na stronie

//Ładuje biblioteke do programu
            Library = LoadLibrary("RICHED32.DLL");
            
            //Sprawdzam poprawnośc załadowania biblioteki 
            if(!Library)
            {
                MessageBox(NULL,"Nie mozna znaleźc pliku riched32.dll","",MB_OK|MB_ICONERROR);
            }    
            
            //Tworze kontrolkę edycji richedit 
            Edit = CreateWindowEx(WS_EX_CLIENTEDGE,"RichEdit","",WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|ES_MULTILINE,0,0,200,150,Okno,NULL,Typewriter,0) ; 

I nie bardzo moge uwierzyc ze to jest kontrolka richedit :D Co prawda kontrolka sie tworzy i wsztko jest ok . A nie moge dowierzyc z tego wzgledu ze plik RICHED32.DLL znajduje sie w katalogu system32 , a ja nie podaje sciezki przecie z do tego pliku , po drugie nawet bez pliku nagłówkowego richedit.h. Kolejną sprawą jest fakt ze kontrolka moze "podobno" o wiele wiecj znaków , wiec gdy po utworzeniu pisze w niej ale do pewnego mometu i nie mozna dalej próbowalem tez wysłac komunikat jak dla standardowje kontrolki edycji

SendMessage(Edit,EM_SETLIMITTEXT,NULL,NULL);
 

Kolejna sprawa jest to ze próbuje sobie utworzyc statusbar , dodaje biblioteke i plik nagłówkowy ale gdy deklaruje struktóre INITCOMMONCONTROLSEX Dev zgłąsza bład . Gdy pisałem pod VC++ nic takiego sie nie działo podpieram sie przykładem z strony .

Link do komentarza
Udostępnij na innych stronach

Co do pierwszych 2 pytań to w porządku ponieważ Windows szuka dll-ow nie tylko u Ciebie w katalogu z programem. Szuka tutaj najpierw potem chyba w windows-ie potem w systemach i dlatego znalazl.

Co do statusa to sproboj tak:

InitCommonControls();
CreateStatusWindow(WS_CHILD | WS_VISIBLE, "", hParent, 0);

Mnie to zawsze działało.

Link do komentarza
Udostępnij na innych stronach

Jeśli chodzi o określenie ilości przechowywanego tekstu to richedit posługuje się trochę innym komunikatem:

EM_EXLIMITTEXT
wParam = 0;
lParam = (LPARAM) (DWORD) cchTextMax;

Sprawę formatowania można powierzyć komunikatowi:

EM_SETCHARFORMAT
wParam = (WPARAM) (UINT) uFlags;
lParam = (LPARAM) (CHARFORMAT FAR *) lpFmt;

W lParam przekazujemy wskaźnik do struktury CHARFORMAT w której określamy w odpowienich polach formatowanie tekstu.

typedef struct _charformat {
UINT cbSize;
_WPAD _wPad1;
DWORD dwMask;
DWORD dwEffects;
LONG yHeight;
LONG yOffset;
COLORREF crTextColor;
BYTE bCharSet;
BYTE bPitchAndFamily;
CHAR szFaceName[LF_FACESIZE];
_WPAD _wPad2;
} CHARFORMAT;

wParam określa część tekstu, która ma zostać sformatowana:

SCF_SELECTION - zaznaczony
SCF_ALL - wszystko
SCF_WORD | SCF_SELECTION - muszą występować razem. Formatują zaznaczone wyrazy, jeśli nic nie zostało zaznaczone, a wskaźnik kursor jest gdzię w wyrazie to wtedy zezwala na formatowanie

Inne komunikaty i struktury służące do formatowania:

CHARFORMAT
EM_GETCHARFORMAT
EM_GETPARAFORMAT
EM_GETRECT
EM_SETBKGNDCOLOR
EM_SETCHARFORMAT
EM_SETEVENTMASK
EM_SETPARAFORMAT
EM_SETRECT
PARAFORMAT

No nic więcej nie piszę bo zaraz się z tego art zrobi...hehe...a co do artów to za niedługo następna częśc (o szukaniu tekstu..itp, formatowanie będzie później :P), mimo to zachęcam do pracy z helpem...kurde czemu was tak zraża ten angielski...ehh

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...