Samurajewo Temat założony przez niniejszego użytkownika |
WinApi - Wyświetlanie tekstu z pliku w polu tekstowym » 2014-03-21 17:36:22 Piszę sobie prosty notatnik w ramach nauki WinApi. Dla przetestowania obsługi plików chcę pobrać tekst z pliku i wyświetlić go w polu tekstowym. Wszystko ładnie się kompiluje i odpala, ale tekst się nie wyświetla. Nie jestem w stanie znaleźć przyczyny więc zwracam się z prośbą o pomoc. Oto kod: #include <windows.h> #include "resources.hpp" #include "commctrl.h"
LPSTR YourPadClass = "YourPad Class"; MSG Message;
LRESULT CALLBACK WindowProcess( HWND YourPadWnd, UINT msg, WPARAM wParam, LPARAM lParam );
WNDCLASSEX yPW; HWND YourPadWnd; HWND hPole; HMENU hMenu; HACCEL hAccelerators;
int WINAPI WinMain( HINSTANCE hYourPadId, HINSTANCE hYourPadIdPrev, LPSTR lpCmdLine, int nCmdShow ) { yPW.cbSize = sizeof( WNDCLASSEX ); yPW.style = 0; yPW.lpfnWndProc = WindowProcess; yPW.cbClsExtra = 0; yPW.cbWndExtra = 0; yPW.hInstance = hYourPadId; yPW.hIcon = LoadIcon( NULL, IDI_APPLICATION ); yPW.hCursor = LoadCursor( NULL, IDC_ARROW ); yPW.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); yPW.lpszClassName = YourPadClass; yPW.lpszMenuName = NULL; yPW.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & yPW ) ) { MessageBox( NULL, "Can't open YourPad", "Error", MB_ICONERROR | MB_OK ); return 1; } hMenu = LoadMenu( hYourPadId, MAKEINTRESOURCE( 200 ) ); hAccelerators = LoadAccelerators( hYourPadId, MAKEINTRESOURCE( IDR_ACCELERATORS ) ); YourPadWnd = CreateWindowEx( WS_EX_WINDOWEDGE, YourPadClass, "YourPad", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 1000, 590, NULL, hMenu, hYourPadId, NULL ); hPole = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, 1000, 600, YourPadWnd, NULL, hYourPadId, NULL ); HANDLE g_hPlik = CreateFile( "C:\Documents and Settings\Administrator\Pulpit\Minecraft\WinAPi\plik.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( g_hPlik == INVALID_HANDLE_VALUE ) { MessageBox( YourPadWnd, "Something goes wrong!!!", "Error!", MB_ICONERROR ); } else { DWORD dwSize = GetFileSize( g_hPlik, NULL ); if( dwSize == 0xFFFFFFFF ) { MessageBox( YourPadWnd, "Something goes wrong!!!", "Error!", MB_ICONERROR ); } else { LPSTR bufor; bufor =( LPSTR ) GlobalAlloc( GPTR, dwSize ); DWORD plikPrzeczyt; ReadFile( g_hPlik, bufor, dwSize, & plikPrzeczyt, NULL ); bufor[ dwSize ] = 0; SetWindowText( hPole, bufor ); GlobalFree( bufor ); CloseHandle( g_hPlik ); } } if( YourPadWnd == NULL ) { MessageBox( NULL, "Can't open a window", "Error", MB_ICONERROR ); return 1; } if( !hAccelerators ) { MessageBox( YourPadWnd, "Can't load accelerators!!!", NULL, MB_ICONERROR ); } ShowWindow( YourPadWnd, nCmdShow ); UpdateWindow( YourPadWnd ); while( GetMessage( & Message, NULL, 0, 0 ) ) { if( !TranslateAccelerator( YourPadWnd, hAccelerators, & Message ) ) TranslateMessage( & Message ); DispatchMessage( & Message ); } return Message.wParam; return 0; }
LRESULT CALLBACK WindowProcess( HWND YourPadWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: DestroyWindow( YourPadWnd ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; case WM_COMMAND: { if( LOWORD( wParam ) == MENU_ITEM_ESCAPE ) PostQuitMessage( 0 ); if( LOWORD( wParam ) == MENU_ITEM_DELETE ) SetWindowText( hPole, "" ); } break; default: return DefWindowProc( YourPadWnd, msg, wParam, lParam ); break; } return 0; } |