|
thx for your explanation!
I took a look into MSDN and it sounds logical now.
|
|
|
|
|
GDay All,
I was hoping someone out there would be able to inform me
how to set overlay images using a CListCtrl and LVITEM or point
me in the direction of an existing tutorial etc.
//So far this is a summary of what i have
m_OverlayImageList.Create( 16,16,TRUE,8,1);
HICON hIcon;
hIcon = ::LoadIcon (AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON));
m_OverlayImageList.Add( hIcon );
m_ListSelected.SetImageList( &m_OverlayImageList, LVSIL_STATE );
//then after ive inserted my lvItem i try
LVITEM lvItem;
lvItem.mask = LVIF_STATE;
lvItem.state = LVIS_OVERLAYMASK;
lvItem.iImage = 1;
m_ListSelected.SetItem( &lvItem );
... ofcourse this doesnt work else i wouldnt be asking for help,
Any help will be much appreciated.
|
|
|
|
|
You're missing a few steps. Overlay images have to be specified as such in the image list before they can be used. Say you've got two icons in the image list, and you want to use the second one as the overlay:
m_ImageList.SetOverlayImage(1,1);
(image indexes are 0-based, so index 1 = the second image; overlay indexes are 1-based, so index 1 = the first overlay image)
Now you have an overlay defined, and you can set the icon to be drawn with the overlay:
lvItem.mask = LVIF_STATE|LVIF_IMAGE;
lvItem.iImage = 0;
lvItem.stateMask = LVIS_OVERLAYMASK;
lvItem.state = INDEXTOOVERLAYMASK(1);
That should do it!
--------
You can change the extention so it reads ASP even though it is PHP which is kind of cool. - Martin Marvinski --Shog9 --
|
|
|
|
|
Hi,
I want to develop a small application that receives calls and then according to some data received, does some processing and sends some data to the client.
Please provide some links
Sameer
|
|
|
|
|
Which OS? If just 2000 then you'll be better off using TAPI3, if you want to run on the dreaded 9x machines then you'll be stuck with TAPI2.
The platform SDK has plenty of decent TAPI examples, but there are very few decent TAPI sites on the web.
http://www.sellsbrothers.com/writing/telprog/ should be a starting point as it has a few links that will be useful.
The Microsoft TAPI newsgroups are probably your best bet for getting questions answered. My TAPI experience is more with real telephone systems rather than data transfer.
Michael
|
|
|
|
|
Hello Everybody!
I need some help in understanding Message Queues when creating an UI thread.
I have created a thread that does a lengthy action delivered using SendMessage. Whenever I need the thread to complete this action, a PostThreadMessage is post this request to the thread's message queue.
This creates a bottleneck at the queue because more messages are being pumped into the queue then they can be processed!
Is there a limit to how many messages that a message queue can hold?
Any help with this problem is greatly appreciated!
|
|
|
|
|
Hi,
Actually speaking there is no declared limit for the
number of messages. But if the same messages are being
sent continuously - you could test by using
PeekMessage and remove the trailing messages
for each message(the specific kind) you are processing.
|
|
|
|
|
Thank you Prem for your suggestion.
The same message is being sent continously and each message is important to be processed. However, I don't quite understand what you mean by the trailing messages. Could you elaborate on that?
|
|
|
|
|
There is no practical limit, that I know of. Are you losing messages? How far behind is the worker thread that receives the messages? If the thread spends a significant amount of time waiting, you have extra cycles available. You could try using more that one thread to relieve the bottle neck.
|
|
|
|
|
Thank you for your suggestion, Bill. I will try to look into that.
|
|
|
|
|
I write an Application which uses another DLLs.
In the DLL_DS, it contain a DataService class, which with functions to get something from the database, and return the list of something, say:
<br />
CSimpleKeyList *CRebDataService::GetSimpleKeyList()<br />
In the DLL_TY, it holds the basic definition of some class, say:
<br />
class CHRISTINE_EXPORT CSimpleKeyDetail <br />
{<br />
public:<br />
CSimpleKeyDetail();<br />
virtual ~CSimpleKeyDetail();<br />
<br />
CString GetKeyID() const;<br />
long GetKey() const;<br />
CString GetKeyName() const;<br />
<br />
void SetKeyID(const CString& keyid);<br />
void SetKey(const long key);<br />
void SetKeyName(const CString& keyname);<br />
<br />
protected:<br />
<br />
CString m_KeyID;<br />
long m_Key;<br />
CString m_KeyName;<br />
};<br />
One of header file of DLL_TY defines the template of CDualMapListType (which is just a std::map), and
<br />
typedef CDualMapListType<CSimpleKeyDetail> CSimpleKeyList;<br />
The Application includes the header file, and is getting a CSimpleKeyList *plist from DLL_DS, but when loop through the list, an access violation occurred.
<br />
for (itr=plist->begin();itr!=plist->end();itr++)<br />
{<br />
CSimpleKeyDetail *pKeyDetail = itr->second;<br />
keyid = pKeyDetail->GetKeyID();
<br />
... ... ...<br />
}<br />
Now, I am wondering if CString can be passed between the DLL and the App, or even I can't pass the pointer to a std::map from DLL to the app, where memory is allocated in the DLL, and deletion is in the Application.
Can anyone showe me the hint ??
Thanks very much
|
|
|
|
|
This gets asked every so often. You'll be safe if all the components that make up the program (main app and DLLs) use the same DLL version of the C run-time library (i.e. no static linking of the run-time). Try it, it should work.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I've checked all the DLL's and the App are using Debug Multithreaded DLL in all Project Settings.
The strange is, in the map I contain two elements, I can get the first one with itr->second. However, for the second one, I get the CSimpleKeyDetail * with itr->second, it returned an address of cdcdcdcd. It makes me confused.
By the way, I'm using VS6 SP5 in Windows XP box.
|
|
|
|
|
Will it be any chance that the standard library (std::map) is using *another* method to allocate memory, so the memory is invalid after passing through DLL - App boundary ?
|
|
|
|
|
I think my problem is this one :
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q172396
After studying, I'll tell how do I solve it. Thanks ^^
|
|
|
|
|
Hi,
I really want to know who worked with advanced scsi programming and VC++
in this disscuss list?
I have done some works in recent two weeks with the help of the disscussion board, including finding all the drivers, read/write datas from/to cd-rom, insert/eject cdroms and ...
by using aspi32scsi code. As a comparison, Would you please show me similar works or some
materials about this topic?
Thanks in advance!
chen
|
|
|
|
|
This one has me a bit stumped.
I used Erik T's excellent ATL object wizard and tutorial articles to make a toolbar (like the CP toolbar), and I have added a button to the Standard Buttons bar of Explorer which pops the toolbar on and off. Works fine...
...except for one sniggly little feature.
The docs tell you to create two icon files or resources - one with 16 (16c) and 20(256c) bit gray images, and one with like sized 'hot' or color images. Ok sure fine. When IE loads, it checks whether its set to display small or large icons and gets the right ones to use for the SB bar button.
The problem arises when the user selects 'Customize' and changes from small icons to large or vv. The gray icon gets selected ok, but the color one becomes a 'dithered' (for lack of a better term) version of the one currently being shown. This can really mess up the quality of the hot image, until the user either goes back to the icon size in force when IE loaded or reloads IE.
I've noticed another quirk that can happen when a control specifies a single icon resource/file, or the one loaded previous (listed prior in the reg settings) has only one or the wrong icons - the icon for one can appear in the standard button for the other! This leads me to suspect that there is some image list indexing going on, but haven't gotten far on that track.
Toolbars like Google and CP avoid this aspect of adding to the Standard Buttons bar. If I could find a sample that did this correctly, that would help - or even find the IE icons in .ico or resource form, though I'm not sure they exist as such.
Has anyone any insight here? I realize its not a show stopper, but its dang annoying.
Any hot leads, musings, or even sentences starting with 'ya know I think I once...' and/or ending with '...can't for the life of me remember where' will be muchly appreciated.
|
|
|
|
|
I doubt it'll help you much, but the normal IE icons are kept in browseui.dll. They're just bitmaps, all the hot buttons in one, all the gray in another, separate ones for 256 color, etc.
--------
You can change the extention so it reads ASP even though it is PHP which is kind of cool. - Martin Marvinski --Shog9 --
|
|
|
|
|
Thanks - that may help!
Will 'av a go...
|
|
|
|
|
I once discussed the "wrong size icon being shown" problem with Erik. (I had in mind a button for the Standard toolbar that would open the CP home page.) Neither of us could come up with a fix, though.
--Mike--
Just released - RightClick-Encrypt - Adds fast & easy file encryption to Explorer
Like the Google toolbar? Then check out UltraBar, with more features & customizable search engines!
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
|
|
|
|
|
Thanks Mike
So... better minds than mine have failed... hmmm... what would Poirot do...
|
|
|
|
|
ok, this is my code:
char ID::SetID(char SID[11])
{
char *pID[11];
char SSID[11];
pID = &SSID;
*pID = SID;
strcpy(&M_ID, SSID);
return 0;
}
//i got my code to work with one character, now i want to make it work with more like 10
i have one problem "yet again" and it deals with the line:
pID = &SSID; //i dont understand my error.
this is the error:
error C2440: '=' : cannot convert from 'char (*)[11]' to 'char *[11]'
what does (*) mean, and: is there another way to declare a pointer to point to somthing?
Thanks for your help!
~SilverShalkin
|
|
|
|
|
if pSID is NUL terminated string then code is:
char ID::SetID(char *pSID)
{
strcpy(&M_ID, pSID);
return 0;
}
if pSID array of char then code is:
char ID::SetID(char *pSID, int isize = 10)
{
memcpy(&M_ID, pSID, isize);
return 0;
}
soptest
|
|
|
|
|
You would do better to use std::string instead of char arrays.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Christian Graus wrote:
You would do better to use std::string instead of char arrays.
Is this an automated reply to any query on using char*s or CStrings?
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|