11. juni 2004 - 20:49
Der er
7 kommentarer og
1 løsning
GUI med WinAPI
Jeg er nybegynder i C++. Jeg kan kode lidt i en main() metode osv. Jeg står nu og skal bruge en mindre GUI. Jeg har set på
http://winprog.org/tutorial/ at man skal bruge WinAPI.
Jeg vil nu høre om der er nogle der kan hjælpe mig lidt - jeg skal bruge en GUI der ser cirka sådan ud:
http://tigertool.etanet.dk/gui.pngEr der nogen der kan komme med et kodeeksempel på dette?
Endvidere skal jeg vide hvilken metode jeg skal skrive det i der skal ske når man trykker på knappen - og hvordan jeg får hentet brugerens input også.
Så.. nu har jeg gjort et forsøg - men det ser ikke ud som om at den Edit kommer frem på skærmen - hvor kan min fejl ligge:
<code>
#include <windows.h>
#define IDC_TEXT 1000
const char g_szClassName[] = "Mit GUI Program";
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
SetDlgItemText(hwnd, IDC_TEXT, "");
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Kunne ikke skabe vinduet", "Fejl",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Mit GUI Program",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 400, 240,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Kunne ikke skabe vinduet", "Fejl",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
</code>