fork download
  1. #include <windows.h>
  2. #include <string>
  3. #include <commctrl.h>
  4. #include <richedit.h>
  5. using namespace std;
  6.  
  7. LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
  8.  
  9. char sz_Klasa[ ] = "RicheditApp";
  10. HWND h_Okno, h_Rich, h_Button_Bold, h_Button_Italic;
  11. HINSTANCE h_Inst;
  12. CHARFORMAT chf_format;
  13.  
  14. int WINAPI WinMain (HINSTANCE h_Inst, HINSTANCE, LPSTR lpsz_KlasaOkna, int i_Show)
  15. {
  16. if(!LoadLibrary("RICHED32.DLL"))
  17. {
  18. MessageBox(0,"Nie uda³o siê za³adowaæ biblioteki \"RICHED32.DLL\"","B³¹d!",MB_ICONERROR);
  19. PostQuitMessage(0);
  20. }
  21. //globalnij kfyt procesu//
  22. ::h_Inst=h_Inst;
  23. //budowa//
  24. WNDCLASSEX WinCl_Okno;
  25. WinCl_Okno.hInstance = h_Inst;
  26. WinCl_Okno.lpszClassName = sz_Klasa;
  27. WinCl_Okno.lpfnWndProc = WindowProcedure;
  28. WinCl_Okno.style = CS_DBLCLKS;
  29. WinCl_Okno.cbSize = sizeof (WNDCLASSEX);
  30. //wyglad//
  31. WinCl_Okno.hIcon = LoadIcon (NULL, IDI_APPLICATION);
  32. WinCl_Okno.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  33. WinCl_Okno.hCursor = LoadCursor (NULL, IDC_ARROW);
  34. WinCl_Okno.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
  35. //menu//
  36. WinCl_Okno.lpszMenuName = NULL;
  37. //dodatkowe info//
  38. WinCl_Okno.cbClsExtra = 0;
  39. WinCl_Okno.cbWndExtra = 0;
  40. //rejestruj klase//
  41. if (!RegisterClassEx (&WinCl_Okno)) return 0;
  42.  
  43. MSG messages;
  44. h_Okno=CreateWindowEx(0, sz_Klasa, "Obs³uga Richedit", WS_OVERLAPPED|WS_SYSMENU, 300,300,500,400,0,0,h_Inst,0);
  45. ShowWindow(h_Okno,i_Show);
  46.  
  47. //obsluga komunikatow//
  48. while (GetMessage (&messages, NULL, 0, 0))
  49. {
  50. TranslateMessage(&messages);
  51. DispatchMessage(&messages);
  52. }
  53. return messages.wParam;
  54. }
  55.  
  56. LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  57. {
  58. switch (message)
  59. {
  60. case WM_CREATE:
  61. h_Rich=CreateWindowEx(WS_EX_CLIENTEDGE,"richedit","",WS_CHILD|WS_VISIBLE|ES_MULTILINE, 25, 25, 450, 200, hwnd, (HMENU)100,h_Inst,0);
  62. SendMessage(h_Rich,EM_GETCHARFORMAT,(WPARAM)SCF_DEFAULT,(LPARAM)&chf_format);
  63. h_Button_Bold=CreateWindowEx(0,WC_BUTTON,"BOLD",WS_CHILD|WS_VISIBLE, 25, 250, 150, 50, hwnd, (HMENU)1,h_Inst,0);
  64. h_Button_Italic=CreateWindowEx(0,WC_BUTTON, "ITALIC",WS_CHILD|WS_VISIBLE, 325,250,150,50,hwnd,(HMENU)2,h_Inst,0);
  65. break;
  66. case WM_DESTROY:
  67. DestroyWindow(h_Rich);
  68. DestroyWindow(h_Button_Italic);
  69. DestroyWindow(h_Button_Bold);
  70. PostQuitMessage (0);
  71. break;
  72. case WM_COMMAND:
  73. switch (wParam)
  74. {
  75. case 1:
  76. chf_format.dwMask=CFM_BOLD;
  77. chf_format.dwEffects=CFE_BOLD;
  78. SendMessage(h_Rich,EM_SETCHARFORMAT,SCF_ALL,(LPARAM)&chf_format);
  79. break;
  80. case 2:
  81. chf_format.dwMask=CFM_ITALIC;
  82. chf_format.dwEffects=CFE_ITALIC;
  83. SendMessage(h_Rich,EM_SETCHARFORMAT,SCF_ALL,(LPARAM)&chf_format);
  84. break;
  85. }
  86. break;
  87. default:
  88. return DefWindowProc (hwnd, message, wParam, lParam);
  89. }
  90.  
  91. return 0;
  92. }
  93.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty