Hmm, też dobra opcja, ale jako że koleś zaczyna może nawet nie ogarnąć jak zmusić wxWidgets do działania z C::B.
A jest w tym jakas filozofia? Na razie uzuwalem C::B tylko do konsoli i WinApi.
Nie bardzo wiem, co byś chciał zrobić z pulpitem...
W tutorialu jest zadanie, żeby napisać program, który wyświetla napis na pulpicie. Probowałem to zrobić ale niestety nie działa. Błędów żadnych nie zgłasza ale napisu nie ma. Jakby co probowałem to zrobić tak ze ten napis wyświetla sie w oknie i na pulpicie, a jak się kliknie na okno to napis się zmienia na inny.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <string>
#include <iostream>
using namespace std;
string NazwaKlasy = "MyClass";
bool Jakinapis;
LRESULT CALLBACK WinEventProcedure (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
Jakinapis = !Jakinapis;
InvalidateRect(GetDesktopWindow(), NULL, true);
InvalidateRect(hwnd, NULL, true);
break;
case WM_PAINT:
PAINTSTRUCT ps, ps2;
HDC hdcOkno, hdcOkno2;
RECT Obszar, Obszar2;
GetClientRect(hwnd, &Obszar);
GetClientRect(GetDesktopWindow(), &Obszar2);
string Napis = (Jakinapis ? "Napis" : "InnyNapis");
hdcOkno = BeginPaint(GetDesktopWindow(), &ps);
hdcOkno2 = BeginPaint(hwnd, &ps2);
DrawText(hdcOkno, Napis.c_str(), int(Napis.length()), &Obszar2, DT_VCENTER | DT_SINGLELINE | DT_CENTER);
DrawText(hdcOkno2, Napis.c_str(), int(Napis.length()), &Obszar, DT_VCENTER | DT_SINGLELINE | DT_CENTER);
EndPaint(GetDesktopWindow(), &ps);
EndPaint(hwnd, &ps2);
cout<<Napis<<endl;
break;
}
return DefWindowProc(hwnd, Message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE, LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASSEX KlasaOkna;
ZeroMemory(&KlasaOkna, sizeof(WNDCLASSEX));
KlasaOkna.cbSize = sizeof(WNDCLASSEX);
KlasaOkna.hInstance = hThisInstance;
KlasaOkna.lpszClassName = NazwaKlasy.c_str();
KlasaOkna.lpfnWndProc = WinEventProcedure;
KlasaOkna.hIcon = LoadIcon(NULL, IDI_APPLICATION);
KlasaOkna.hCursor = LoadCursor(NULL, IDC_ARROW);
KlasaOkna.hbrBackground = HBRUSH (GetStockObject(WHITE_BRUSH));
RegisterClassEx(&KlasaOkna);
HWND hOkno;
hOkno = CreateWindowEx(WS_EX_TOOLWINDOW,
NazwaKlasy.c_str(),
"Napis na pulpicie",
WS_CAPTION | WS_SYSMENU | WS_OVERLAPPED | WS_BORDER,
CW_USEDEFAULT,
CW_USEDEFAULT,
250,
50,
NULL,
NULL,
hThisInstance,
NULL);
ShowWindow(hOkno, nCmdShow);
MSG msgKomunikat;
while (GetMessage(&msgKomunikat, NULL, 0, 0))
{
TranslateMessage(&msgKomunikat);
DispatchMessage(&msgKomunikat);
}
return msgKomunikat.wParam;
}
I jeszcze propo wxWidgets. Zna ktoś jakieś sensowne tutoriale po polsku? Bo póki co kuleje z angielskim.
Co byście bardziej polecili, Jave czy c#?