Zkou??m p?es Dev-c++ n?co naprogramovat, ale dev c++ mi to v?t?inou nebere
?ryvek k?du:
case VK_ESCAPE:
MessageBox(hWnd,TEXT("nZpravanAhoj!"),TEXT("System Error"),
MB_OK|MB_ICONERROR);
return 0;
case WM_PAINT:
GetClientRect(hWnd, &rect);
hDC=BeginPaint(hWnd, &ps);
SetMapMode(hDC, MM_ANISOTROPIC); *
SetWindowExtEx(hDC, 100, 100, NULL); *
SetViewportExtEx(hDC, rect.right, rect.bottom, NULL); *
Polyline(hDC, aptStar, 6); *
DrawText(hDC, TEXT("Fall To Go"), -1, &rect,
DT_SINGLELINE|DT_TOP|DT_RIGHT|DT_VCENTER);
EndPaint(hWnd, &ps);
VK_ESCAPE je zde definov?n jako zm??knut? kl?vesy Esc, jen?e p?i zm??knut? se nic nestane... nav?c ??dky ozna?en? * jsou kompil?torem ozna?eny linkererror@ a n?jak? ??slo.... Toto samoz?ejm? nejsou jedin? errory, tak?e jsem se cht?l zeptata jestli by tady nikdo nev?d?l ozna?en? pro r?zn? v?ci (nap? WM_KEYDOWN je zm??knut? kl?vesy atd. nebo pro funkce...nap? jak upravit toto nebo n?co jin?ho).
P?edt?m jsem docela dlouho hledal na netu ale knihovny MSDN jsou pouze pro visual a ofici?ln? str?nky jsou sp??e na okrasu..., ale nejlep?? co jsem k devc++ na?el bylo forum o n?m na http://sourceforge.net/forum/forum.php?max_rows=25&style=ultimate&offset=25&forum_id=48211
SourceForge.net:ale p?ece jenom n?jak? str?nka s informacemi by taky nebyla ?patn? !
Fórum › C / C++
Win API, aneb potřebuju óhromně velkého hinta
V zivote jsem s WinAPI nepracoval (a doufam, ze jeste dlouho nebudu muset), ale zkus sem ten kod hodit pokud mozno cely, takhle moc lidi nepozna, v cem je chyba...
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
TCHAR szAppName[] = TEXT("Nazdárek celičkej světe:-)");
HWND hWnd;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_QUESTION);
wc.hIconSm = NULL;
wc.hCursor = (HCURSOR)LoadCursor(NULL, IDC_CROSS);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+15);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(0,szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,NULL);
ShowWindow(hWnd,SW_SHOWMAXIMIZED);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
RECT rect;
const POINT aptStar[6] = {50,2, 2,98, 98,33, 2,33, 98,98, 50,2};
switch(message)
{
case VK_ESCAPE:
MessageBox(hWnd,TEXT("nZpravanJo kdo umí ten umí"),TEXT("Systém"),
MB_YESNO|MB_ICONQUESTION);
return 0;
case WM_PAINT:
GetClientRect(hWnd, &rect);
hDC=BeginPaint(hWnd, &ps);
/*SetMapMode(hDC, MM_ANISOTROPIC);
SetWindowExtEx(hDC, 100, 100, NULL);
SetViewportExtEx(hDC, rect.right, rect.bottom, NULL);
Polyline(hDC, aptStar, 6);*/
Ellipse(hDC,11,12,13,14);
DrawText(hDC, TEXT("Fall To Go"), -1, &rect,
DT_SINGLELINE|DT_TOP|DT_RIGHT|DT_VCENTER);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
};
//je to v podstatě jen začáteční okno.....do kterého jsem přidal akorát text a
//pár dalších maličkostí....
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
TCHAR szAppName[] = TEXT("Nazdárek celičkej světe:-)");
HWND hWnd;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_QUESTION);
wc.hIconSm = NULL;
wc.hCursor = (HCURSOR)LoadCursor(NULL, IDC_CROSS);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+15);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(0,szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,NULL);
ShowWindow(hWnd,SW_SHOWMAXIMIZED);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(wParam)
{
case VK_ESCAPE:
MessageBox(hWnd,TEXT("nZpravanJo kdo umí ten umí"),TEXT"Syst?m"),MB_YESNO|MB_ICONQUESTION);
return 0;
}
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
};
A to WM_PAINT, o kterym si psal na zacatku me v dev-cpp bez problemu prelozi... :ehh:
Popravdě - než něco začnu používat, měl bych se podívat, co to vlastně používám a nezačít okamžitě psát na fórum s tím že se někdo ozve, resp. měl bych se něco naučit.
První věc klávesa. Nikdy jsem s klávesama nepracoval, ale podle toho co vidím tam máš podmínku VK_ESCAPE, což není zpráva (Windows Message - WM_), ale řekl bych že je to příznak stisknutý klávesy.
Druhá věc SetWindowExtEx a ty ostatní. Nevim kde si je sebral, ale na MSDN trvalo 5s najít že funkce SetWindowExtEx má v použití napsáno Library: Use Gdi32.lib. Takže je naprosto jasné že ti to nebude fungovat, když nezadáš parametr pro linker.
Asan napsal:
Popravd? - ne? n?co za?nu pou??vat, m?l bych se pod?vat, co to vlastn? pou??v?m a neza??t okam?it? ps?t na f?rum s t?m ?e se n?kdo ozve, resp. m?l bych se n?co se nau?it.
Prvn? v?c kl?vesa. Nikdy jsem s kl?vesama nepracoval, ale podle toho co vid?m tam m?? podm?nku VK_ESCAPE, co? nen? zpr?va (Windows Message - WS_), ale ?ekl bych ?e je to p??znak stisknut? kl?vesy.
Druh? v?c SetWindowExtEx a ty ostatn?. Nevim kde si je sebral, ale na MSDN trvalo 5s naj?t ?e funkce SetWindowExtEx m? v pou?it? naps?no Library: Use Gdi32.lib. Tak?e je naprosto jasn? ?e ti to nebued fungovat, kdy? nezad?? parametr pro linker.
Windows Message - ?WM_ ...?
Omlouvám se, upsal jsem se, samozřejmě WM.
BTW: Pokud nastavíš v Dev-Cpp projekt jako windows application, knihovna gdi32 se linkuje automaticky.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Win 32 API — založil radvis
Win 32 api Dialogy — založil whysper
Klávesnice ve Win API — založil Adam Streck
Psaní Win API — založil matesz
Moderátoři diskuze