|
I need to check weather Dot net 4.6 in installed on machine or not. So I checked registry entry (
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full ) for windows 10.
But I need to check for Win7 and Win8 as well. Is the registry entry same for all win7, win8 and window10.
|
|
|
|
|
It's present on my Win 7 machine.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Why not just trying running a test API? Or are you going to install it if it isn't there?
|
|
|
|
|
|
This question is for anyone using the CADODatabase classes in codeproject.com:
I'm trying to pass a currency amount to a SQL command and keep getting an exception about not declaring scalar variable @Amount. Any ideas about what is wrong?
CADORecordset *pRecSet=new CADORecordset(pDB);
// search for amount $28050.65
CADOCommand *pCmd=new CADOCommand(pDB, "select itemid from item where amount=@Amount", CADOCommand::typeCmdText);
COleCurrency currency;
currency.m_cur.int64=280506500;
_variant_t vtValue;
vtValue.vt=VT_CY;
vtValue.cyVal=currency.m_cur;
pCmd->AddParameter("@Amount", CADORecordset::typeCurrency, CADOParameter::paramInput, 8, vtValue, 0, 0);
if(pRecSet->Execute(pCmd)) {
// exception gets thrown by Execute(pCmd)
}
pRecSet->Close();
delete pCmd;
delete pRecSet;
|
|
|
|
|
I presume you are referring to A set of ADO classes - version 2.20[^]. In which case you should post your question to the article forum. Although it appears the author is no longer active here.
|
|
|
|
|
That's why I asked here, sorry if it wasn't the appropriate place. I was hoping someone was actually using the code and could point me in the right direction.
|
|
|
|
|
You may be lucky, but it still requires someone who really understands the code. From my quick look at the article it would take some considerable time to reach that stage. Do you really need this code, or is there an alternative way of solving your problem?
|
|
|
|
|
The code should work, every example I've seen on the internet with ADO is making identical COM calls. I was hoping there was a trick (it's Microsoft after all) to making it work.
|
|
|
|
|
I think I may have stumbled onto the answer. Seems ADO may not be able to handle parameterized SQL statements since I can pass currency values to a stored procedure call.
Thank you for your time in replying to question. Please close the question.
|
|
|
|
|
Maybe someone will be able to help me with this quite complex problem.
First of all I have control initialization function which requires callback
typedef int (*callback_fnc)(HWND, int, ...);
my_init_control(HWND hwnd, callback_fnc cb, int flags);
I have few classes:
Class A
{
public:
...
private:
int var1;
}
Class B: public A
{
public:
...
void init();
int proc(HWND hwnd, int msg, ...);
...
private:
int var2;
}
I need to init control and I need to use class B function proc as callback function. Tried to use it that way but it does not work that way.
void B::init()
{
my_init_control(itemHwnd, B::proc, 0);
}
Also I have tried that way
my_init_control(itemHwnd, boost::bind(&B::proc, this), 0);
but it does not work either. Tried to google but cannot find samples close to my case.
So question is what should I need to do in order to use function
B::proc() as callback in
B::init() .
modified 14-Mar-19 10:37am.
|
|
|
|
|
NoviceEx wrote: but it does not work either. Exactly what does that mean? Does it compile, does it get called in your code but fail in some way, does it not get called, are some of the parameters not passed correctly ... ? It would help if you showed the actual code that is supposed to work (and please use <pre> tags round it so it is readable) and explained where any failure happens.
|
|
|
|
|
I need to use class member function as callback, because "callback" has to have access to some variables of the class in order to operate.
|
|
|
|
|
Yes, we already know that; please edit your question and make clear what the actual problem is with your code.
|
|
|
|
|
As far as I know, you cannot do that. That is you cannot pass the result of bind on a class member function as a C-style callback. If you cannot change the prototype of my_init_control then you have to use a workaround (e.g. write the callback as a standard function).
|
|
|
|
|
Try this, noting that Class (with capital C) is incorrect, it should be class . Also that B::proc needs to be static.
#include <stdlib.h>
#include <stdio.h>
typedef int (*callback_fnc)(int);
void my_init_control(callback_fnc cb, int flags)
{
cb(flags);
}
class B
{
public:
void init()
{
my_init_control(&B::proc, 0);
}
static int proc(int msg) {
printf("This is message number %d\n", msg);
return 0;
}
};
int main(
)
{
B bobj;
bobj.init();
return 0;
}
|
|
|
|
|
I cannot modify "my_init_control()"
Maybe someone knows how can it be done using boost::bind ?
|
|
|
|
|
|
|
I think the OP cannot. Consider the following piece of code.
#include <iostream>
#include <functional>
using namespace std;
typedef void (*Callback)(int );
void invoke( Callback cb) { cb(5); }
void foo(int i) { cout << (i*2) << "\n";}
int main()
{
foo(3);
invoke(foo);
auto bf = std::bind(foo, placeholders::_1);
bf(7);
std::bind(foo, 9)();
invoke( std::bind(foo, placeholders::_1)); }
The last call is not allowed due to type mismatch between the bind return value and the C -like callback (I believe you might try similar code with boost ).
|
|
|
|
|
Thanks for that; I looked at the boost documentation and it sort of implied that it could be done. But as I am new to this I probably misunderstood.
|
|
|
|
|
boost::bind returns a function object, not a C function. It may behave like a function pointer, but these types are different, and the compiler won't be able to match the function argument list with a function object as the second argument.
The problem you describe cannot be solved with the limitations you've set. Clearly, part of the limitations are of your own making and need to be revised. To understand that, you just need to think about the flow of control:
1. from your code you set up a callback mechanism that is supposed to call your callback function
2. then you call a function outside of your code
3. At some point this outside function calls your callback function, passing along some data
4. Your callback function is called. the only data it has are the function arguments it got passed from it's calling function. At this point it is entirely out of context from the rest of your application and doesn't know about any of your B objects that you may have created. If the calling function doesn't know about Bs, then the callback function cannot know about them either.
It is impossible to process anything dependend on some B member variables in the callback function, unless you pass these variables all the way from step 1 through step 4! Unfortunately the code in step 3 is outside your control - therefore this is impossible. Or it wouldbe impossible if you insist on passing along a reference to some B object: the caller doesn't know about that class!
There are only two solutions that may work:
1. the library you are using lets you pass along additional data to the callback setup which then will be passed to the callback invocation. If so, you could just pass along the values of var1 and var2.
2. If the above isn't possible, the only alternative I see is to use global variables to store the state of B or just its member variables.
Of course. the premise that your callback absolutely needs to know your B object may have been wrong! Time to think about how you intended to use this callback mechanism!
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
Hello, I am using Win32++ and I would like to know how to prevent a CDialog window from closing the main frame (CMainFrame). I have overriden OnOK() and OnClose() and added nothing to these functions.
R.S.V.P
|
|
|
|
|
Member 13721875 wrote: I am using Win32++ What is Win32++? Also, we cannot guess what your code is doing, you need to provide more information.
|
|
|
|
|