Neonof
Mitglied
Hallo,
folgendes Problem:
Ich versuche mittels der Windows-API eine GUI für meine Anwendung zu schreiben und möchte ein Tab-Control erstellen. Damit die Fensterklasse WC_TABCONTROL bekannt ist, verwende ich wie üblich InitCommonControls().
Beim Kompilieren gibt es nun die Meldungen:
warnung: "implicit declaration of function 'InitCommonControls'"
error: "undefined reference to `InitCommonControls'
(detaillierter Errorlog im Anhang)
Die Funktion ist also nicht bekannt.
windows.h ist natürlich eingebunden.
Hier die verwendete Software:
IDE: CodeLite 10.0.6
Compiler: MinGW(TDM-GCC-64)
System: Windows 10 Pro
Meine Projekteinstellungen:
Screenshots
Mein Code:
Der Code richtet sich nach dem Beispiel aus der Win32 Programmer's Reference -> Creating a Tab Control
setze ich, weil es in einem Tutorial mal hieß, das gewähre bessere Typsicherheit. Es spielt hierfür keine Rolle. Der Fehler tritt mit und ohne auf.
Ich habe auch versucht, selbigen Code einmal mit Pelles zu kompilieren. Dort tritt der gleiche Fehler auf.
ComFreek hatte mal ein ähnliches Problem, nutzte jedoch andere Software, weshalb ich mit seiner Lösung nicht direkt etwas anfangen kann:
Weiß einer eine Lösung?
Danke schon einmal für Hilfe!
Gruß,
Neonof
folgendes Problem:
Ich versuche mittels der Windows-API eine GUI für meine Anwendung zu schreiben und möchte ein Tab-Control erstellen. Damit die Fensterklasse WC_TABCONTROL bekannt ist, verwende ich wie üblich InitCommonControls().
Beim Kompilieren gibt es nun die Meldungen:
warnung: "implicit declaration of function 'InitCommonControls'"
error: "undefined reference to `InitCommonControls'
(detaillierter Errorlog im Anhang)
Die Funktion ist also nicht bekannt.
windows.h ist natürlich eingebunden.
Hier die verwendete Software:
IDE: CodeLite 10.0.6
Compiler: MinGW(TDM-GCC-64)
System: Windows 10 Pro
Meine Projekteinstellungen:
Screenshots
Mein Code:
C:
#define STRICT
#include <windows.h>
//#include <stdio.h>
//#include <stdlib.h>
HINSTANCE app_hInstance = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
static RECT rcClient;
static HWND hwndCtrlTab1;
// static TC_ITEM tie;
GetClientRect(hWnd, &rcClient);
InitCommonControls();
hwndCtrlTab1 = CreateWindow(WC_TABCONTROL, "", WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE, 0, 0, rcClient.right, rcClient.bottom, hWnd, NULL, app_hInstance, NULL);
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
}
const char szAppName[] = "AnagramTools";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wc;
app_hInstance = hInstance;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_CROSS);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
if (!RegisterClass(&wc))
{
MessageBox(NULL, "Fensterregistrierung fehlgeschlagen!", "Fehler!", MB_ICONERROR | MB_OK);
return 0;
}
if (!(hWnd = CreateWindow(szAppName, szAppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL)))
{
MessageBox(NULL, "Fenstererstellung fehlgeschlagen!", "Fehler!", MB_ICONERROR | MB_OK);
return 0;
}
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
Der Code richtet sich nach dem Beispiel aus der Win32 Programmer's Reference -> Creating a Tab Control
C:
#define STRICT
Ich habe auch versucht, selbigen Code einmal mit Pelles zu kompilieren. Dort tritt der gleiche Fehler auf.
ComFreek hatte mal ein ähnliches Problem, nutzte jedoch andere Software, weshalb ich mit seiner Lösung nicht direkt etwas anfangen kann:
Da ich mit Code::Blocks keine Erfahrung habe, sagt mir "SHARED=0" nicht sehr viel. Falls das ein Argument innerhalb eines Makefiles ist, kann ich damit ebenfalls nichts anfangen, da ich keines nutze. Allerdings lässt mich seine Lösung vermuten, dass ich ein entsprechendes Flag setzen oder ein Makro definieren muss, ehe ich die windows.h einbinde.Ich habe es gerade geschafft Ich hatte wxWidgets mit "SHARED=0" kompiliert, aber dann bei den Einstellungen in Code::Blocks "DLL" angegeben!
(Ich habe 1,5 Wochen daran gesessen!)
Weiß einer eine Lösung?
Danke schon einmal für Hilfe!
Gruß,
Neonof
Anhänge
Zuletzt bearbeitet: