Ich habe mehrere Websites, Dokumente und Tutorials durchlaufen und alle sagen dasselbe, das heißt, jedes Steuerelement ist nichts anderes als ein Fenster in Win32s API, daher kann man die CreateWindowExW()
-Funktion verwenden, um ein ListBox
Steuerelement zu erstellen. Fenster über dem Hauptanwendungsfenster.Win32: Erstellen eines ListBox-Steuerelements mithilfe der CreateWindowExW() - Funktion?
Obwohl ich die Konzepte von allen Kontrollen erhalten sind Fenster mit verschiedenen dwStyle, ich habe eine harte Zeit, herauszufinden, wie, zu instanziiert zu sagen so, die ListBox
Kontrolle.
traf ich ein Tutorial, in dem ein Dialog, in seiner Erklärung ein LISTBOX
angegeben zu haben, wird wie folgt geschrieben:
// resource.h
#define IDD_MAIN 101
#define IDC_TEXT 1000
#define IDC_NUMBER 1001
#define IDC_LIST 1002
#define IDC_ADD 1003
#define IDC_CLEAR 1004
#define IDC_REMOVE 1005
#define IDC_SHOWCOUNT 1006
// .rc resource file
IDD_MAIN DIALOG DISCARDABLE 0, 0, 207, 156
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Controls One"
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Add",IDC_STATIC,7,10,14,8
EDITTEXT IDC_TEXT,25,7,120,14,ES_AUTOHSCROLL
EDITTEXT IDC_NUMBER,150,7,21,14,ES_NUMBER
LTEXT "times.",IDC_STATIC,177,10,23,8
LISTBOX IDC_LIST,7,25,138,106,LBS_NOINTEGRALHEIGHT |
LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Add",IDC_ADD,150,30,50,14
PUSHBUTTON "&Remove",IDC_REMOVE,150,47,50,14
PUSHBUTTON "&Clear",IDC_CLEAR,150,63,50,14
LTEXT "This item was added",IDC_STATIC,7,141,66,8
CTEXT "-",IDC_SHOWCOUNT,77,141,32,8
LTEXT "times",IDC_STATIC,114,141,17,8
END
Und es in seinem C-Programm wie so mit:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
}
Jetzt, das kann ich machen und die Konzepte verstehen. Abgesehen davon möchte ich in der Lage sein, mein Hauptanwendungsfenster zu erstellen und zu gestalten, um eine ListBox
Steuerung hinzuzufügen. In diesem Lernprogrammbeispiel wird nicht die CreateWindowExW()
-Funktion zum Erstellen des Steuerelements verwendet, sondern ein Dialogfeld, das eigentlich das Hauptanwendungsfenster ist.
1 - Irgendwelche Hinweise, wie man ein ListBox
Steuerelement zum Hauptfenster im Code hinzufügt?
Ich dachte über die Erstellung der WM_CREATE Nachricht.
2 - Ist das eine gute Idee?
3 - Was ist die beste Vorgehensweise in diesem Szenario?
diese Art von Code zu schreiben, ist nie eine gute Idee, es gibt viele ausgezeichnete Klassenbibliotheken zur Verfügung, die nehmen die Langeweile und die Fehler daraus. Es ist in Ordnung, wenn Sie die Assemblersprache von Win32 lernen möchten. Keine sehr zwingende SO Frage. –
Ich plane nicht, ein vollständiges Unternehmenssystem mit Win32 zu schreiben. Ich liebe C und wollte immer mehr über die Win32 wissen. Zu Beginn meines Programmierstudiums waren die Win32s zu komplex, um sie zu lernen. Heute verstehe ich die Konzepte, die hinter mir liegen, vollständig, so dass ich leichter lernen kann. Da das .NET Framework auf den Win32s basiert, möchte ich mehr darüber erfahren. –