Avatar billede baxos Nybegynder
16. februar 2004 - 20:21 Der er 16 kommentarer og
1 løsning

Fejl i kode ( GUI )

#include <iostream>
#include <stdlib.h>
#include <windows.h>

const char g_szClassname[] = "myWindowClass";

LRESULT CALLBACK Wndproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
  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.ipszMenuName = NULL;
wc.ipszClassname = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if (!registerclassex(&wc))
{
  MessageBox(NULL, "Window failed please try agian", "Error", MB.IconEXCLAMATION | MB_Ok);
  return 0;
  }
 
  hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "Application caption",
    WS_OVERLAPPEDWINDOW,
    CW_USEDDEFAULT, CW_USEDDEFAULT, 240, 120,
    NULL, NULL, HInstance, NULL);

    if (hwnd = 0)
    {
    MessageBox(NULL, "Window failed please try agian", "Error", MB.IconEXCLAMATION | MB_Ok);
    return 0;
    }
   
    ShowWindow(hwnd cmdshow);
    UpdateWindow(hwnd);
   
    while(GetMessage(&MSG, NULL, 0, 0) > 0)
    {
TranslateMessage(&MSG);
DispatchMessage(&MSG);
}


return Msg.wParam;
   
}

Sad og skrev dette men får en masse fejl
fuldte Tutorial på winprog.org her er fejl loggen :

Kompiler: Default compiler
Eksekverer  g++.exe...
g++.exe "C:\Dev-Cpp\WND-app\koden.cpp" -o "C:\Dev-Cpp\WND-app\koden.exe"  -g3  -I"C:\Dev-Cpp\include\c++"  -I"C:\Dev-Cpp\include\c++\mingw32"  -I"C:\Dev-Cpp\include\c++\backward"  -I"C:\Dev-Cpp\include"  -L"C:\Dev-Cpp\lib"
C:/Dev-Cpp/WND-app/koden.cpp: In function `int WinMain(HINSTANCE__*,
  HINSTANCE__*, CHAR*, int)':
C:/Dev-Cpp/WND-app/koden.cpp:33: `WndProc' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:33: (Each undeclared identifier is reported only

  once for each function it appears in.)

C:/Dev-Cpp/WND-app/koden.cpp:36: `struct _WNDCLASSEXA' has no member named `
  hinstance'

C:/Dev-Cpp/WND-app/koden.cpp:36: `hinstance' undeclared (first use this
  function)

C:/Dev-Cpp/WND-app/koden.cpp:40: `struct _WNDCLASSEXA' has no member named `
  ipszMenuName'

C:/Dev-Cpp/WND-app/koden.cpp:41: `struct _WNDCLASSEXA' has no member named `
  ipszClassname'

C:/Dev-Cpp/WND-app/koden.cpp:41: `g_szClassName' undeclared (first use this
  function)

C:/Dev-Cpp/WND-app/koden.cpp:44: `registerclassex' undeclared (first use this

  function)

C:/Dev-Cpp/WND-app/koden.cpp:46: `MB' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:46: `MB_Ok' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:55: `CW_USEDDEFAULT' undeclared (first use this
  function)

C:/Dev-Cpp/WND-app/koden.cpp:56: `HInstance' undeclared (first use this
  function)

C:/Dev-Cpp/WND-app/koden.cpp:64: `hwnd' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:64: parse error before `)' token

C:/Dev-Cpp/WND-app/koden.cpp:67: parse error before `,' token

C:/Dev-Cpp/WND-app/koden.cpp:70: parse error before `)' token

Eksekvering afbrudt
Avatar billede arne_v Ekspert
16. februar 2004 - 20:38 #1
LRESULT CALLBACK Wndproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

Wndproc med lille p

wc.lpfnWndProc  = WndProc;

WndProc med stort P
Avatar billede arne_v Ekspert
16. februar 2004 - 20:39 #2
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)

hInstance med stort I

wc.hinstance = hinstance;

hinstance med lille i
Avatar billede arne_v Ekspert
16. februar 2004 - 20:40 #3
const char g_szClassname[] = "myWindowClass";

lille n

wc.ipszClassname = g_szClassName;

stort N
Avatar billede arne_v Ekspert
16. februar 2004 - 20:42 #4
MB_Ok skal være MB_OK (lille->stort)
Avatar billede arne_v Ekspert
16. februar 2004 - 20:42 #5
hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "Application caption",
    WS_OVERLAPPEDWINDOW,
    CW_USEDDEFAULT, CW_USEDDEFAULT, 240, 120,
    NULL, NULL, HInstance, NULL);

skal være:

hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "Application caption",
    WS_OVERLAPPEDWINDOW,
    CW_USEDDEFAULT, CW_USEDDEFAULT, 240, 120,
    NULL, NULL, hInstance, NULL);

