|
Hi, I have written a code in C++ which works on the "POINT" user defined type i.e. POINT = (x,y).
I am giving input in int form, it is converting it into point might be using "template<int p="">". I am retrieving these point from another function which is a header file of mine.
Now the problem is, I am calling this function in NS-3 software/program, I am unable to convert this point form into integer.
* Can i return more than one value from a function, because point has two values i.e. X and Y.
Please help me out.
|
|
|
|
|
Assuming you mean the POINT structure[^], you could pass it back by pointer, or pass in a pointer or reference that the called function fills in.
Use the best guess
|
|
|
|
|
Here is my some part of my code....
int my_encrypt()
{
typedef EllipticCurve<263> ec_t;
ec_t myEllipticCurve(1,1);
ec_t::Point P = myEllipticCurve[2];
cout << "some point P = " << P << ", 2P = " << (P+P) << "\n";
int a = irand(1,myEllipticCurve.Degree()-1);
ec_t::Point Pa = a*G; // public key
cout << "Alice' public key Pa = " << a << "*" << G << " = " << Pa << endl;
ec_t::Point Pk = a*Pb;
ec_t::ffe_t c1( m1*Pk.x() );
ec_t::ffe_t c2( m2*Pk.y() );
I need to return these three values (Pa, C1, C2) into my main function.
|
|
|
|
|
Sorry, but you lost me at typedef EllipticCurve<263> ec_t; .
Use the best guess
|
|
|
|
|
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
|
|
|
|
|