|
then change your function:
int my_encrypt(ec_t::Point * pPa, ec_t::ffe_t * pc1, ec_t::ffe_t * pc2 )
{
*pPa = Pa;
*pc1 = c1;
*pc2 = c2;
return 0;
}
You may as well use the approach suggested by Richard, that is embed Pa, c1, c2 into a struct and pass the pointer to such a struct to your function.
Veni, vidi, vici.
|
|
|
|
|
Hi.. i have used the structure to pass three different variable as shown below...
int main()
{
struct result t1;
t1 = my_encrypt();
cout << t1.pa << t1.c1 << t1.c2 <<;
}
struct result my_encrypt()
{
typedef EllipticCurve<263> ec_t;
struct result
{
ec_t::Point Pa;
ec_t::ffe_t c1;
ec_t::ffe_t c2;
}t;
ec_t::Point Pk = a*Pb;
ec_t::ffe_t t.c1( m1*Pk.x() );
ec_t::ffe_t t.c2( m2*Pk.y() );
return (t);
}
I am getting so many errors.. Please tell me anything wrong declaration here.
Can i declare that structure as global...
|
|
|
|
|
Quote: int main()
{
struct result t1;
t1 = my_encrypt(); Should be:
int main()
{
struct result t1 = {0};
my_encrypt(&t1);
Quote: struct result my_encrypt()
{ should be:
int my_encrypt(struct result * pt1)
{
Please note, there are other (unrelated) errors in your code.
Veni, vidi, vici.
|
|
|
|
|
I am trying to create a dialog MFC application that reads the cursor position anywhere on the screen, finds the colour of the pixel at that location and reports the information back to the dialog application.
I have tried SetCapture and I must be doing something wrong because the cursor location stops reporting as soon as the cursor leaves the client area of the dialog. I have also looked at the "Screen Color Picker" by Florin Vasilescu. That uses an OnTimer function that allows me to read the screen location, but does not report mouse actions (LBUTTONDOWN) so that I can read the pixel at the cursor location.
I have also tried using SetWindowsHookEx and defining the MouseProc (as described by Vesi in the CodeGuru article "Modal dialog and outside mouse control". That wasn't successful. If I use the WH_JOURNALRECORD hook ID as described there appears to be an indeterminate delay between any mouse (or keyboard) action and interaction with screen objects. If I use the WH_MOUSE no mouse actions are detected.
Could someone help me with how to either properly set SetCapture() or point me to where I might discover how to read mouse actions outside the dialog box? I'm happy to supply code, but at this point it's a bit of a mess since I've been trying everything.
Thanks for any help you may be able to provide. Much appreciated.
|
|
|
|
|
rbrunton wrote: I am trying to create a dialog MFC application that reads the cursor position anywhere on the screen, finds the colour of the pixel at that location and reports the information back to the dialog application. This sounds like Pixie. I've used it a few times, and it does what I needed it to do.
"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
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Thanks David,
I'll check it out as a tool, but I'm really looking to find out how to accomplish the task; essentially a programming learning experience.
|
|
|
|
|
PS - Pixie doesn't seem to address the key problem. Instead of using a left-mouse click to grab the colour at the particular location, pixie require keyboard shortcuts - Ctrl+Alt+c to copy HTML, Ctrl_Alt_X for to bring up the standard windows color dialog and Ctrl+Alt+Z to display a larger background of the color at the cursor. I would like to accomplish the selection with the left-mouse click as that seems a little more "natural" in a windows environment and then have the result in the main dialog screen of the application to manipulate it into various formats (HEX, RGB, HTML, etc.)
|
|
|
|
|
Take a look at windows hooks.
==============================
Nothing to say.
|
|
|
|
|
May be you just want to capture the mouse position, and you have no problem in finding the colour, then you can set a new Timer, then in the OnTimer function, you may try GetCursorPos() to retrieve the mouse's position.
If you want to capture other mouse's action like mouse click... then take a look at global hook, as described in this Mouse and KeyBoard Hooking utility with VC++[^]
|
|
|
|
|
I found if set TTF_TRACK flag to CTooltipCtrl, SetDelayTime doesn't work anymore, so the tooltip won't disappear automatically. I want to show the tooltip just below specified control, and expect it to disappear after a few seconds(the time can set with SetDelayTime). Anybody can help me?
Here is my steps to construct tool tip:1. Add member variable
CToolTipCtrl m_tooltip;
2. override PreTranslateMessage
BOOL CPF_GetSetNameDlg::PreTranslateMessage( MSG* pMsg )
{
switch (pMsg->message)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MBUTTONDOWN:
case WM_LBUTTONUP:
case WM_RBUTTONUP:
case WM_MBUTTONUP:
case WM_MOUSEMOVE:
m_tooltip.RelayEvent(pMsg);
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
3. OnInitialDialog
BOOL CPF_GetSetNameDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//tooltip
EnableToolTips();
m_tooltip.Create(this , WS_POPUP | TTS_NOPREFIX | TTS_BALLOON);
m_tooltip.SetDelayTime(TTDT_INITIAL, 0);
m_tooltip.SetDelayTime(TTDT_AUTOPOP, 30000);
m_tooltip.SetDelayTime(TTDT_RESHOW, 30000);
m_tooltip.AddTool(GetDlgItem(IDC_SETNAME), _T(""));
m_tooltip.SetMaxTipWidth(600);
}
4. Control to show tool tip
if(bShow)
{
m_tooltip.UpdateTipText(_T("Hello, money!"), pWnd);
CToolInfo sTinfo;
m_tooltip.GetToolInfo(sTinfo, pWnd);
sTinfo.uFlags = TTF_TRACK;
m_tooltip.SetToolInfo(&sTinfo);
CRect rect;
pWnd->GetWindowRect(rect);
m_tooltip.SendMessage(TTM_TRACKPOSITION, 0, (LPARAM)MAKELONG(rect.left, rect.bottom));
m_tooltip.SendMessage(TTM_TRACKACTIVATE, TRUE, (LPARAM)&sTinfo );
}
|
|
|
|
|
I have this code:
if(m_Bitmap.GetSafeHandle())
m_Bitmap.DeleteObject();
HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL, lpszPathName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if(NULL == hBitmap)
{
CString sMessage;
const DWORD dwError = ::GetLastError();
sMessage.Format(_T("Failed to load '%s' file. Reason: %s\n"), lpszPathName, GetErrorString(dwError));
AfxMessageBox(sMessage, NULL, MB_ICONERROR);
return FALSE;
}
m_Bitmap.Attach(hBitmap);
and work ok, but on the big bitmaps, I get:
Not enough server storage is available to process this command
ok, I read this one[^], and I modified the "IRPStackSize" value to 0x19 (25 decimal), not working ... hoe can I get rid of this error ?
modified 12-Jun-13 4:37am.
|
|
|
|
|
Is it really that error message and not the code 8 ERROR_NOT_ENOUGH_MEMORY message 'Not enough storage is available to process this command'?
You might google for 'loadimage ERROR_NOT_ENOUGH_MEMORY'. Reading some of the results, it seems that removing the LR_CREATEDIBSECTION flag might solve the problem. If you need a DIBSECTION bitmap and loading the image as DDB succeeds, you might try the CopyImage()[^] function afterwards to convert the loaded DDB.
|
|
|
|
|
I had removed LR_CREATEDIBSECTION flag from LoadImage function, and I had the same error ...
|
|
|
|
|
How big is your image? If you read some of the Google results, you will find that others had similar problems and solved it by using other methods to load images from files (e.g. the MFC CImage class that uses Gdiplus::Bitmap ). Check also if your image is valid by loading it with any painting program. Also check that the image is not RLE compressed.
|
|
|
|
|
I confes that the problem taking place at 750 MB bitmap file ... I agree, the picture is huge, but the Windows 7 netive viewer can open this bitmap ... Though, MSPaint (Paint windows native image editor) give the same result (even get the same error message), can not open this picture as well ...
modified 12-Jun-13 6:13am.
|
|
|
|
|
That is large; probably too large. There are system and OS depending limits for bitmaps (required memory and max. width and height). While loading the bitmap, twice the memory is required when it must be converted in some way.
It seems that the picture viewer uses some other method (e.g. allocating a buffer, reading the image line by line, converting each line to the pixel format used by the video card and finally copying the content from the buffer to the video memory).
|
|
|
|
|
Ok, you are very kind ! Kindly thank you for your interest !
|
|
|
|
|
Hello Friends
I am using SetupDigetRegistryProperty to access USB Devices.
So,regarding that I was trying to access Property SPDRP_LEGACYBUSTYPE which is described like this
Quote: SPDRP_LEGACYBUSTYPE
The function retrieves the device's legacy bus type as an INTERFACE_TYPE value (defined in Wdm.h and Ntddk.h).
I tried to get this value in char ,it returns some special character. I tried to catch in DWORD,it returns some number.
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 0;
SetupDiGetDeviceRegistryProperty(
hDevInfoSet,
&DeviceInfoData,
SPDRP_LEGACYBUSTYPE,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize)
Any Ideas?
Regards
Y
|
|
|
|
|
|
Thanks jochen for your Reply.
I tried ur way but it is not the value that I was looking For.
May be you can give more Ideas. here is what I want. When I right Click on USB Device from Device manager,it open up properties Dialog where we can select property and its value. Here, I found one property "bus relation" which I am trying to get using SetupDi calls.
Bus relation value is showing like this :
USBPRINT\CANONIP4200\6&19ACF&0&USB001
This is the device Instance Id.
But when I tried to get same using SetDiGetDeviceInstanceId,it gives me like
USB\VID_04A9&PID_10A2\C34BBD
How can I get USBPRINT\CANONIP4200\6&19ACF&0&USB001 ?
Regards
Y
|
|
|
|
|
|
Thanks A Lot jochen
I followed your post and get succeed in getting Bus Relation value[Device Id] which gives me Printer name.
Thank you Very Much Again.
Regards
Y
|
|
|
|
|
Nice to hear that you solved the problem and thank you for the feedback.
|
|
|
|
|
Hi,
I working on a plugin system for a MFC C++ application. So I started with a small plugin DLL with a simple function creating an object of a class with virtual functions and returning that object to the caller. The object is created on the heap and actually a pointer to the object is returned.
In the main application a function loads the plugin (LoadLibrary), searches the exported function (GetProcAddress) and executes the function. As result the created object is available, as expected. So far so good.
Btw: the class is already declared in a different DLL linked by both the main application and the plugin DLL.
Next I want to unload the plugin with FreeLibrary.
That leads to the problem of a corrupt vftable of the created object. I found out, that the __vfptr is in the memory of the plugin DLL and so unloading the DLL destroys that memory and the __vfptr is not usable anymore.
Is there any way to change that behaviour?
with kind regards,
Joerg
|
|
|
|
|
In a word: No. If the object is created from a DLL that was dynamically loaded, then you must not unload the library until all instances of the class have been deleted.
Use the best guess
|
|
|
|