Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] Problem ze zmianą stylu tekstu w richedit

Ostatnio zmodyfikowano 2012-09-09 12:40
Autor Wiadomość
Mitu
Temat założony przez niniejszego użytkownika
[WinAPI] Problem ze zmianą stylu tekstu w richedit
» 2012-09-08 16:13:24
Witam.
Niedawno zacząłem naukę korzystania z WinAPI, w ramach treningu chciałem napisać program, który będzie kolorował, pogrubiał itp. wybrane części tekstu
wpisanego przez użytkownika.

Na początek próbowałem zmienić tekst w richedit na pogrubiony lub pochylony po naciśnięciu odpowiedniego przycisku.
Nie wiem dlaczego, ale tekst pozostaje niezmieniony (kompilator nie protestuje, program nie wyrzuca błędu):

C/C++
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, "Czcionka Impact", WS_CHILD | WS_VISIBLE, 25, 250, 150, 50, hwnd,( HMENU ) 1, h_Inst, 0 );
        h_Button_Italic = CreateWindowEx( 0, WC_BUTTON, "Czcionka Arial", WS_CHILD | WS_VISIBLE, 325, 250, 150, 50, hwnd,( HMENU ) 2, h_Inst, 0 )
        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;
        //(...)
    }
   
    return 0;
}

Byłbym wdzięczny, jeśli ktoś wyjaśniłby mi dlaczego to nie działa :)


   
P-64583
xevuel
» 2012-09-08 16:21:29
P-64585
Mitu
Temat założony przez niniejszego użytkownika
» 2012-09-08 16:38:48
Dzięki za link, ale to między innymi na tym artykule opierałem się przy pisaniu tego programu :)
Wydaje mi się, że zrobiłem wszystko jak w podanym linku, mimo to dalej nie działa.

Cały program, jeśli ktoś chciałby spojrzeć:
[Cały program]
P-64589
xevuel
» 2012-09-08 16:48:27
Niektóre problemy z RichEditem wynikają ze złej DLL'ki, patrz tutaj: http://msdn.microsoft.com/en-us/library/windows/desktop/bb787873(v=vs.85).aspx. Chodzi po prostu o to, że starsze wersje richedita mogą nie obsługiwać niektórych komunikatów.

Jeśli nie uda się rozwiązać problemu w inny sposób, możesz spróbować zaznaczyć cały tekst, a następnie zmienić flagę przy wysyłaniu komunikatu :)
P-64595
Mitu
Temat założony przez niniejszego użytkownika
» 2012-09-09 12:40:04
Trudno, wrócę do tematu później, dzięki za pomoc :)
P-64685
« 1 »
  Strona 1 z 1