|
xjh_sz wrote:
I recently created a driver installation program, which uses a number of core functions such as UpdateDriverforPlugAndDevices(), using vs2008, in 32-bit operating system everything is working properly. But win32 program can run in x64, but under x64 it does not work. For example UpdateDriverForPlugandPlayDevices() raises an error, I used GetLastError (), and I see an error code. Later I was using a 64-bit system with vs2008 and compiled the x64 program, everything works fine, but the program can not run in win32. The problem is now solved, but I now maintain two versions of the installer 32 and 64; I do not know what a better way, I just run a seperate version of the executable.
Hi xjh_sz,
I believe that you are doing the correct thing by creating two separate installers for 32 and 64 bit. UpdateDriverForPlugAndPlayDevices does not support WOW64. You might be able to get your 32 bit installer to work by calling Wow64EnableWow64FsRedirection[^] but I honestly don't know for sure.
Some additional documentation:
Driver Installation for 32-bit and 64-bit Platforms[^]
Best Wishes,
-David Delaune
|
|
|
|
|
First,thanks for your replies.I am sorry to you because I asked question in chinese.
My question is as fllows.
I recently created a driver installation program, which uses a number of core functions such as UpdateDriverforPlugAndDevice(), using vs2008, in 32-bit operating system everything is working properly. But win32 program can run in x64, but under x64 it does not work. For example UpdateDriverForPlugandPlayDevices() raises an error, I used GetLastError (), and I see an error code. Later I was using a 64-bit system with vs2008 and compiled the x64 program, everything works fine, but the program can not run in win32. The problem is now solved, but I now maintain two versions of the installer 32 and 64; I do not know what a better way, I just run a seperate version of the executable.
|
|
|
|
|
Hi i am trying to delete all the columns in the clistctrl in MFC.But some columns are not getting deleted.Can anyone help me in this regard.
Kishore Kumar
|
|
|
|
|
How did you try to delete the columns?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> "It doesn't work, fix it" does not qualify as a bug report. <
> Amazing what new features none of the programmers working on the project ever heard of you can learn about when reading what the marketing guys wrote about it. <
|
|
|
|
|
I suspect you're giving the column index to the DeleteColumn function.
Instead always use the index of 0.
This is from the documentation of DeleteColumn .
int nColumnCount = m_myListCtrl.GetHeaderCtrl()->GetItemCount();
for (int i=0; i < nColumnCount; i++)
{
m_myListCtrl.DeleteColumn(0);
}
|
|
|
|
|
In addition to this, one also might want to use m_myListCtrl.SetRedraw() around those list operations to improve performance and reduce animation effects. Maybe even using a RAII like implementation for it.
|
|
|
|
|
Hello,
as most of you know, you can fill a Listbox with a complete directory list by Sending a message LB_DIR. This works fine, for example I create a CListBox Control like this, and fill the contents with a directory list:
CListBox m_List1;
...
m_List.SendMessage(LB_DIR,DDL_READWRITE ,(long)(const char*)(CString("C:\\temp\\*.*").GetBuffer(0)));
(Alternatively, you can use
m_List.Dir(DDL_READWRITE, "C:\\temp\\*.*");
which leads to exactly the same result)
The problem I have is the following: if a file in my directory has not set any of the following bits:
- "File is ready for archiving"
- "For fast searching, allow Indexing service to index this file"
it won't appear in my list. In order to do this, use Windows explorer, right-click on a file, select properties, look at Attributes and click the button "Advanced", and remove the upper two checkboxes.
No matter what attributes I set, when these two checkboxes are not set, the file will not be listed.
Can you please try to reproduce this? I think this is a severe bug that Microsoft should fix, or am I doing something completely wrong? How can I overcome this behaviour? Is there any known fix to this issue?
|
|
|
|
|
m_list.Dir(DDL_READWRITE, "C:\\temp\\*.*");
tried and works fine for me..
|
|
|
|
|
Works the same way here too, if none of those attributtes are set then the files do not appear in the listbox, don't know what causes this and how you can fix it (aside of forgetting about it and writing your own code to fill the list using FindFirstFile[^], FindNextFile[^] and FindClose[^] or somesuch)
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> "It doesn't work, fix it" does not qualify as a bug report. <
> Amazing what new features none of the programmers working on the project ever heard of you can learn about when reading what the marketing guys wrote about it. <
modified on Wednesday, July 21, 2010 5:36 AM
|
|
|
|
|
I have run some tests on this and it appears that the removal of the "For fast searching, allow Indexing service to index this file" bit is the problem. If this bit is set then the file appears in my list, even if the Archive bit is not set. This may have something to do with the way the bit is interpreted as a 'not' option, as described by dir /? .
Using FindFirstFile() / FindNextFile() I get all the files, including the one with indexing not set (attribute 0x2000), so it definitely looks like a Microsoft bug.
It's time for a new signature.
modified on Wednesday, July 21, 2010 7:52 AM
|
|
|
|
|
Thanks alot, as for the other two persons who were not able to reproduce this behaviour: which OS do you use? I have only XP Pro for testing, and I can reproduce it on every XP machine available in my office.
|
|
|
|
|
I'm on Windows 7 Home Premium, it looks like this has been around for some time.
It's time for a new signature.
|
|
|
|
|
Thanks, so it's obviously not fixed in Win7, does anybody know how to report this directly to Microsoft? Any chance they will do anything to fix this?
|
|
|
|
|
Erik wrote: Any chance they will do anything to fix this?
I'm 99% sure they won't. First, it's been around for a long time so there's a chance that some applications rely upon it. Second, no data is being lost so it would be very low priority. Third, there is a workaround.
"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
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
I have posted a report on this to the Microsoft forum, so will let you know if I get any feedback.
It's time for a new signature.
|
|
|
|
|
Thanks alot, do you have a link for me, so that I can follow the discussion there?
|
|
|
|
|
This[^] is my post so with luck any responses will appear below.
It's time for a new signature.
|
|
|
|
|
iam unable to enablemenuitem from dialog system menu..
i worte like this :
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->EnableMenuItem(SC_CLOSE,MF_DISABLED );
here it is disabling menu item.
after this again, i want to enable the menu item,
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->EnableMenuItem(SC_CLOSE,MF_ENABLED );
but it is not working. might be some prob in my code.
any body can help me ..
Regards,
Srinivas
|
|
|
|
|
Both MF_DISABLED and MF_ENABLED work perfectly for me.
I tried this in a dialog based application.
|
|
|
|
|
dialog based application. but i have one window class which is derived from CWnd class. this window have only one close button. that button should be enabled/disabled in different situations.
i worte like this for disabling:
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->EnableMenuItem(SC_CLOSE,MF_DISABLED );
same thing for enabled also,
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->EnableMenuItem(SC_CLOSE,MF_ENABLED );
this is not working.
Regards,
Srinivas
|
|
|
|
|
Hi,
I am drawing image with gdi+ function as below:
graphics->DrawImage(img, m_destRect, srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height,UnitPixel,&ImgAttr);
I want to zoom it so I tried ScaleTransform() function to zoom it.
But I have severel issue with this:
1. ScaleTransform takes 2 float parameter how to calculate them so that I can zoom the image from current state.
2. After zooming how to make image at same position (center point)as it was before zooming.
3. I tired the zooming in different way....on a static control and resize only static control that was working fine but I need to crop the image from spaific portion and that portion was internally not zoomed.
4. Is there any method to zoom and crop the image. please suggest?
|
|
|
|
|
|
Hi,
1.
keep both scale factors identical if you want the scaling to be isotropic.
2.
temporarily move the origin to the center of the canvas (assuming that is the point you do not want to move), hence apply the sequence Translate(some_distance), Scale(some_factor), Translate(-some_distance) .
ADDED: normally some_distance corresponds to half the size of your canvas /ADDED
3.
There are some 30 overloads of DrawImage; there must be at least one that does what you want.
Most is explained in MSDN, to some extent. It may take some experiments to grasp it all.
|
|
|
|
|
Hi all,
Im having two character buffers with different size.
for ex,ist buffer is size of 40,and 2nd one is 50.
what im trying to do is,create the new buffer which should contain the data from first buffer(position from 0 to 40)and the data from the 2nd buffer(position from 41 to 91).
I mean the 2nd buffer's data should get append with the first buffer data.
Is any way to do this?could you help me.
Thanx.
|
|
|
|
|
gmallax wrote: Is any way to do this?
yep
gmallax wrote: could you help me.
will try
So, if you know in advance the size of these buffers, or at least the maximum length of possible strings, then e.g. (i assumed your strings are zero-terminated, if not then tell me so):
char buffer40[40];
char buffer50[50];
...initialize your buffers with whatever content you need to...
char buffer90[40 + 50];
strcpy(buffer90, buffer40);
strcap(buffer90, buffer50);
...both of your strings are in buffer90 now...
See strcpy[^] and strcat[^] in MSDN.
If you do not know the sizes of these strings in advance, or you just don't want to waste memory, then e.g.:
char first_buffer[whatever size_1];
char second_buffer[whatever size_2];
...initialize your buffers with whatever content you need to...
char *concatenated_buffer = new char[strlen(first_buffer) + strlen(second_buffer) + 1];
strcpy(concatenated_buffer, first_buffer);
strcat(concatenated_buffer, second_buffer);
...both of your strings are in concatenated_buffer now...
delete []concatenated_buffer;
See strlen[^] in MSDN for info.
I hope this helps, error checks are avoided for simplicity.
[EDIT] I just realized i simply assumed your character buffers contain strings, which you didn't explicitly state so i might be wrong, if i am, then tell me so and we'll think of something else [EDIT]
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> "It doesn't work, fix it" does not qualify as a bug report. <
> Amazing what new features none of the programmers working on the project ever heard of you can learn about when reading what the marketing guys wrote about it. <
|
|
|
|
|