|
Thank you! I was wondering, is there an easy way to have my app store it's current window size and screen position into the registry on close? (MFC SDI). Thanks again
|
|
|
|
|
You can insert your data to registry see here[^].
|
|
|
|
|
frqftgbdafr wrote: I was wondering, is there an easy way to have my app store it's current window size and screen position into the registry on close?
Yes, use SetWindowPlacement() and GetWindowPlacement() in the frame's ActivateFrame() and DestroyWindow() methods.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
First of all i would like to say am very new to C++ and am probably asking somethingthing very simple. i am trying to write a win32 console application that moves files from one folder to another on the same drive.
when i call the win32api's MoveFile function it fails with the following error "The filename, directory name, or volume label syntax is incorrect". below is the offending piece of code.
i have checked the file exists and the destination folder also exists.
void BackupFile(string* origpath,string* filename,string* unitid,string* owner,string*month)
{
WIN32_FIND_DATA win32_find_data;
HANDLE handle;
string dest;
dest = "C:\\data_2008\\" + *owner + "\\" + *unitid + "\\"+ *month;
handle = FindFirstFile((dest+"\\*.*").c_str(),&win32_find_data);
if(handle != INVALID_HANDLE_VALUE)
{
dest += "\\" + *filename;
if(!(MoveFile(origpath->c_str(),dest.c_str())))
{
DeleteFile(origpath->c_str());
}
}
}
any help will be highly appreciated
|
|
|
|
|
Have you consulted a debugger?
|
|
|
|
|
|
i should have mentioned that when i check the values in the debugger the values are correct and are pointing to the correct paths.
i have managed to narrow down further and the problem seems to be the dest.c_str() while trying to move the file.
if i substitute it with the actual value it seems to work fine.
i have also tried replacing the datatype to LPCTSTR and below are the result
LPCTSTR sourcePath = "C:\\somefolder\\file.ext";
LPCTSTR destPath = "C:\\folder2\\file.ext";
LPCTSTR sourcePath = origpath->c_str();
LPCTSTR destPath = "C:\\folder2\\file.ext";
LPCTSTR sourcePath = origpath->c_str();
LPCTSTR destPath = dest.c_str();
i get the same when i change the datatype to a CString
any help will be highly appreciated
|
|
|
|
|
What are you doing with sourcePath and destPath ? Make sure that dest and origpath are still in scope, because otherwise the objects will be destroyed and sourcepath and destPath will point to memory which has been deleted. Make sure also that you don't modify the string objects in between. The two LPCTSTR point to an internal buffer of the string object, so if you modify the string object, this buffer can be destroyed.
|
|
|
|
|
i have checked and the values are not being modified, i have put a break point on the MoveFile line and the variables still hold the correct value.
i have created a MFC dialog based test application and pasted the exact same code and it works fine but fails in the win32 console application,
any ideas?
|
|
|
|
|
Good question.
Many are stubborn in pursuit of the path they have chosen, few in pursuit of the goal - Friedrich Nietzsche
.·´¯`·->Rajesh<-·´¯`·.
[Microsoft MVP - Visual C++]
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
hi
i need to add Ip Address as the value for the registry.
Example,like this
Registry Name = public
Registry Type = REG_SZ
Registry Data = 10.20.40.80
but using below code am able to add only one value as "1"
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char szStr[20]="12.45.67.89";
HKEY hKey;
// opening a subkey, then creating and setting a value
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT
("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters\\s1"), 0,
KEY_ALL_ACCESS, &hKey)!=ERROR_SUCCESS)
printf("\nError opening the desired subkey (doesn't exist?).\n");
else
{
if (RegSetValueEx(hKey, TEXT("public"), NULL, REG_SZ, szStr, sizeof
(szStr)) ==ERROR_SUCCESS)
printf("\nThe value of the key was set successfully.\n");
else
printf("\nError setting the value of the key.\n");
}
RegCloseKey(hKey);
return 0;
}
Output am getting in the registry data field is " 9"
could you please help me regarding the above issue.
|
|
|
|
|
You are being very good about using TEXT macros, and TCHAR... while leads me to think you are using UNICODE.
In which case, your address needs to be stored as a TCHAR array also.
Ie:
TCHAR szStr [] = _T("12.45.67.89");
...
if (RegSetValueEx(hKey, TEXT("public"), NULL, REG_SZ, (BYTE *)szStr, sizof (TCHAR) * lstrlen (szStr)) ==ERROR_SUCCESS)
...
I'm assuming your access of hKey is succeeding?
Can you delete the "public" value using regedit, and see it getting re-created?
Iain.
|
|
|
|
|
thanks Iain Clarke
it's working fine.........
|
|
|
|
|
<code>TCHAR</code> szStr[20]= <code>_T(</code>"12.45.67.89"<code>)</code>;
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters\\s1"),
0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS)
{
printf("\nError opening the desired subkey (doesn't exist?).\n");
}
else
{
if (RegSetValueEx(hKey, _T("public"), NULL, REG_SZ, <code>(const BYTE *)</code>szStr, <code>(_tcslen(szStr)+1)*sizeof(TCHAR)</code>) == ERROR_SUCCESS)
printf("\nThe value of the key was set successfully.\n");
else
printf("\nError setting the value of the key.\n");
<code>RegCloseKey(hKey);</code>
}
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thanks Mark Salsbery
the above sample program is working fine, am able to enter the Ip Address properly.
thanks a lot
|
|
|
|
|
Hi,
I am using a CListCtrl in a dialog box. The column headings are initialized in OnInitDialog() function.
Now what i want a certain butoon on Dialog box the Column header should change dynamically.
Please Tell me how to do this.
Thanks in Advance.
Dhiraj Kumar Saini
|
|
|
|
|
Well, work it through...
You have a CListCtrl, and you want to do something with the header.
CHeaderCtrl *pHeader = m_pMyListCtrl->GetHeaderCtrl ();
Now you can manipulate the header.
Looking at the docs for CHeaderCtrl, you have a "setitem" function.
It takes an item number, and a HD_ITEM struct. Burrowing deeper, you just have to set the mask of the struct to say "my text field is valid", and the text field to your new string.
HD_ITEM hdItem = {0};
TCHAR buf [128];
lstrcpy (buf, _T("Hello"));
hdItem.mask = HDI_TEXT;
hdItem.pszTest = buf;
pHeader->SetItem (n, &hdItem);
That's all nicely untested, but should work a treat.
Good luck,
Iain.
|
|
|
|
|
Hello, I have used the following code
HD_ITEM hdItem = {0};
TCHAR buf [128];
int n=GetSelectedVisitorIndex();
CString IPAddress=-T("122.56.78.99)"
CString str=_T("Visitor Details:")+IPAddress;
_tcscpy(buf, str );
hdItem.mask = HDI_TEXT;
hdItem.pszTest = buf; // can almost certainly cast from a constant string.
pHeader->SetItem (n, &hdItem);
but it is giving error:
Error 15 error C2039: 'pszTest' : is not a member of '_HD_ITEMW' c:\Documents and Settings\Shy\Desktop\IPAddress\SourceCodes17-09-08\Source Code 06Dec2007\GetFootDlg.cpp 82
Please tell me whats the error
|
|
|
|
|
Dhiraj kumar Saini wrote: 'pszTest' : is not a member of '_HD_ITEMW
Look at the documentation for HD_ITEM, and read about each member variable of the struct. You should spot my (cough, cough) deliberate mistake.
Iain.
|
|
|
|
|
Hi all,
i m using a Property sheet,here im set a font over the property sheet but when i run the application the property pages of property sheet not shown in seted font.
so please tell me how can i set the font of property sheet or property pages.
thank in advance.
IN A DAY, WHEN YOU DON'T COME ACROSS ANY PROBLEMS - YOU CAN BE SURE THAT YOU ARE TRAVELLING IN A WRONG PATH
|
|
|
|
|
"_$h@nky_" wrote: im set a font over the property sheet
HOW are you setting the font for the property sheet? It should simply take the font built into the dialog resource you are giving it, so if you're overriding that, then timing will matter a lot.
Iain.
|
|
|
|
|
Helo,
I have two file types (i.e. .res and .ems). The extension '.res' files are in c:\AAS\ResultFiles\ folder and the extension '.ems' files are in c:\AAS\EmissionFiles\ folder. By defaul CFileDialog Opens the '.res' directory. when user selects the file type I want to change the directory according to the file type.
Can any body give an idea to do this using MFC.It should work in Windowx XP OS.
Thank you.
|
|
|
|
|
You can use the CFileDialog::m_ofn.lpstrInitialDir data member and set it to the desired directory.
|
|
|
|
|
Have you tried assigning a value to lpfnHook and see what messages that hook function receives when you interact with the dialog (specifically the "Files of type" combobox)?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|