Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] WinAPI Jak znieść limit znaków dla kontrolki EDIT?

Ostatnio zmodyfikowano 2015-08-25 17:10
Autor Wiadomość
carlosmay
Temat założony przez niniejszego użytkownika
[C++] WinAPI Jak znieść limit znaków dla kontrolki EDIT?
» 2015-08-22 00:40:16
[c++] WinAPI WM_COMMAND: kliknięcie na kontrolkę EDIT zamyka całe okno.
Pytanie dotyczy programu z tego tematu.

Jak wczytuje do pola tekstowego (EDIT) tekst z pliku to bez łaski wyświetla cały tekst (ok. 700 000 znaków).
Jednak gdy wpisuję do pola tekstowego tekst to pozwala na wpisanie tylko ok 30 000 znaków.
EM_SETLIMITTEXT - znalazłem coś takiego.
Style EM_SETLIMITTEXT I EM_LIMITTEXT są rozpoznawalne, ale styl EM_EXLIMITTEXT niestety nie jest rozpoznawany (visual 15).
Nie bardzo wiem jak to dalej zrobić. Jak inaczej zdjąć limit znaków wpisywanych do pola textowego.
P-136682
Monika90
» 2015-08-22 09:36:00
Style EM_SETLIMITTEXT I EM_LIMITTEXT
To nie są style, to są komunikaty.

ale styl EM_EXLIMITTEXT
To też jest komunikat, ale nie dotycz on kontrolki edit lecz rich edit.
P-136684
carlosmay
Temat założony przez niniejszego użytkownika
» 2015-08-22 11:58:50
Znalazłem to w jakimś poście, ale jeśli to nie jest to, czego szukać?
P-136691
Monika90
» 2015-08-22 14:38:49
To prawdopodobnie jest to, ale co ty z tym robisz? To są komunikaty które należy wysłać (SendMessage) do kontrolki żeby zmienić limit.
P-136705
carlosmay
Temat założony przez niniejszego użytkownika
» 2015-08-22 14:54:58
Z początku próbowałem użyć jako stylu kontrolki ale doczytałem temat i odpuściłem.
Chciałem też wysłać jak przy zmianie czcionki, ale  EM_EXLIMITTEXT od razu jest podkreślony (niezdefiniownay).
SendMessage( g_hEdit, EM_EXLIMITTEXT, NULL, NULL );
Nie mam innego pomysłu.
P-136708
carlosmay
Temat założony przez niniejszego użytkownika
» 2015-08-25 15:29:13
Poszukałem, poszperałem i znalazłem takie coś. Nie do końca o to chodziło, ale jak nie da rady inaczej...
C/C++
#include <Richedit.h> // dodalem plik naglowkowy
//.....
LoadLibrary( TEXT( "Riched32.dll" ) ); // dodalem biblioteke dla RICHEDIT
hEdit = CreateWindowEx( WS_EX_CLIENTEDGE, L"RICHEDIT", NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL,
10, 10, 500, 300, hWnd, NULL, hInst, NULL ); // zmontowałem pole tekstowe
if( !hEdit ) return 1;

SendMessage( hEdit, EM_EXLIMITTEXT, NULL,( LPARAM ) 800000 ); // wyslalem EM_EXLIMITTEXT, ale i tak musze podac dlugosc pola (LPARAM)800000
Trochę szperałem i nie znalazłem nic co całkowicie zdejmuje limit długości pola tekstowego.
(Jeśli nie da rady inaczej to popracuje nad edycją pola i wykrywaniem końca pola tekstowego).
Dzięki Monika90 przynajmniej nie błądziłem po omacku.

Edit: Jeśli jest taka możliwość żeby sprawdzić długość bufora kopiującego (ctrl + c) i użyć tej wartości do ustawienia długości pola też byłoby fajnie.
P-136855
pekfos
» 2015-08-25 17:10:43
Trochę szperałem i nie znalazłem nic co całkowicie zdejmuje limit długości pola tekstowego.
Jakiś limit musi być, czy to określony w kodzie, czy przez ilość dostępnej pamięci.

Jeśli jest taka możliwość żeby sprawdzić długość bufora kopiującego (ctrl + c)
https://msdn.microsoft.com​/en-us/library/windows/desktop​/ms649016%28v=vs.85%29.aspx
P-136857
« 1 »
  Strona 1 z 1