Gdi+
Ostatnio zmodyfikowano 2024-11-15 22:20
pekfos |
» 2024-11-14 00:06:02 Kod źródłowy nie jest kodowany w UTF-8. Przeczytaj to co pisał DejaVu. |
|
KKR Temat założony przez niniejszego użytkownika |
» 2024-11-15 13:26:05 No właśnnie bo gdy w CodeBlocks przełączyć z Windows 1250 na UTF-8 to wszystko działa. Tylk tym razem reszta API nie za bardzo. W sieci znalazłem coś takiego:
#include <locale> #include <codecvt>
std::string str = "ółśćż"; std::wstring_convert<std::codecvt_utf8_utf16<char16_t>> converter; std::wstring wstr = converter.from_bytes(str);
CB ustawiony na Windows 1250, nie zgłasza błędów ale nie konwertuje.
|
|
pekfos |
» 2024-11-15 18:03:15 Tylk tym razem reszta API nie za bardzo. Co to ma znaczyć? Co nie działa. Podaj konkretny kod i konkretne objawy. |
|
KKR Temat założony przez niniejszego użytkownika |
» 2024-11-15 20:39:47 using namespace Gdiplus; using namespace std;
Wstring Scierzka;
string Scierzka;
case WM_LBUTTONUP: { OPENFILENAME ofn; wstring nazwapliku; string nazwapliku; ZeroMemory( & ofn, sizeof( ofn ) ); ofn.hwndOwner = Hwnd_Settings; ofn.lStructSize = sizeof( ofn ); ofn.lpstrFilter = "Grafika (*.jpg)\0*.jpg\0*.bmp\0*.bmp\0*.gif\0*.gif\0*.png\0*.png\0*.tif\0*.tif\0"; ofn.nMaxFile = MAX_PATH; ofn.lpstrFile = LPSTR( nazwapliku.c_str() ); ofn.lpstrTitle = "Pliki graficzne"; ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if( GetOpenFileName( & ofn ) ) { Scierzka = LPWSTR( nazwapliku.c_str() ); Scierzka = LPSTR( nazwapliku.c_str() ); InvalidateRect( Hwnd_Explo, NULL, FALSE ); } break; } case WM_PAINT: { HDC hdc; PAINTSTRUCT ps; hdc = BeginPaint( hwnd, & ps ); Graphics graphics( hdc ); Scierzka = L"D:/Pobrane/żółć.jpg"; Image image( Scierzka ); Image image( Scierzka ); const size_t len = Scierzka.length() + 1; wchar_t wcstring[ len ]; swprintf( wcstring, len, L"%s", Scierzka.c_str() ); Image image( wcstring ); graphics.DrawImage( & image, 0, 0 ); EndPaint( hwnd, & ps ); break; } |
|
pekfos |
» 2024-11-15 21:01:43 Dodaj -DUNICODE do opcji kompilacji jak chcesz mieć wszystko w Unicode. Alternatywnie na początku kodu, przed wszystkimi include dodaj https://learn.microsoft.com/en-us/windows/win32/intl/conventions-for-function-prototypesNa WINDOWS-1250 doczepił się do polskich liter Kod źródłowy ma być w UTF-8. Kompilator domyślnie oczekuje że tak jest, więc dostarczając program w jednym z tysiąca nierozróżnialnych sposobów kodowania sam się prosisz o kłopoty. #include <Windows.h>
int main() { MessageBoxA( NULL, "C:\\my_żółć.png", "test", MB_OK ); } Taki kod się kompiluje, ale w wygenerowanym programie napisy są dalej w UTF-8. Możesz powiedzieć kompilatorowi żeby kodował je inaczej, np opcją -fexec-charset=Windows-1250 i wtedy będzie też działać poprawnie. |
|
KKR Temat założony przez niniejszego użytkownika |
» 2024-11-15 22:20:48 Po wim tak, że od gdzieś 2001 roku pisze w VB6, prosty język i kiedyś niezły i o dużych możliwościach, niestety nie dziś. Pare tygodni temu wziołem się za C++, szkoda że tak póżno. Nigdy nie znałem C++. Przepisałem sobie taką aplikację z VB6 na C++ taka nakładka na Windows do organizacji skrótów pulpitu. Jak zauważyłem w C++ wiele żeczy trzeba robić ręcznie VB6 był wygodniejszy, no ale cóż. Jak bym tak koledze przesłał cały kod, czy można liczyć na poprawę tego kodu żeby działało.?
/edit: adres e-mail usunięty by DejaVu - unikaj podawania swojego e-maila na forach w Internecie, bo boty z Internetu go zapiszą w swoich bazach danych i będziesz dostawał dużo spamu. |
|
1 « 2 » |