Počítadlo ikon – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Počítadlo ikon – C / C++ – Fórum – Programujte.comPočítadlo ikon – C / C++ – Fórum – Programujte.com

 

Gordon
~ Anonymní uživatel
6 příspěvků
20. 4. 2007   #1
-
0
-

Zdravím, zde je pokus o vytvoření počítadla zobrazených ikon v okně ale pořád nějak zlobí TextOut...
Můžete kod zkontrolovat

#include <windows.h>

#include "resource1.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND hWnd;
int count[10];

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
TCHAR szAppName[] = TEXT("Default window"); // Header
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(hInstance, MAKEINTRESOURCE(IDI_ICON)); // Ico
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); // Ico_sm
wc.hCursor = (HCURSOR)LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR));
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+0); // Background
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;

RegisterClassEx(&wc);

hWnd = CreateWindowEx(0,szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, // Margin from left
CW_USEDEFAULT, // Margin from top
CW_USEDEFAULT, // Widht
CW_USEDEFAULT, // Height
NULL,
NULL,
hInstance,NULL);
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);

while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

void Draw(WPARAM wParam, LPARAM lParam, int count[10])
{
POINTS ptCursor;
ptCursor = MAKEPOINTS(lParam);
HDC hDC;
hDC = GetDC(hWnd);
if(wParam & WM_LBUTTONDOWN)
DrawIcon(hDC, ptCursor.x, ptCursor.y,
(HICON)(WORD)GetClassLong(hWnd, GCL_HICON));
ReleaseDC(hWnd, hDC);
count++;
}

void Count()
{
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, 10, 10, count, 4);
EndPaint(hWnd, &ps);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;

case WM_PAINT:
Count();
break;

case WM_MOUSEMOVE:
Draw(wParam, lParam, count);
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}


Děkuji za ochotu

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
20. 4. 2007   #2
-
0
-



#include <windows.h>
#include "resource1.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND hWnd;
// int count[10];
int count;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
TCHAR szAppName[] = TEXT("Default window"); // Header
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(hInstance, MAKEINTRESOURCE(IDI_ICON)); // Ico
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); // Ico_sm
wc.hCursor = (HCURSOR)LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR));
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+0); // Background
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;

RegisterClassEx(&wc);

hWnd = CreateWindowEx(0,szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, // Margin from left
CW_USEDEFAULT, // Margin from top
CW_USEDEFAULT, // Widht
CW_USEDEFAULT, // Height
NULL,
NULL,
hInstance,NULL);
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);

while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

void Draw(WPARAM wParam, LPARAM lParam, int count[10])
{
POINTS ptCursor;
ptCursor = MAKEPOINTS(lParam);
HDC hDC;
hDC = GetDC(hWnd);
if(wParam & WM_LBUTTONDOWN)
DrawIcon(hDC, ptCursor.x, ptCursor.y,
(HICON)(WORD)GetClassLong(hWnd, GCL_HICON));
ReleaseDC(hWnd, hDC);
count++;
}

void Count()
{
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hWnd, &ps);
//TextOut(hDC, 10, 10, count, 4);
TCHAR buf[10];
_stprintf(buf, "%d", count);
TextOut(10,10,buf, lstrlen(buf));
EndPaint(hWnd, &ps);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;

case WM_PAINT:
Count();
break;

case WM_MOUSEMOVE:
Draw(wParam, lParam, count);
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}


Nezkouseno

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý