#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
void ApplyMarkup(HWND hwnd)
{
// Seçili metnin biçimlendirme işlemi yapılacak
// RTF biçimindeki biçimlendirme belirteçlerini kullanarak biçimlendirme uygula
// Örnek RTF belirteçleri: \b kalın, \i eğik, \u altı çizili
char* bold = "\\b";
char* italic = "\\i";
char* underline = "\\u";
// Seçili metni al
int start, end;
SendMessage(hwnd, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);
char buffer[1024];
SendMessage(hwnd, EM_GETSELTEXT, 0, (LPARAM)buffer);
// RTF belirteçlerini metne ekle
char* result = (char*)malloc(strlen(buffer) * 2);
strcpy(result, "");
strcat(result, bold);
strcat(result, italic);
strcat(result, italic);
strcat(result, bold);
// Seçili metni RTF biçiminde yenisiyle değiştir
SendMessage(hwnd, EM_REPLACESEL, 0, (LPARAM)result);
free(result);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
// Markup düğmesini oluştur
CreateWindow("BUTTON", "Markup", WS_VISIBLE | WS_CHILD, 10, 10, 100, 30, hwnd, (HMENU)1, NULL, NULL);
break;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case 1:
// Markup düğmesine tıklandığında, seçili metni biçimlendir
ApplyMarkup(hwnd);
break;
}
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
wc.lpszClassName = "MarkupButton";
RegisterClass(&wc);
HWND hwnd = CreateWindow("MarkupButton", "Markup Button", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,