 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 21.05.2005, 19:28 Titel: RichEdit in Dialog |
|
|
Hallo alle,
ich möchte in einem Dialog ein RichEdit anlegen. Allerdings muss ich dazu anscheinend InitCommonControlsEx aufrufen. Aber ich weiß nicht, mit welchem Wert. Ich bin mir auch nicht sicher, ob es wirklich InitCommonControlsEx ist. Muss ich was anderes tun?
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 21.05.2005, 19:38 Titel: |
|
|
CPP: | #include <windows.h>
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MSG msg;
WNDCLASS wc;
const char szAppName[] = "Test";
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
RegisterClass(&wc);
HWND hMain;
HWND hEdit;
InitCommonControls();
hMain = CreateWindowEx (0, szAppName, "", WS_OVERLAPPEDWINDOW, 0, 0, 600, 500, NULL, NULL, hInstance, NULL);
if (!LoadLibrary("RICHED32.DLL"))
{
MessageBox(NULL, "nee1", "", 0);
return 0;
}
hEdit = CreateWindowEx(0, "RichEdit20W", "", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_AUTOVSCROLL | ES_MULTILINE, 0, 0, 100, 100, hMain, (HMENU)0, hInstance, NULL);
if(hEdit == NULL)
MessageBox(NULL, "nee2", "", 0);
ShowWindow(hMain, iCmdShow);
UpdateWindow(hMain);
while(GetMessage(&msg, NULL, 0, 0))
{
if(!IsDialogMessage(GetForegroundWindow(), &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default : break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
} |
- Patrick  _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 23.05.2005, 20:45 Titel: |
|
|
Danke Patrick! Läuft!
Allerdings:
VC++ Doku hat Folgendes geschrieben: | InitCommonControls
This function is obsolete. New applications should use the InitCommonControlsEx function | Egal!
Allerdings habe ich mit den RichEdits noch ein anderes Problem:
Wir kann ich einen Text am Ende eines RichEdit-Feldes anfügen?!? Die EM-Nachrichten sind mir da anscheinend keine große Hilfe... Und den Text im Speicher zu halten könnte ein sehr großes Array ergeben...
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 23.05.2005, 20:53 Titel: |
|
|
Sollte so gehen wie bei einem edit
CPP: | //Mit dieser Funktion kann man einem Editfeld Text anhängen
BOOL Edit_AddText(HWND hWnd, LPCTSTR lpText)
{
DWORD dwStart = 0, dwEnd = 0;
int nLen;
nLen = GetWindowTextLength(hWnd);
SendMessage(hWnd, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd);
SendMessage(hWnd, EM_SETSEL, (WPARAM)nLen, (LPARAM)nLen);
SendMessage(hWnd, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)lpText);
SendMessage(hWnd, EM_SETSEL, (WPARAM)dwStart, (LPARAM)dwEnd);
return(TRUE);
}
//Hiermit kann man in einem mehrzeiligen Editfeld eine Zeile einfügen:
BOOL Edit_InsertLine(HWND hWnd, UINT uIndex, LPCTSTR lpText)
{
DWORD dwSelStart = 0, dwSelEnd = 0;
UINT uLine, uNumChars = 0;
SendMessage(hWnd, EM_GETSEL, (WPARAM)&dwSelStart, (LPARAM)&dwSelEnd);
for(uLine = 0; uLine < uIndex; uLine++)
uNumChars += (UINT)(SendMessage(hWnd, EM_LINELENGTH, (WPARAM)uNumChars, 0) + 2);
SendMessage(hWnd, EM_SETSEL, (WPARAM)uNumChars, (LPARAM)uNumChars);
SendMessage(hWnd, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)lpText);
SendMessage(hWnd, EM_SETSEL, (WPARAM)dwSelStart, (LPARAM)dwSelEnd);
return(TRUE);
} |
_________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 23.05.2005, 21:44 Titel: |
|
|
*Stöhn* Wer kommt den auf Replace?!? Aber gut...
Danke! Was würden wir nur ohne Patrick machen?!?
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 24.05.2005, 11:20 Titel: |
|
|
Ich kann mich erinnern, dass ich ein Problem mit Unicode hatte, als ich Richedit und den Visuellen Editor verwendet hatte. (Er wollte partout die Ansi-Variante nutzen, eine T-Variante gab es da nicht)
Also darauf nochmal achten, bzw. ist das Problem überhaupt noch aktuell? _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|