Avatar billede acid-head Nybegynder
28. oktober 2004 - 18:50 Der er 10 kommentarer og
1 løsning

edit-boxe i Win32

Hej eksperter..

Jeg er lige begyndt så småt at arbejde med Win32-API'et i C++..

Og jeg har lavet et lille program, som indeholder et tekst-felt og en knap.

Men mangler nogle funktioner til at hive det indtastede ud af tekst-feltet.

Og mangler også funktioner, så kan jeg putte noget tekst ind i et felt..

Har prøvet at lede på msdn.microsoft.com, men der er sQ mange ting, og de fleste resultater har noget med .NET frameworket at gøre.

Hvis nogle har nogle tips til en mere overskuelig dokumentation, ville dette også være dejligt :)

På forhånd tak!
Avatar billede bertelbrander Novice
28. oktober 2004 - 20:25 #2
Og et lille eksempel:

#include <windows.h>
#include <stdio.h>

#define IDC_EDIT 1200
#define IDC_PUSH 1220

HINSTANCE InstanceHandle;

void OnButton(HWND hwndDlg)
{
  char Msg[1024];
  char Msg2[32 + 1024];
  GetDlgItemText(hwndDlg, IDC_EDIT, Msg, sizeof(Msg));
  sprintf(Msg2, "You wrote: %s", Msg);
  MessageBox(hwndDlg, Msg2, "-+-+-+-", MB_OK);
  SetDlgItemText(hwndDlg, IDC_EDIT, "My Text");
}

LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg)
  {
  case WM_CREATE:
      {
        HWND Edit = CreateWindow("EDIT",
                                  "",
                                  WS_CHILD | WS_VISIBLE| ES_AUTOHSCROLL,
                                  10, 10, 90, 20,
                                  hwndDlg,
                                  (HMENU)(IDC_EDIT),
                                  InstanceHandle,
                                  0);
        CreateWindow("BUTTON",
                      "PushMe",
                      WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
                      10, 40, 90, 20,
                      hwndDlg,
                      (HMENU )(IDC_PUSH),
                      InstanceHandle,
                      0);
        SetFocus(Edit);
      }
      break;
  case WM_COMMAND:
      if(LOWORD(wParam) == IDC_PUSH && HIWORD(wParam) == BN_CLICKED)
      {
        OnButton(hwndDlg);
      }
      break;
  }
  return DefWindowProc(hwndDlg, msg, wParam, lParam);
};

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow)
{
  WNDCLASS wc;
  InstanceHandle = hInstance;
  memset(&wc, 0, sizeof(WNDCLASS));
  wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
  wc.lpfnWndProc = DialogProc;
  wc.hInstance = InstanceHandle;
  wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1);
  wc.lpszClassName = "WhateverClass";
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  if(!RegisterClass(&wc))
      return FALSE;

  HWND WindowHandle = CreateWindow("WhateverClass",
                                    "Whatever",
                                    WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU,
                                    100, 100, 100, 100,
                                    NULL,
                                    NULL,
                                    InstanceHandle,
                                    0);
  MSG Msg;
  while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0)
  {
      if(!IsDialogMessage(WindowHandle, &Msg))
      {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
      }
  }
  return 0;
}
Avatar billede acid-head Nybegynder
28. oktober 2004 - 20:27 #3
"The SetDlgItemInt function sets the text of a control in a dialog box to the string representation of a specified integer value."

Skal min tekst-boks så ikke være i en dialog box? Den er bare oprettet runtime (hedder det det) med funktionen CreateWindowEx()
Avatar billede acid-head Nybegynder
28. oktober 2004 - 20:28 #4
Okay.. Ikke ;)

Vil kigge nærmere på dit eksempel, når jeg lige er færdig med min kemi-rapport :)
Avatar billede bertelbrander Novice
28. oktober 2004 - 20:32 #5
Ja, det hedder oprettet runtime (til forskel fra at være oprette fra en dialog resource).

Så vidt jeg ved er der ingen krav til at det er en dialog box.
Avatar billede acid-head Nybegynder
28. oktober 2004 - 22:07 #6
Jamen, det virker jo simpelthen bare godt.. :) Og godt eksempel!

Tak.. Hvis du lige lægger et svar?
Avatar billede acid-head Nybegynder
28. oktober 2004 - 22:24 #7
Fandt ud af at denne side er god at have ved hånden, når man laver sådan noget her:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/wincontrols.asp
Avatar billede bertelbrander Novice
28. oktober 2004 - 22:30 #8
Jeg samler ikke point, mine svar er gratis.
Avatar billede acid-head Nybegynder
29. oktober 2004 - 01:00 #9
Heh.. Okay.. Men i hvert fald mange tak alligevel!
Avatar billede acid-head Nybegynder
29. oktober 2004 - 01:01 #10
Damn ;)
Avatar billede acid-head Nybegynder
29. oktober 2004 - 01:01 #11
Jeg er vist træt :P
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