Witam!
Programując w Winapi stwierdziłem że fajnie byłoby napisać taki w 100% funkcjonalny notatnik. A żeby był funkcjonalny musi posiadać opcję Zapisz i Wczytaj. Trochę o tym poczytałem, ale nie za bardzo rozumiem z tych internetowych kursów, co i jak, bo nie ma tam zbyt bardzo napisane co gdzie wcisnąć, etc.
Notatnik posiada menu, na którego pozycji nr. 2 znajduje się opcja Zapisz.. I tu pytanie - jak napisać warunek, żeby po naciśnięciu Zapisz faktycznie zapisywało? Kolega coś mi mówił że WinApi posiada funkcje które otwierają takie okienko jak w prawie wszystkich Windowsowych programach, ze ścieżką, nazwą, formatem etc.
Aktualny kod programu:
Kod:
#include <windows.h>
#include <commctrl.h>
HFONT hFont;
HWND hEdit,hButton,hWnd;
CHAR szClassName[]="Notatnik";
HINSTANCE* hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lStart,INT nShow)
{
hInst=&hInstance;
WNDCLASSEX wc;
wc.hInstance=*hInst;
wc.lpszClassName=szClassName;
wc.lpfnWndProc=WndProc;
wc.style=0;
wc.cbSize=sizeof(WNDCLASSEX);
wc.hIcon=LoadIcon(0,"Ikonkaa");
wc.hIconSm=LoadIcon(0,"Ikonka");
wc.hCursor=LoadCursor(0,IDC_ARROW);
wc.lpszMenuName="Meenu";
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)COLOR_BACKGROUND;
if(!RegisterClassEx(&wc)) return 0;
hWnd=CreateWindowEx(0,szClassName,"Notatnik",WS_OVERLAPPEDWINDOW,20,20,600,305,0,0,*hInst,0);
ShowWindow(hWnd,nShow);
MSG msgs;
while(GetMessage(&msgs,0,0,0))
{
TranslateMessage(&msgs);
DispatchMessage(&msgs);
}
return msgs.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)
{
switch(msg)
{
case WM_CREATE:
hEdit=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL|WS_VSCROLL|WS_HSCROLL,1,1,590,250,hwnd,0,*hInst,0);
hFont=CreateFont(0,0,0,0,0,0,0,0,0,0,0,0,0,"Times New Roman");
SendMessage(hEdit,WM_SETFONT,(WPARAM)hFont,0);
break;
case WM_COMMAND:
if(wPar==1) SetWindowText(hEdit,""); // "Nowy plik"
if(wPar==2) // Tutaj powinien znaleźć się opis Zapisywania
break;
case WM_DESTROY:
DestroyWindow(hButton);
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, msg, wPar, lPar);
}
return 0;
}
Czy ktoś byłby tak miły i wytłumaczyć "łopatologicznie" co gdzie i jak?
Z góry ogromne dzięki...