473,839 Members | 1,414 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

CALLBACK procedure (invalid calling convention '__stdcall ' for function compiled with /clr:pure or /clr:safe)


I try to figure out how to use Callback procedure in a C++ form

The following code *work* perfectly on a console project

#include "Windows.h"
BOOL CALLBACK MyEnumWindowsPr oc(HWND hwnd, LPARAM lparam)
// blablabla we dont care for now
return (TRUE);
int main()
EnumWindows((WN DENUMPROC) MyEnumWindowsPr oc,0);

But in the C++ form project it return the following error :

Error C3641: 'MyEnumWindowsP roc' : invalid calling convention
'__stdcall ' for function compiled with /clr:pure or /clr:safe

I already read a lot of post on the subject but still trying to find
an answer...



Sep 16 '07
10 7006
On Sep 25, 2:47 pm, "Ben Voigt [C++ MVP]" <r...@nospam.no spamwrote:
I'm still trying to make the enumwindows works and being able to
display the results of enumWindows in my form (this->listBox2->Items-
using namespace System::Runtime ::InteropServic es;
BOOL CALLBACK MyEnumWindowsPr oc(HWND hwnd, LPARAM lparam)
//GCHandle MyThis = GCHandle::FromI ntPtr(lparam); //** not
working since LPARAM is not a IntPtr

There's a converting constructor, try GCHandle::FromI ntPtr(IntPtr(lp aram))
or else GCHandle::FromI ntPtr(IntPtr((v oid*)lparam))
//Form MyForm= gcnew System::Windows ::Forms::; // ** Dont know
how to define a new "this" instance (my form)
// GCHandle gch = GCHandle.FromIn tPtr(param);
// TextWriter tw = (TextWriter)gch .Target;
// tw.WriteLine(ha ndle);
return (TRUE);
// ....
GCHandle gch = GCHandle::Alloc (this);
// *** NOT WORKING :
EnumWindows(MyE numWindowsProc, GCHandle::ToInt Ptr(gch)); //** not
working since LPARAM is not a IntPtr

use GCHandle::ToInt Ptr(gch).ToPoin ter()
EnumWindows(MyE numWindowsProc, 0);
// ....
I need help to understand how to change the lparam param to a IntPtr
without having compiling errors like :
[error C4439: 'AutomationWinF orm::MyEnumWind owsProc' : function
definition with a managed type in the signature must have a __clrcall
calling convention]
when i change my the last param of my callback like this : BOOL
CALLBACK MyEnumWindowsPr oc(HWND hwnd, IntPtr lparam)
[error C2664: 'EnumWindows' : cannot convert parameter 1 from 'BOOL
(__stdcall *)(HWND,System: :IntPtr)' to 'WNDENUMPROC' ]
when I change the call to enumWindows like this
EnumWindows(MyE numWindowsProc, GCHandle::ToInt Ptr(gch));
Also it still not clear how to define a new instance of my form
(this) :
Really need help!...thanks!- Hide quoted text -

- Show quoted text -
Thanks for still trying to help me!....
BOOL CALLBACK MyEnumWindowsPr oc(HWND hwnd, LPARAM lparam)
GCHandle MyThis = GCHandle::FromI ntPtr(IntPtr(lp aram)) ;
// ** missing code here to be able to access to my form **//
MyThis->Label1->Text="blabla ";
return (TRUE);
// ....

GCHandle gch = GCHandle::Alloc (this);
EnumWindows(MyE numWindowsProc, GCHandle::ToInt Ptr(gch).ToPoin ter()); //
** Error **//

This code return the error Error C2664: 'EnumWindows' : cannot convert
parameter 2 from 'void *' to 'LPARAM'

instead of printing "blabla" in the label1 of my form each time the
callback proc is called for each windows.

I have no clues about how to recreate a usable form "instance" in my
callback procedure... The following code in the proc is to output to
the console but how to work with a form instead ???
GCHandle gch = GCHandle.FromIn tPtr(lparam);
TextWriter tw = (TextWriter)gch .Target;
tw.WriteLine(ha ndle);


Sep 30 '07 #11

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

by: Gustavo L. Fabro | last post by:
Greetings! Some classes that once compiled without problems on VS 2003 have now problems on VS 2005 Beta 1. I'm talking about a __nogc class that is exported with __declspec(dllexport). The compiler message is this: VCSelectLibraryForm.cpp ...\Forms\QiForm.h(48) : error C3395: 'TQiForm::GetDotNetMouseButton' :
by: Herby | last post by:
Hi, I am currently reviewing what is required to convert a current MFC, COM server application into a .NET application. The objective is to compile ultimately to clr/safe. So we are seeking a clear migration path for C++\MFC\COM to .NET. We have now chosen to select C++\CLI. We then need to remove the MFC classes such as CString CArray CMap etc
by: Gary Nastrasio | last post by:
If I compile with /clr:safe, which is exactly meant by saying I can't use "Native Types" in my code? Is a native type something such as float, short, or int? Thanks, Gary
by: =?Utf-8?B?d3BjbWFtZQ==?= | last post by:
I have a small C++/CLI application which calls an unmanaged lib. It seems like I can't use /clr:pure and link with the unmanaged lib (LNK1313 error). The problem I have is that compiling with /clr adds a dependency on several msvc*.dll:s which adds some unwanted complexity to the installation. Is it possible to avoid the msvc*.dll dependency without explicit p/invoke?
by: ajk | last post by:
Hi I am doing a C++/CLI dll that is supposed to be fully managed code. I was wondering what exactly is the criteria for the DLL to be 100% fully managed and usuable from C#? Do I need to compile using / clr:safe or is /clr enough? The reason I need to know this is that I would like to use pin_ptr<> for some type conversions i.e. bytes to say decimal but /clr:safe doesn't allow me to do much with that pointer.
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.