|
Hello Joao Paulo,
I have another newby question.
I was able to create a context menu (cut/copy/paste/undo) with your help. But now, I do not know how to get a pointer to the text which I selected in the edit control so that I can use the CEdit::Cut,Copy,... methods. Can you help me to understand this?
Thanks and Best Regards,
Dave Schneider
|
|
|
|
|
Hi Dave,
To get the selected portion of the text, you use the EM_GETSEL message or, if using MFC, CEdit::GetSel . These will return indexes to the starting and ending characters of the selected substring. To retrieve the full string, use GetWindowText .
Regards,
João Paulo
|
|
|
|
|
just getting into ppc2k2 development and wanting to get basic console support for debugging in both the emulator and the actual device...i'm using evc++ 3.0 on win2k machine...any suggestions or links?
thanks...
|
|
|
|
|
There is no console support in PPC2K2. If you want to print tracing messages, use the TRACE macro in you application, an monitor these on eVC's debug window during debugging.
Regards,
João Paulo
|
|
|
|
|
thanks for the info. unfortunately i don't use mfc so the macro won't help me.
since printf is supported via coredll.lib, i thought i'd read somewhere of folks creating a console driver and putting it in the windows directory of the ppc for quick-n-dirty debugging.
i'll play with console redirects to a file via the undocumented SetStdioPathW() function from coredll.lib to see easy logging to a file is.
any other ideas would be appreciated....thanks
|
|
|
|
|
How do I add a custom-drawn Rectangle object to a CDialog that already exists?
|
|
|
|
|
Can you please be a little bit more specific?
Regards,
João Paulo
|
|
|
|
|
I am creating a Dialog based application for a PocketPC(using eMbedded VC++).I am getting a few integer inputs from the first dialog box(say length and width of a rectangle).I have to use these values to draw a rectangle onto the next Dialog Box.On the second Dialog,the user will click(anywhere on the screen),and I need to find out the location and time of the click.My problems are:
1.I am able to pass the values to the second dialog,but I dont know how to add the rectangle to the Dialog.(tried using CDC pointers but that gave me an x0000005 error).
2.How do I find where on the screen a user clicked?
3.How do I find the time when the user clicked(millisecond resolution)?
Thanks!
|
|
|
|
|
ruks_ns wrote:
1.I am able to pass the values to the second dialog,but I dont know how to add the rectangle to the Dialog.(tried using CDC pointers but that gave me an x0000005 error).
Use CDialog::OnPaint (WM_PAINT ) to draw the rectangle.
ruks_ns wrote:
2.How do I find where on the screen a user clicked?
Use OnLButtonDown (WM_LBUTTONDOWN ). One of its parameters is a CPoint containing the position of the click.
ruks_ns wrote:
3.How do I find the time when the user clicked(millisecond resolution)?
Try GetSystemTime() . You can also use GetCurrentMessage() to retrieve a pointer to a MSG structure, where you will find a time member. MSDN says:
"The time member is the number of milliseconds since a cold or warm boot on a device. It is the value returned by the GetTickCount function. Not included is the time that a device is in suspend mode."
Regards,
João Paulo
|
|
|
|
|
When I do CDialog::OnPaint(WM_PAINT),it says OnPaint function does not take 1 parameters!What do I do now?
Thanks!
|
|
|
|
|
I'm sorry... I did not write this in a proper way. What I meant is that the OnPaint handler handles the WM_PAINT message. In fact, it does not have a parameter. The class wizard will have generated a dc variable declaration for you. This is how you should draw the rectangle.
Regards,
João Paulo
|
|
|
|
|
Well it doesnt work now either!Let me explain better:
I have a DoModal method that I call to display the new CDialog.In this method,here's my code:
int CDexterDlg::DoModal(const int &refcUserInput)
{
m_UserInputDialogOne = refcUserInput;
CRect rect(0, 0, m_UserInputDialogOne, 50);
ASSERT(rect.Width() == 100);
ASSERT(rect.Height() == 50);
OnPaint();
return CDialog::DoModal();
}
But still my rectangle does not show up on the new Dialog box.Please help!
Thanks!!
|
|
|
|
|
OnPaint is called for you by the framework. You cannot call it explicitly as in your code. Your code should look like:
void CDexterDlg::OnPaint()
{
CPaintDC dc(this);
dc.Rectangle(x1, y1, x2, y2);
}
Replace the variables with your coordinates, and the rectangle will show up.
Regards,
João Paulo
|
|
|
|
|
Well,the rectangle still doesnt show up.I need to access a variable from the first Dialog box that is available in the DoModal method.My code now looks like:
int CDexterDlg::DoModal(const int &refcUserInput)
{
// Initialization
m_UserInputDialogOne = refcUserInput;
return CDialog::DoModal();
}
void CDexterDlg::OnPaint()
{
CPaintDC dc(this);
dc.Rectangle(0, 0, 100, 50);
}
The variable m_UserInputDialogOne needs to be a dimension in the rectangle.Also,why isnt the rectangle with the numbers(constants) as paremters not showing up(ie as it is now in the code shown above)??!
Thank you very much!
|
|
|
|
|
Make sure the rectangle you are drawing is not covered by other controls.
Regards,
João Paulo
|
|
|
|
|
Hello,
Another little question about Access database. I want to update the database of my PocketPC everytime I connect it to the PC.
So, for that I need to copy the database from my computer (wich is up to date) to my PocketPC. But I don't need all the tables within the database (just one).
How can I do such a thing ?? Are the files automatically transformed ??
Any idea is welcome !
|
|
|
|
|
Use ActiveSync for that purpose. The setup will ask you what tables you want to synchronize.
Regards,
João Paulo
|
|
|
|
|
Hi, yes I know but I need this to be done by code (this must be automatic and the client cannot acces that).
|
|
|
|
|
|
Really great !!
Exactly what I was looking for !
It seems that I'll never find an end to your knowledge
|
|
|
|
|
noob question (tools: eVC++ w/ppc2k2 sdk)...
if header files are #include'd but the functions from their corresponding libraries never called, does the final compiled file include the unused functions thereby increasing file size?
fyi, the issue i'm trying to better understand is whether i #include windows.h or a subset.
tia..
|
|
|
|
|
Most of the functions declared in these #includes are implemented in DLLs. System DLLs are in ROM, so this is irrelevant for the final size of your application.
Regards,
João Paulo
|
|
|
|
|
thanks and it makes sense for functions implemented in DLLs.
two followup ?'s:
1) what about the case where the unused functions are implemented in static libraries? are these unused fcn's compiled in even if they're not called?
2) is there a straightforward way when looking at the wince header files to determine if the api is implemented in a DLL or a static library?
thanks!
|
|
|
|
|
rodent¹ wrote:
1) what about the case where the unused functions are implemented in static libraries? are these unused fcn's compiled in even if they're not called?
Depends on your linker, but the general answer is yes.
rodent¹ wrote:
2) is there a straightforward way when looking at the wince header files to determine if the api is implemented in a DLL or a static library?
Unfortunately, no.
Regards,
João Paulo
|
|
|
|
|
For #1:
The linker supplied with eVC will remove unused packages (called COMDATs in the documentation) if the /OPT:REF switch is turned on. This is turned on by default, unless the /DEBUG switch is enabled, in which case it's turned off.
To force the linker to remove unreferenced functions, the compiler must be instructed to package each function in its own COMDAT. You do this by specifying the /Gy option to the compiler (called 'Enable function-level linking' in the 'Customize' category of the Project Settings dialog).
If this option is not enabled, the linker can only include or exclude individual object files. A static library basically consists of multiple object files with a header describing what's in it.
From memory, Microsoft's static libraries are compiled with this option enabled.
|
|
|
|