From 3a7020458fd18e50cb04bd8dbecb1df9b08d6539 Mon Sep 17 00:00:00 2001
From: nyamatongwe
This should be a little step by step explanation how to use Scintilla in the windows environment.
@@ -10,43 +10,43 @@
First of all, load the Scintilla DLL with something like:
- If the DLL was loaded successfully, then the DLL has registered (yes, by itself) a new
+ If the DLL was loaded successfully, then the DLL has registered (yes, by itself) a new
window class. The new class called "Scintilla" is the new scintilla edit control.
Now you can use this new control just like any other windows control.
- Note the new window class name: "Scintilla". By reaching this point you actually included
+ Note the new window class name: "Scintilla". By reaching this point you actually included
a Scintilla Edit Control to your windows program.
How to use the Scintilla Edit Control in windows?
-
+
hmod = LoadLibrary("SciLexer.DLL");
if (hmod==NULL)
{
- MessageBox(hwndParent,
- "The Scintilla DLL could not be loaded.",
- "Error loading Scintilla",
+ MessageBox(hwndParent,
+ "The Scintilla DLL could not be loaded.",
+ "Error loading Scintilla",
MB_OK | MB_ICONERROR);
}
-
- hwndScintilla = CreateWindowEx(0,
+
+ hwndScintilla = CreateWindowEx(0,
"Scintilla","", WS_CHILD|WS_VISIBLE|WS_TABSTOP,
10,10,500,400,hwndParent,(HMENU)GuiID, hInstance,NULL);
You can control Scintilla by sending commands to the Edit Control. - There a 2 ways of doing this. A simple and fast way. + There a 2 ways of doing this. A simple and fast way.
- The simple way is just like with any other windows control. You can send messages to the - Scintilla Edit Control and receive notifications from the control. (Note that the notifications + The simple way is just like with any other windows control. You can send messages to the + Scintilla Edit Control and receive notifications from the control. (Note that the notifications are sent to the parent window of the Scintilla Edit Control.)
@@ -54,14 +54,14 @@ To send commands to the Scintilla Edit Control you can use the SendMessage function.
- + SendMessage(hwndScintilla,sci_command,wparam,lparam);
like:
- + SendMessage(hwndScintilla,SCI_CREATEDOCUMENT, 0, 0);
@@ -71,12 +71,12 @@
The fast way of controlling the Scintilla Edit Control is to call message handling function by yourself. - You can retrieve a pointer to the message handling function of the Scintilla Edit Control and + You can retrieve a pointer to the message handling function of the Scintilla Edit Control and call it directly to execute a command. This way is much more faster than the SendMessage() way.
- 1st you have to use the SCI_GETDIRECTFUNCTION and SCI_GETDIRECTPOINTER commands to - retrieve the pointer to the function and a pointer which must be the first parameter when calling the retrieved + 1st you have to use the SCI_GETDIRECTFUNCTION and SCI_GETDIRECTPOINTER commands to + retrieve the pointer to the function and a pointer which must be the first parameter when calling the retrieved function pointer. You have to do this with the SendMessage way :)
@@ -84,7 +84,7 @@ The whole thing has to look like this:- + int (*fn)(void*,int,int,int); void * ptr; int canundo; @@ -92,7 +92,7 @@ fn = (int (__cdecl *)(void *,int,int,int))SendMessage( hwndScintilla,SCI_GETDIRECTFUNCTION,0,0); ptr = (void *)SendMessage(hwndScintilla,SCI_GETDIRECTPOINTER,0,0); - + canundo = fn(ptr,SCI_CANUNDO,0,0);
@@ -104,7 +104,7 @@
- Whenever an event occurs where Scintilla wants to inform you about something, the Scintilla Edit Control + Whenever an event occurs where Scintilla wants to inform you about something, the Scintilla Edit Control will send notification to the parent window. This is done by a WM_NOTITY message. When receiving that message, you have to look in the xxx struct for the actual message.
@@ -117,7 +117,7 @@ [...] case WM_NOTIFY: - lpnmhdr = (LPNMHDR) lParam; + lpnmhdr = (LPNMHDR) lParam; if(lpnmhdr->hwndFrom==hwndScintilla) { @@ -134,7 +134,7 @@ - +Page contributed by Holger Schmidt.
-- cgit v1.2.3