Hi, i'm trying to program a fs2004 module,
this is the main file:
#include
#include "module.h"
#include "resource.h"
BOOL APIENTRY InfoDlgProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE hinst;
HWND g_hToolbar = NULL;
/*
* We define just basic interface to the flight simulator so it will be
* able to load the module.
*/
DLLEXPORT MODULE_IMPORT ImportTable = {
{0x00000000, NULL},
{0x00000000, NULL}
};
void FSAPI module_init(void) {}
void FSAPI module_deinit(void) {}
DLLEXPORT MODULE_LINKAGE Linkage = {
0x00000000,
module_init,
module_deinit,
0,
0,
0x0900, // FS2004 version (use 0x0800 for FS2002)
NULL
};
// The standard window procedure used by the flight simulator
WNDPROC oldWndProc;
// Flight simulator main window handle
HWND hFSimWindow;
#define MENU_ENTRY "&FSSerial"
#define ID_MY_MENUITEM 40002
/**
* Main window procedure that is called by the flight simulator to process
* incoming window messages.
*/
LRESULT CALLBACK FSimWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg) {
case WM_NCPAINT:
{
HMENU hMenu, hMyMenu;
hMenu = GetMenu(hwnd);
if (hMenu != NULL) {
int i;
// Look for our menu entry in the main menu.
for (i = 0; i < GetMenuItemCount(hMenu); i++) {
char buf[128];
GetMenuString(hMenu, i, buf, 128, MF_BYPOSITION);
if (strcmp(buf, MENU_ENTRY) == 0) {
// It is already here, we do not need to add it again
break;
}
}
if (i < GetMenuItemCount(hMenu)) {
// It is already here, we do not need to add it again
break;
}
/* Create new menu. NOTE: It seems that this will be
* reached more times, so we cannot save the handle, because
* in such case it could be destroyed and we will not have
* any access to it in the simulator.
*/
hMyMenu = CreateMenu();
AppendMenu(hMyMenu, MF_STRING | MF_ENABLED, ID_MY_MENUITEM, "Info");
// add the created menu to the main menu
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hMyMenu, MENU_ENTRY);
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_INFO) , hFSimWindow, (DLGPROC)InfoDlgProc);
}
}
break;
case WM_COMMAND:
if (LOWORD(wParam) == ID_MY_MENUITEM) {
// This is my code
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_INFO) , hwnd, (DLGPROC)InfoDlgProc);
MessageBox(hwnd, "Ancora in costruzione!", "FSSerial - by Mirko Siciliano", MB_OK | MB_ICONEXCLAMATION);
return 0;
}
break;
}
// Call the original window procedure to handle all other messages
return CallWindowProc(oldWndProc, hwnd, uMsg, wParam, lParam);
}
BOOL APIENTRY InfoDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg,0);
return TRUE;
}
break;
default:
return FALSE;
}
return TRUE;
}
/**
* Entry point of the DLL.
*/
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
hFSimWindow = FindWindow("FS98MAIN", NULL);
oldWndProc = (WNDPROC)SetWindowLong(hFSimWindow, GWL_WNDPROC, (LONG)FSimWindowProc);
break;
}
return TRUE;
}
I need to show a dialog included into the resources but compiling this code it only dispalys my menu into Flight Simulator and when i click on the "Info" sub menu it shows only the messagebox.
COULD ANYONE HELP ME???? PLEASE..............................
Thanks
P.S. I'm sorry for my english! i'm italian