Jump to content
The simFlight Network Forums

bfalcao

Members
  • Posts

    12
  • Joined

  • Last visited

Everything posted by bfalcao

  1. Also, posted the coding snapshots: On the last one you see the Project Properties:
  2. Hi, First of all thank you for you help. Pete the code was not 100% that one. It's injected on a C++ project so you might see some things that only appear on this project. Beatle, unfortunately it didnt work. Also, I made a debug and I saw that the FS enters inside the "DLLMain" but somehow it just does that. It doesnt call the FSimWindowProc function. About the Native C++ code and not managed, this is the command arguments that Visual C++ is generating: /Od /GL /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "TESTE27_EXPORTS" /D "_WINDLL" /FD /EHsc /MTd /GS /Yu"stdafx.h" /Fp"Debug/teste27.pch" /Fo"Debug/" /Fd"Debug/vc70.pdb" /FR"Debug/" /W3 /nologo /c /Wp64 /Zi /TP Also, the option "Use Managed Extensions" is "OFF". Is this correct ? (Thank you)
  3. Hi, I dismissed the C# for now and I am trying to create the module using C++. The problem is that when I do a C project, everything runs fine. But when I try to change it to C++ project, the DLL compiles, but in the flight simulator is doesnt show the menu bar any more :( .. I am using the normal example that everybody knows :) : /* Replace "dll.h" with the name of your header */ #include "dll.h" #include #include "module.h" DllClass::DllClass() { } DllClass::~DllClass () { } /* * 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 "My Mo&dule" #define ID_MY_MENUITEM 40001 /** * 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, "My &First Menu Entry"); // add the created menu to the main menu AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hMyMenu, MENU_ENTRY); } } break; case WM_COMMAND: if (LOWORD(wParam) == ID_MY_MENUITEM) { // Add your code here HINSTANCE aux = NULL; MessageBox(hwnd, "ola", "HURA", 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 DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: hFSimWindow = FindWindow("FS98MAIN", NULL); oldWndProc = (WNDPROC)SetWindowLong(hFSimWindow, GWL_WNDPROC, (LONG)FSimWindowProc); break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } /* Returns TRUE on success, FALSE on failure */ return TRUE; } Please can you see what I am doing wrong ? Thank you !! ..
  4. Hi, I made some progresses in the C example, but I have a doubt. 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; } Does anyone knows how to refer the entry point on the C# DLL based on that code ? Regards,
  5. Indeed they are but the example to create a new module (and show a popup window) is made in C. Also, I saw a post here about someone who developped in Delphi. But I want to do it in C#Can anyone help me ? Thanks in advance.
  6. Hi there, I am investigating how to create a new FS2004 module using C#. Does anyone can help me and show me /link me an example ? Thank you. Regards, Bruno Falcão
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.