(stor H -> lille h)
Avatar billede arne_v Ekspert
16. februar 2004 - 20:43 #6
MB.IconEXCLAMATION

skal være

MB_ICONEXCLAMATION
Avatar billede arne_v Ekspert
16. februar 2004 - 20:44 #7
CW_USEDDEFAULT

skal være

CW_USEDEFAULT

(enkelt D)
Avatar billede arne_v Ekspert
16. februar 2004 - 20:46 #8
Jeg tror at det er de fleste fejl - ret dem og prøv at compile igen.
Avatar billede baxos Nybegynder
17. februar 2004 - 15:16 #9
Nu tror jeg jeg har fået rettet de fleste af fejlene men f¨r stadig en lang debug kode :P

Kompiler: Default compiler
Eksekverer  g++.exe...
g++.exe "C:\Dev-Cpp\WND-app\koden.cpp" -o "C:\Dev-Cpp\WND-app\koden.exe"  -g3  -I"C:\Dev-Cpp\include\c++"  -I"C:\Dev-Cpp\include\c++\mingw32"  -I"C:\Dev-Cpp\include\c++\backward"  -I"C:\Dev-Cpp\include"  -L"C:\Dev-Cpp\lib"
C:/Dev-Cpp/WND-app/koden.cpp: In function `int WinMain(HINSTANCE__*,
  HINSTANCE__*, CHAR*, int)':
C:/Dev-Cpp/WND-app/koden.cpp:33: `WndProc' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:33: (Each undeclared identifier is reported only

  once for each function it appears in.)

C:/Dev-Cpp/WND-app/koden.cpp:36: `struct _WNDCLASSEXA' has no member named `
  hinstance'

C:/Dev-Cpp/WND-app/koden.cpp:40: `struct _WNDCLASSEXA' has no member named `
  ipszMenuName'

C:/Dev-Cpp/WND-app/koden.cpp:41: `struct _WNDCLASSEXA' has no member named `
  ipszClassname'

C:/Dev-Cpp/WND-app/koden.cpp:44: `registerclassex' undeclared (first use this

  function)

C:/Dev-Cpp/WND-app/koden.cpp:46: `MB' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:55: `CW_USEDDEFAULT' undeclared (first use this
  function)

C:/Dev-Cpp/WND-app/koden.cpp:64: `hwnd' undeclared (first use this function)

C:/Dev-Cpp/WND-app/koden.cpp:64: parse error before `)' token

C:/Dev-Cpp/WND-app/koden.cpp:67: parse error before `,' token

C:/Dev-Cpp/WND-app/koden.cpp:70: parse error before `)' token

Eksekvering afbrudt
Avatar billede baxos Nybegynder
17. februar 2004 - 15:18 #10
Fejl i linje 33 : wc.lpfnWndProc  = WndProc;
Avatar billede arne_v Ekspert
17. februar 2004 - 15:19 #11
Du mangler statdig en MB. me dpunktum og en USEDDEFAULT med 2 gange D !
Avatar billede arne_v Ekspert
17. februar 2004 - 15:20 #12
g_szClassName har også stadig stort N
Avatar billede baxos Nybegynder
17. februar 2004 - 15:22 #13
#include <iostream>
#include <stdlib.h>
#include <windows.h>

const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK Wndproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
  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.ipszMenuName = NULL;
wc.ipszClassname = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if (!registerclassex(&wc))
{
  MessageBox(NULL, "Window failed please try agian", "Error", MB.IconEXCLAMATION | MB_OK);
  return 0;
  }
 
  hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "Application caption",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
    NULL, NULL, hInstance, NULL);

    if (hwnd = 0)
    {
    MessageBox(NULL, "Window failed please try agian", "Error", MB.IconEXCLAMATION | MB_OK);
    return 0;
    }
   
    ShowWindow(hwnd cmdshow);
    UpdateWindow(hwnd);
   
    while(GetMessage(&MSG, NULL, 0, 0) > 0)
    {
TranslateMessage(&MSG);
DispatchMessage(&MSG);
}


return Msg.wParam;
   
}

Her er koden jeg bruger lige nu
Avatar billede arne_v Ekspert
17. februar 2004 - 15:24 #14
Det giver ikke fejl men:

if (hwnd = 0)
   
skal uden tvivl være:

if (hwnd == 0)
Avatar billede arne_v Ekspert
17. februar 2004 - 15:25 #15
Den her linie må også være helt gal:

ShowWindow(hwnd cmdshow);

selvom jeg ikke lige kan gennemskue hvad det skal være.
Avatar billede baxos Nybegynder
15. maj 2004 - 13:41 #16
smid et svar
Avatar billede arne_v Ekspert
16. maj 2004 - 00:08 #17
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester