#include <windows.h>
#include <string>
#include <commctrl.h>
#include <richedit.h>
using namespace std;
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char sz_Klasa[ ] = "RicheditApp";
HWND h_Okno, h_Rich, h_Button_Bold, h_Button_Italic;
HINSTANCE h_Inst;
CHARFORMAT chf_format;
int WINAPI WinMain (HINSTANCE h_Inst, HINSTANCE, LPSTR lpsz_KlasaOkna, int i_Show)
{
if(!LoadLibrary("RICHED32.DLL"))
{
MessageBox(0,"Nie uda³o siê za³adowaæ biblioteki \"RICHED32.DLL\"","B³¹d!",MB_ICONERROR);
PostQuitMessage(0);
}
//globalnij kfyt procesu//
::h_Inst=h_Inst;
//budowa//
WNDCLASSEX WinCl_Okno;
WinCl_Okno.hInstance = h_Inst;
WinCl_Okno.lpszClassName = sz_Klasa;
WinCl_Okno.lpfnWndProc = WindowProcedure;
WinCl_Okno.style = CS_DBLCLKS;
WinCl_Okno.cbSize = sizeof (WNDCLASSEX);
//wyglad//
WinCl_Okno.hIcon = LoadIcon (NULL, IDI_APPLICATION);
WinCl_Okno.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
WinCl_Okno.hCursor = LoadCursor (NULL, IDC_ARROW);
WinCl_Okno.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
//menu//
WinCl_Okno.lpszMenuName = NULL;
//dodatkowe info//
WinCl_Okno.cbClsExtra = 0;
WinCl_Okno.cbWndExtra = 0;
//rejestruj klase//
if (!RegisterClassEx (&WinCl_Okno)) return 0;
MSG messages;
h_Okno=CreateWindowEx(0, sz_Klasa, "Obs³uga Richedit", WS_OVERLAPPED|WS_SYSMENU, 300,300,500,400,0,0,h_Inst,0);
ShowWindow(h_Okno,i_Show);
//obsluga komunikatow//
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
h_Rich=CreateWindowEx(WS_EX_CLIENTEDGE,"richedit","",WS_CHILD|WS_VISIBLE|ES_MULTILINE, 25, 25, 450, 200, hwnd, (HMENU)100,h_Inst,0);
SendMessage(h_Rich,EM_GETCHARFORMAT,(WPARAM)SCF_DEFAULT,(LPARAM)&chf_format);
h_Button_Bold=CreateWindowEx(0,WC_BUTTON,"BOLD",WS_CHILD|WS_VISIBLE, 25, 250, 150, 50, hwnd, (HMENU)1,h_Inst,0);
h_Button_Italic=CreateWindowEx(0,WC_BUTTON, "ITALIC",WS_CHILD|WS_VISIBLE, 325,250,150,50,hwnd,(HMENU)2,h_Inst,0);
break;
case WM_DESTROY:
DestroyWindow(h_Rich);
DestroyWindow(h_Button_Italic);
DestroyWindow(h_Button_Bold);
PostQuitMessage (0);
break;
case WM_COMMAND:
switch (wParam)
{
case 1:
chf_format.dwMask=CFM_BOLD;
chf_format.dwEffects=CFE_BOLD;
SendMessage(h_Rich,EM_SETCHARFORMAT,SCF_ALL,(LPARAM)&chf_format);
break;
case 2:
chf_format.dwMask=CFM_ITALIC;
chf_format.dwEffects=CFE_ITALIC;
SendMessage(h_Rich,EM_SETCHARFORMAT,SCF_ALL,(LPARAM)&chf_format);
break;
}
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
I2luY2x1ZGUgPHdpbmRvd3MuaD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNvbW1jdHJsLmg+CiNpbmNsdWRlIDxyaWNoZWRpdC5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKTFJFU1VMVCBDQUxMQkFDSyBXaW5kb3dQcm9jZWR1cmUgKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKCmNoYXIgc3pfS2xhc2FbIF0gPSAiUmljaGVkaXRBcHAiOwpIV05EIGhfT2tubywgaF9SaWNoLCBoX0J1dHRvbl9Cb2xkLCBoX0J1dHRvbl9JdGFsaWM7CkhJTlNUQU5DRSBoX0luc3Q7CkNIQVJGT1JNQVQgY2hmX2Zvcm1hdDsKCmludCBXSU5BUEkgV2luTWFpbiAoSElOU1RBTkNFIGhfSW5zdCwgSElOU1RBTkNFLCBMUFNUUiBscHN6X0tsYXNhT2tuYSwgaW50IGlfU2hvdykKewogICAgaWYoIUxvYWRMaWJyYXJ5KCJSSUNIRUQzMi5ETEwiKSkKICAgIHsKICAgICAgICBNZXNzYWdlQm94KDAsIk5pZSB1ZGHCs28gc2nDqiB6YcKzYWRvd2HDpiBiaWJsaW90ZWtpIFwiUklDSEVEMzIuRExMXCIiLCJCwrPCuWQhIixNQl9JQ09ORVJST1IpOwogICAgICAgIFBvc3RRdWl0TWVzc2FnZSgwKTsKICAgIH0KICAgIC8vZ2xvYmFsbmlqIGtmeXQgcHJvY2VzdS8vCiAgICA6OmhfSW5zdD1oX0luc3Q7CiAgICAvL2J1ZG93YS8vCiAgICBXTkRDTEFTU0VYIFdpbkNsX09rbm87CiAgICBXaW5DbF9Pa25vLmhJbnN0YW5jZSA9IGhfSW5zdDsKICAgIFdpbkNsX09rbm8ubHBzekNsYXNzTmFtZSA9IHN6X0tsYXNhOwogICAgV2luQ2xfT2tuby5scGZuV25kUHJvYyA9IFdpbmRvd1Byb2NlZHVyZTsKICAgIFdpbkNsX09rbm8uc3R5bGUgPSBDU19EQkxDTEtTOwogICAgV2luQ2xfT2tuby5jYlNpemUgPSBzaXplb2YgKFdORENMQVNTRVgpOwogICAgLy93eWdsYWQvLwogICAgV2luQ2xfT2tuby5oSWNvbiA9IExvYWRJY29uIChOVUxMLCBJRElfQVBQTElDQVRJT04pOwogICAgV2luQ2xfT2tuby5oSWNvblNtID0gTG9hZEljb24gKE5VTEwsIElESV9BUFBMSUNBVElPTik7CiAgICBXaW5DbF9Pa25vLmhDdXJzb3IgPSBMb2FkQ3Vyc29yIChOVUxMLCBJRENfQVJST1cpOwogICAgV2luQ2xfT2tuby5oYnJCYWNrZ3JvdW5kID0gKEhCUlVTSCkgQ09MT1JfQkFDS0dST1VORDsKICAgIC8vbWVudS8vCiAgICBXaW5DbF9Pa25vLmxwc3pNZW51TmFtZSA9IE5VTEw7CiAgICAvL2RvZGF0a293ZSBpbmZvLy8KICAgIFdpbkNsX09rbm8uY2JDbHNFeHRyYSA9IDA7CiAgICBXaW5DbF9Pa25vLmNiV25kRXh0cmEgPSAwOwogICAgLy9yZWplc3RydWoga2xhc2UvLwogICAgaWYgKCFSZWdpc3RlckNsYXNzRXggKCZXaW5DbF9Pa25vKSkgcmV0dXJuIDA7CgogICAgTVNHIG1lc3NhZ2VzOwogICAgaF9Pa25vPUNyZWF0ZVdpbmRvd0V4KDAsIHN6X0tsYXNhLCAiT2JzwrN1Z2EgUmljaGVkaXQiLCBXU19PVkVSTEFQUEVEfFdTX1NZU01FTlUsIDMwMCwzMDAsNTAwLDQwMCwwLDAsaF9JbnN0LDApOwogICAgU2hvd1dpbmRvdyhoX09rbm8saV9TaG93KTsKCiAgICAvL29ic2x1Z2Ega29tdW5pa2F0b3cvLwogICAgd2hpbGUgKEdldE1lc3NhZ2UgKCZtZXNzYWdlcywgTlVMTCwgMCwgMCkpCiAgICB7CiAgICAgICAgVHJhbnNsYXRlTWVzc2FnZSgmbWVzc2FnZXMpOwogICAgICAgIERpc3BhdGNoTWVzc2FnZSgmbWVzc2FnZXMpOwogICAgfQogICAgcmV0dXJuIG1lc3NhZ2VzLndQYXJhbTsKfQoKTFJFU1VMVCBDQUxMQkFDSyBXaW5kb3dQcm9jZWR1cmUgKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQp7CiAgICBzd2l0Y2ggKG1lc3NhZ2UpCiAgICB7CiAgICAgICAgY2FzZSBXTV9DUkVBVEU6CiAgICAgICAgICAgIGhfUmljaD1DcmVhdGVXaW5kb3dFeChXU19FWF9DTElFTlRFREdFLCJyaWNoZWRpdCIsIiIsV1NfQ0hJTER8V1NfVklTSUJMRXxFU19NVUxUSUxJTkUsIDI1LCAyNSwgNDUwLCAyMDAsIGh3bmQsIChITUVOVSkxMDAsaF9JbnN0LDApOwogICAgICAgICAgICBTZW5kTWVzc2FnZShoX1JpY2gsRU1fR0VUQ0hBUkZPUk1BVCwoV1BBUkFNKVNDRl9ERUZBVUxULChMUEFSQU0pJmNoZl9mb3JtYXQpOwogICAgICAgICAgICBoX0J1dHRvbl9Cb2xkPUNyZWF0ZVdpbmRvd0V4KDAsV0NfQlVUVE9OLCJCT0xEIixXU19DSElMRHxXU19WSVNJQkxFLCAyNSwgMjUwLCAxNTAsIDUwLCBod25kLCAoSE1FTlUpMSxoX0luc3QsMCk7CiAgICAgICAgICAgIGhfQnV0dG9uX0l0YWxpYz1DcmVhdGVXaW5kb3dFeCgwLFdDX0JVVFRPTiwgIklUQUxJQyIsV1NfQ0hJTER8V1NfVklTSUJMRSwgMzI1LDI1MCwxNTAsNTAsaHduZCwoSE1FTlUpMixoX0luc3QsMCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgV01fREVTVFJPWToKICAgICAgICAgICAgRGVzdHJveVdpbmRvdyhoX1JpY2gpOwogICAgICAgICAgICBEZXN0cm95V2luZG93KGhfQnV0dG9uX0l0YWxpYyk7CiAgICAgICAgICAgIERlc3Ryb3lXaW5kb3coaF9CdXR0b25fQm9sZCk7CiAgICAgICAgICAgIFBvc3RRdWl0TWVzc2FnZSAoMCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgV01fQ09NTUFORDoKICAgICAgICAgICAgc3dpdGNoICh3UGFyYW0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBjaGZfZm9ybWF0LmR3TWFzaz1DRk1fQk9MRDsKICAgICAgICAgICAgICAgICAgICBjaGZfZm9ybWF0LmR3RWZmZWN0cz1DRkVfQk9MRDsKICAgICAgICAgICAgICAgICAgICBTZW5kTWVzc2FnZShoX1JpY2gsRU1fU0VUQ0hBUkZPUk1BVCxTQ0ZfQUxMLChMUEFSQU0pJmNoZl9mb3JtYXQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgIGNoZl9mb3JtYXQuZHdNYXNrPUNGTV9JVEFMSUM7CiAgICAgICAgICAgICAgICAgICAgY2hmX2Zvcm1hdC5kd0VmZmVjdHM9Q0ZFX0lUQUxJQzsKICAgICAgICAgICAgICAgICAgICBTZW5kTWVzc2FnZShoX1JpY2gsRU1fU0VUQ0hBUkZPUk1BVCxTQ0ZfQUxMLChMUEFSQU0pJmNoZl9mb3JtYXQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jIChod25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K