|
GetScrollBarCtrl() is a CWnd overridable which allows replacement scrollbars to be used instead of the WS_HSCROLL and the WS_VSCROLL window styles which will be in use for the list control. If you need to read the values you should be able to use the scrollbar access function directly using the SB_HORZ and SB_VERT parameters depending on whether you need the horizontal or vertical scroll bar data.
e.g.
int hPos = m_ListCtrl.GetScrollPos(SB_HORZ);
Roger Allen - Sonork 100.10016
If your dead and reading this, then you have no life!
|
|
|
|
|
Hi CPians!
What is the right way for declaring a constant pointer on a constant unsigned char ?
const unsigned char table[]= ... ;
const unsigned char *ptable = table;
This is what I thought, but when I try to do something like :
typedef const struct
{
unsigned int ID;
unsigned char *IDAdr;
} IDstruct;
IDstruct table[] = { 21, table };
It brings me the error "line ## : not an adress constant" -> I understand that as my pointer not being declared as "constant", but only as a pointer on a constant... How should I do to get a constant pointer ?
Thanks a lot.
~RaGE();
|
|
|
|
|
You don't have the cdecl program on your system?
$ cdecl
Type `help' or `?' for help
cdecl> declare ptable as constant pointer to constant unsigned char
const unsigned char * const ptable
|
|
|
|
|
try this , this will make pointer of ur struct constant
typedef struct { unsigned int ID; unsigned char *IDAdr;} IDstruct,const LPIDstruct;
Abhishek Srivastava
Software Engg (VC++)
India ,Noida
Mobile no 9891492921
|
|
|
|
|
Thanks for your answer, unfortunately I am not allowed to modify this declaration (extern code).
~RaGE();
|
|
|
|
|
To declare a constant (unchanging) pointer to a constant (unchanging) unsigned char, you would use a call like:
const unsigned char* const ptrChar = &someCharVariable;
Remember that constants must always be defined upon declaration. This means that you can do
const int iNumber = 10;
but trying a
const int iNumber;
iNumber = 10;
will fail.
In a nutshell, placing a const after the pointer type (char* const... )means that the pointer is constant, so you cannot change the address it points to after declaration. Placing a const after the pointer name (const char* ...) means that you cannot modify the memory at the address where the pointer currently points. Placing both means that you can't modify either the address pointed to, or the contents of that address.
Hope this helps.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Hi all,
I want to implement the bezier curve in my program. Can any one say about whether any direct functions available for drawing the bezier curve using GDI. I
Prakash
|
|
|
|
|
There are Api's, using which one can draw bezier curves like
PolyBezier and PolyBezierTo
try these APIs available in MFC as well as SDK both.
Abhishek Srivastava
Software Engg (VC++)
India ,Noida
Mobile no 9891492921
|
|
|
|
|
Hi all,
I implemented different line styles (dash, dot, dash dot, dash dot dot) in my program. But all these styles are works fine, if the pen width is 1. If i select the pen width is more than 1, i couldn't get the line style. Is there any other option in GDI for selecting line style in different penwidth. Please give me some suggestions.
Prakash
|
|
|
|
|
For all line styles other than PS_SOLID, they only work correctly for lines of thickness 1. If you need line styles with a larger thickness, then you will have to do the line drawing part yourself. I am sure I saw an article on this somewhere but have been unable to find a reference.
Roger Allen - Sonork 100.10016
If your dead and reading this, then you have no life!
|
|
|
|
|
|
Check this out:
...
str.Format("[ProductID] = '%s' AND [Date] = #%s#", m_pSet->m_strProductID, COleDateTime::GetCurrentTime().Format(_T("%#m/%#d/%Y")));
lI = pShop->GetRecordCount();
if(pShop->FindLast(str) == 0)
{
pShop->AddNew();
pShop->m_lEntryID = lI;
pShop->m_dtDate = COleDateTime::GetCurrentTime();
pShop->m_strProductID = m_pSet->m_strProductID;
pShop->m_lQuantity = lQ;
pShop->Update();
}
else
{
pShop->Edit();
pShop->m_lQuantity += lQ;
pShop->Update();
}
...
Here's the problem. I try to find a record which has a given ProductID and which was created today. Although THERE ARE such records, nothing is ever found. MSDN says one has to use US date format (month-day-year) even if using non-engish version of MS Jet (I'm from Russia ), bun nothing is said about how the actual format string should look like. The database was created in MS Access 2K and uses short date format (something like 19.06.1994 - that's the sample in Access).
Error 207: Error 208
|
|
|
|
|
I myself have had difficulty with short date fields in MS Access.
Possible Solutions:
Verify (without reformatting) the COleDateTime value that is actually returned from your table. Mine have sometimes included time even though I have set it to be exclusively a date. Also becuase you are using a short date, you must use two digits to express the year so:
str.Format("[ProductID] = '%s' AND [Date] = #%s#", m_pSet->m_strProductID, COleDateTime::GetCurrentTime().Format(_T("%#m/%#d/%y")));
Good luck.
|
|
|
|
|
how to disabled (character in grey) a control in MFC? I use a modifystyle and modifystyleEX but it not works when i repaint the control. I search a example.
Thanks
Jérôme
|
|
|
|
|
Check CWnd::EnableWindow()
Regards,
Elias
|
|
|
|
|
Have you try 'EnableWindow'? Every CWnd object has this method, so if you have a button in a dialog attached to a CButton variable...
....................
CButton m_btMyButton;
....................
in the cpp
...
m_btMyButton.EnableWindow(FALSE);
...
|
|
|
|
|
Hello
Ima developing a VC++ applictaion .When i try to build a applicatin that is statically linked to MFC ,it throws me this error
error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in libcmt.lib(typinfo.obj)
Can somebody help me how to fix this error ?
Cause is my effort;
Effect is God's effort
|
|
|
|
|
You will probably have to change your link options in the project settings.
I can remember there is a /NODEFAULTLIB keyword that you can set in order to avoid linking with duplicate implementation.
Also, you might search for your error code in the help index which will tell you a lot...
|
|
|
|
|
i think u r using single thread run time library in project settings
|
|
|
|
|
Hi,
Do you know how to obtain a harddisks number; this is a serial (unique for each disk) number, wich I'll use for security etc.
I've have another question about this one; if I've build an app to determine the number, and it's put on a RAID system: which disk number will be returned?
Thanks
|
|
|
|
|
Hello
Check this: http://www.winsim.com/diskid32/diskid32.html
Or GetVolumeInformation() in SDK
|
|
|
|
|
Hi there,
If I build a setup project for an application, I can decide wether I want to place a shortcut to my .exe on the user's desktop. This has to be done before building the installer.
But I want the user to be able to choose wether he wants that, or not! So, I need to have some kind of interaction in my setup projects, for doing this I should inlcude some checkboxes in the dialog: How can I add those, and how can I use them to deternine wether to place those shortcuts?
Thanks
|
|
|
|
|
Hi all I am trying to extend a treectrl to add a preview window and button on the bottom of it. It has been subclassed and I have overridden the onPaint WM_MESSAGE where I have drawn... here is a code snippet that better explains what I have done.
void MyTreeCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rc;
// First let the control do its default drawing.
CWnd::DefWindowProc( WM_PAINT, (WPARAM)dc.m_hDC, 0 );
GetClientRect(&rc);
rc.top = rc.bottom-30;
dc.FrameRect(rc,&CBrush( RGB(0,0,0)));
rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
dc.DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLRIGHT);
}
This draws the preview window and the button at the bottom but inside the client area and leaves artifacts when items are expanded etc. I am trying to get something similar to this.
_____
| |
| |
-----
| |>|
-----
where the top is the actual treelist and the bottom is a preview window (showing a bitmap) and a button to call another dialog box.
Thanks in advance.
|
|
|
|
|
Sounds like youu need to reduce the size of the client area the control draws into. You can do this by processing the WM_NCCALCSIZE and WM_NCPAINT messages. Once you do that, you can hopefully add the extra buttons you need to the control and not have it overdraw them in its regular OnPaint(), which you should be able to leave unchanged.
Roger Allen - Sonork 100.10016
If your dead and reading this, then you have no life!
|
|
|
|
|
Thats what I was looking for )). Thanks for the info. While I was waiting I have found another solution which I believe gives me greater flexibility. I subclassed a Cwnd and created my preview which I then included into my Ctreectrl subclass. I set its parent to the tree controls parent and when the tree control is shown it is also shown (and hidden) at the same time. I might just try including the WM_NCCALCSIZE and WM_NCPAINT as well as I have just come up with a re-paint issue.
|
|
|
|