Nero23
2014-01-12 20:11:46 UTC
Sistema operativo Windows 8 a 64 Bit Linguaggio di programmazione C/C++.
Con Codeblocks non riesco a visualizzare una finestra con le api di
windows se queste sono realizzate utilizzando il file .RC (in poche
parole, i Dialod boxes).
Lo stesso codice funziona su un sistema a 32 bit (provato su Windows 7 a
32 Bit)
Il compilatore visualizza questo messaggio:
-----------------------------------
Skipping file (no compiler program set): resource.rc
g++.exe -o bin\Debug\Test.exe obj\Debug\main.o -lgdi32 -luser32
-lkernel32 -lcomctl32 -mwindows
Output file is bin\Debug\Test.exe with size 54.51 KB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
----------------------------------------------
Nessun problema se creo la finestra utilizzando la classica funzione
CreateWindowEx...
Sapete darmi una dritta?
Grazie
nero23
Riporto il codice....
// FILE main.c
#include <windows.h>
#include "resource.h"
BOOL CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY: PostQuitMessage(0);
return TRUE;
case WM_CLOSE:
DestroyWindow (hwnd);
return TRUE;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *
cmdParam, int cmdShow)
{
HWND handle = 0;
handle = CreateDialog (hInst, MAKEINTRESOURCE (IDD_DIALOG1), 0,
(DLGPROC)DialogProc);
if (!handle)
{
MessageBox(NULL, "Dialog Box", "Errore!", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(handle, cmdShow);
UpdateWindow(handle);
MSG message;
while(GetMessage(&message, NULL, 0, 0) > 0)
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
// FILE resource.h
#define IDD_DIALOG1 101
#define IDC_BUTTON1 1007
#define IDC_BUTTON2 1008
#define IDC_BUTTON3 1009
// FILE resource.rc
#include "resource.h"
#include "afxres.h"
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 100, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
BEGIN
PUSHBUTTON "Pulsante 1",IDC_BUTTON1 ,10,10,40,20
PUSHBUTTON "Pulsante 2",IDC_BUTTON2 ,10,30,40,20
PUSHBUTTON "Pulsante 3",IDC_BUTTON3 ,10,50,40,20
END
Con Codeblocks non riesco a visualizzare una finestra con le api di
windows se queste sono realizzate utilizzando il file .RC (in poche
parole, i Dialod boxes).
Lo stesso codice funziona su un sistema a 32 bit (provato su Windows 7 a
32 Bit)
Il compilatore visualizza questo messaggio:
-----------------------------------
Skipping file (no compiler program set): resource.rc
g++.exe -o bin\Debug\Test.exe obj\Debug\main.o -lgdi32 -luser32
-lkernel32 -lcomctl32 -mwindows
Output file is bin\Debug\Test.exe with size 54.51 KB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
----------------------------------------------
Nessun problema se creo la finestra utilizzando la classica funzione
CreateWindowEx...
Sapete darmi una dritta?
Grazie
nero23
Riporto il codice....
// FILE main.c
#include <windows.h>
#include "resource.h"
BOOL CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY: PostQuitMessage(0);
return TRUE;
case WM_CLOSE:
DestroyWindow (hwnd);
return TRUE;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *
cmdParam, int cmdShow)
{
HWND handle = 0;
handle = CreateDialog (hInst, MAKEINTRESOURCE (IDD_DIALOG1), 0,
(DLGPROC)DialogProc);
if (!handle)
{
MessageBox(NULL, "Dialog Box", "Errore!", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(handle, cmdShow);
UpdateWindow(handle);
MSG message;
while(GetMessage(&message, NULL, 0, 0) > 0)
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
// FILE resource.h
#define IDD_DIALOG1 101
#define IDC_BUTTON1 1007
#define IDC_BUTTON2 1008
#define IDC_BUTTON3 1009
// FILE resource.rc
#include "resource.h"
#include "afxres.h"
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 100, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
BEGIN
PUSHBUTTON "Pulsante 1",IDC_BUTTON1 ,10,10,40,20
PUSHBUTTON "Pulsante 2",IDC_BUTTON2 ,10,30,40,20
PUSHBUTTON "Pulsante 3",IDC_BUTTON3 ,10,50,40,20
END