Click here to Skip to main content
16,011,905 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: How to sotre data from a dialog to Execel file? Pin
David Fedolfi18-Jan-01 3:50
David Fedolfi18-Jan-01 3:50 
GeneralRe: GOT it Pin
18-Jan-01 4:59
suss18-Jan-01 4:59 
GeneralRe: GOT it Pin
18-Jan-01 4:59
suss18-Jan-01 4:59 
GeneralRe: GOT it Pin
18-Jan-01 4:59
suss18-Jan-01 4:59 
GeneralDetect Ie download from another application Pin
Tom K17-Jan-01 5:27
Tom K17-Jan-01 5:27 
GeneralRe: Detect Ie download from another application Pin
Ghazi H. Wadi18-Jan-01 4:11
Ghazi H. Wadi18-Jan-01 4:11 
GeneralNeed Help with using CString to read string registry keys Pin
eric kaminski17-Jan-01 4:41
eric kaminski17-Jan-01 4:41 
GeneralRe: Need Help with using CString to read string registry keys Pin
Jim Howard17-Jan-01 6:04
Jim Howard17-Jan-01 6:04 
I've been programming in MFC since 1994, and I never directly modify the CString buffer, it just seems wrong to me.

Why not just use a character array? What do you gain by futzing around in CString's underwear?
ie:
char buffer[256]; /* or */ char buffer = new char[dwSize];
RegQueryValueEx(tempKey,"Label", NULL, &dwType,buffer, &dwSize);
ftemp=atof(buffer);
delete buffer; // (if 'new' was used)

Having said that, I wasn't able to duplicate your error, and your use of CString seems correct. There is a very thin registry wrapper class in ATL called CRegKey. It saves you a little trouble. Here is my test of your problem, using both CRegKey and your direct api calls:
<br />
#include <stdio.h><br />
#include <afx.h><br />
#include <atlbase.h><br />
<br />
void Function1(float f)<br />
{<br />
  printf("ftemp: %f\n",f);<br />
}<br />
<br />
#define USE_CREGKEY<br />
void main(int argc, char* argv[])<br />
{<br />
	DWORD dwType =0, dwSize=256;<br />
	float ftemp;<br />
	CString RegRead;<br />
<br />
#ifdef USE_CREGKEY<br />
	CRegKey myKey; <br />
	//open key<br />
	LONG result = myKey.Open(HKEY_CURRENT_USER,"deleteThisKey",KEY_READ);<br />
	<br />
	ASSERT(result == ERROR_SUCCESS);<br />
<br />
	for(int i=0; i<6 ;i++)<br />
	{<br />
		result = myKey.QueryValue(RegRead.GetBuffer(dwSize), "Label", &dwSize );<br />
		ASSERT(result == ERROR_SUCCESS);<br />
		RegRead.ReleaseBuffer();<br />
		<br />
		//convert string to float value<br />
	   ftemp=(float)atof(LPCTSTR(RegRead));<br />
		<br />
	}<br />
<br />
#else<br />
	HKEY tempKey;<br />
	//open key<br />
	RegOpenKeyEx(<br />
		HKEY_CURRENT_USER,// handle to open key<br />
		"deleteThisKey",  // subkey name<br />
		0,		  // reserved<br />
		KEY_READ, // security access mask<br />
		&tempKey  // handle to open key<br />
		);<br />
	<br />
	for(int i=0; i<6 ;i++)<br />
	{<br />
		<br />
		::RegQueryValueEx(tempKey,"Label", NULL, &dwType,(BYTE*) RegRead.GetBuffer(256), &dwSize);<br />
		RegRead.ReleaseBuffer();<br />
		<br />
		//convert string to float value<br />
		ftemp=(float)atof(LPCTSTR(RegRead));<br />
		<br />
	}<br />
#endif	<br />
<br />
	Function1(ftemp);<br />
}<br />


When I use the registry, I like to use Sam Blackburn's WFC utility classes. He has a CString aware class called CRegistry that should be included in MFC. Even if you don't use the classes, Sam has done a super job of giving us great windows/MFC code to use as examples.

http://www.samblackburn.com/wfc/

I'm sorry I couldn't pinpoint your problem, but I hope this helps.

Jim

Confused | :confused:

PS: Be sure you close tempKey with RegCloseKey(tempKey) when you are done with it. CRegKey does that for you.
GeneralRe: Need Help with using CString to read string registry keys Pin
eric kaminski17-Jan-01 6:19
eric kaminski17-Jan-01 6:19 
GeneralRe: Need Help with using CString to read string registry keys Pin
David Fedolfi17-Jan-01 7:34
David Fedolfi17-Jan-01 7:34 
GeneralUsing CreateThread with ThreadProc as a member function Pin
17-Jan-01 3:18
suss17-Jan-01 3:18 
GeneralRe: Using CreateThread with ThreadProc as a member function Pin
Ghazi H. Wadi17-Jan-01 3:46
Ghazi H. Wadi17-Jan-01 3:46 
GeneralRe: Using CreateThread with ThreadProc as a member function Pin
17-Jan-01 4:46
suss17-Jan-01 4:46 
GeneralRe: Using CreateThread with ThreadProc as a member function Pin
Erik Funkenbusch17-Jan-01 9:52
Erik Funkenbusch17-Jan-01 9:52 
GeneralRe: Using CreateThread with ThreadProc as a member function Pin
Tim Deveaux18-Jan-01 13:18
Tim Deveaux18-Jan-01 13:18 
GeneralMultiline List On WinCE Pin
17-Jan-01 2:54
suss17-Jan-01 2:54 
GeneralCPropertysheet and titles Pin
Kevin Gutteridge16-Jan-01 23:57
Kevin Gutteridge16-Jan-01 23:57 
GeneralRe: CPropertysheet and titles Pin
17-Jan-01 1:13
suss17-Jan-01 1:13 
GeneralRe: CPropertysheet and titles Pin
Kevin Gutteridge17-Jan-01 6:24
Kevin Gutteridge17-Jan-01 6:24 
GeneralRe: CPropertysheet and titles Pin
David Fedolfi17-Jan-01 6:37
David Fedolfi17-Jan-01 6:37 
GeneralRe: CPropertysheet and titles Pin
Kevin Gutteridge18-Jan-01 0:15
Kevin Gutteridge18-Jan-01 0:15 
GeneralReport Writer Pin
16-Jan-01 22:29
suss16-Jan-01 22:29 
Generalconstant String Memory Usage Pin
16-Jan-01 19:15
suss16-Jan-01 19:15 
GeneralRe: constant String Memory Usage Pin
Walter Gildersleeve18-Jan-01 1:05
Walter Gildersleeve18-Jan-01 1:05 
GeneralRe: constant String Memory Usage Pin
Jim Howard18-Jan-01 5:20
Jim Howard18-Jan-01 5:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.