
1 #include <windows.h>
2 #include "resource.h"
3
4 #define ID_EDIT 1
5
6 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
7
8 TCHAR szAppName[] = TEXT("Editor de Texto Incompleto");
9
10 void addMenus(HWND);
11
12 HMENU eMenu;
13
14 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCS) {
15 HACCEL hAccel;
16 HWND hwnd;
17 MSG msg;
18 WNDCLASS wndclass;
19 wndclass.style = CS_HREDRAW | CS_VREDRAW;
20 wndclass.lpfnWndProc = WndProc;
21 wndclass.cbClsExtra = 0;
22 wndclass.cbWndExtra = 0;
23 wndclass.hInstance = hInstance;
24 wndclass.hIcon = LoadIcon(hInstance, IDI_ICON);
25 wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
26 wndclass.hbrBackground = (HBRUSH) WHITE_BRUSH;
27 wndclass.lpszMenuName = szAppName;
28 wndclass.lpszClassName = szAppName;
29
30 if(!RegisterClass(&wndclass)) {
31 MessageBox(NULL, TEXT("This program requires Windows NT!"),
32 szAppName, MB_ICONERROR);
33 return 0;
34 }
35 hwnd = CreateWindow(szAppName, szAppName,
36 WS_OVERLAPPEDWINDOW,
37 GetSystemMetrics(SM_CXSCREEN) / 4,
38 GetSystemMetrics (SM_CYSCREEN) / 4,
39 GetSystemMetrics (SM_CXSCREEN) / 2,
40 GetSystemMetrics (SM_CYSCREEN) / 2,
41 NULL, NULL, hInstance, NULL);
42 ShowWindow(hwnd, SW_SHOWNORMAL);
43 UpdateWindow(hwnd);
44 hAccel = LoadAccelerators(hInstance, szAppName);
45
46 while(GetMessage(&msg, NULL, 0, 0)) {
47 if(!TranslateAccelerator(hwnd, hAccel, &msg)) {
48 TranslateMessage(&msg);
49 DispatchMessage (&msg);
50 }
51 }
52 return msg.wParam;
53 }
54
55 AskConfirmation(HWND hwnd) {
56 return MessageBox(hwnd, TEXT("Really want to close PopPad2?"), szAppName, MB_YESNO | MB_ICONQUESTION);
57 }
58
59 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
60 static HWND hwndEdit;
61 int iSelect, iEnable;
62 switch(message) {
63 case WM_CREATE:
64 addMenus(hwnd);
65 hwndEdit = CreateWindow(
66 TEXT("edit"),NULL,WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|WS_BORDER|ES_LEFT|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL,
67 0, 0, 0, 0,
68 hwnd, (HMENU) ID_EDIT, ((LPCREATESTRUCT) lParam)->hInstance, NULL
69 );
70 return 0;
71 case WM_SETFOCUS:
72 SetFocus(hwndEdit);
73 return 0;
74 case WM_SIZE:
75 MoveWindow(hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
76 return 0;
77
78 case WM_COMMAND:
79 if(lParam) {
80 if(LOWORD(lParam)==ID_EDIT&&(HIWORD(wParam)==EN_ERRSPACE||HIWORD(wParam)==EN_MAXTEXT))
81 MessageBox(hwnd, TEXT("Edit control out of space."), szAppName, MB_OK | MB_ICONSTOP);
82 return 0;
83 }
84 if(LOWORD(wParam)==3) {
85 int n = GetWindowTextLength(hwndEdit)+1;
86 static char tmn[500];
87 GetWindowText(hwndEdit, tmn, n);
88 MessageBox(NULL, tmn, "Teste", MB_OK);
89 }
90 else
91 switch(LOWORD(wParam)) {
92 case WM_CLOSE:
93 if(IDYES == AskConfirmation(hwnd))
94 DestroyWindow(hwnd);
95 return 0;
96 case WM_QUERYENDSESSION:
97 if (IDYES == AskConfirmation(hwnd))
98 return 1;
99 else
100 return 0;
101 case WM_DESTROY:
102 PostQuitMessage(0);
103 return 0;
104 }
105 }
106 return DefWindowProc(hwnd, message, wParam, lParam);
107 }
108
109 void addMenus(HWND hwnd) {
110 eMenu = CreateMenu();
111
112 AppendMenu(eMenu, MF_STRING, 3, "Arquivo");
113 AppendMenu(eMenu, MF_STRING, NULL, "Editar");
114 AppendMenu(eMenu, MF_STRING, NULL, "Copiar");
115 AppendMenu(eMenu, MF_STRING, NULL, "Iniciar");
116
117 SetMenu(hwnd, eMenu);
118 }
Comentários
Postar um comentário