Tight_Coder_Ex 17 Posting Whiz in Training

Sorry, I missed the Borland part. The first segment of code are the events that are either preset with those controls, or you selected something in a dialog box you initialize those events. The second part is what the resource editor uses to position them and other parametes. What you have on this dialog is

1 Label
1 Edit
2 Buttons

What you have to do is put code in those sections that suit your needs. For example in TFrom::Button1Click (TObject *Sender) is where you would read the contents of the edit control and write it to the file.

What you are dealing with here is what M$ refers to as MFC. I am not familiar with this (Borland) environment at all and you might be better off asking this question in
http://www.daniweb.com/techtalkforums/forum6.html
Geeks Lounge as your question is more related to using GUI and Borland.

Sorry I can't be of greater help

Tight_Coder_Ex 17 Posting Whiz in Training

First thing I saw was you mixed a little basic with C.

while ((strcmp(dummy,"ZZZZZ") !=0) [b][u]&&[/u][/b] (i<maxrows));

not and. Other than that you were so close. All you needed to do was make another loop inside your do loop

strcpy(place[i],dummy);
 
	for (int x = 0; x < 12; x++) {
		fscanf(fp,"%f",&rain[x]);
		printf("[b]\n\t[/b]%10s\t%2.2f", place[i],rain[x]); }
	i++;

and that solved the problem. I also cleaned up the display a little with the carriage return / tab.

Didn't mean to discredit your response Narue, but it didn't show up until I hit submit.

Tight_Coder_Ex 17 Posting Whiz in Training

That's a pretty loaded question. Qualify first how you want to do it, meaning are you going to use a resource or create the dialog directly within code. Which compiler are you using now. If it's VC++ then are you using MFC. It might be an idea to post something you've already tried or a basic idea how you think it should be done and then help from whomever can be focused

Best compiler, well in 1998 when I bought VC++ 6.0 it was $700.00 Canadian. Does it make it the best one. I doubt it very much, but it's got a lot of stuff. It's been my experience the more STUFF a program has the more likely it's not very good at the job it's supposed to do. Other than that, I've used GCC and it is every bit as comprehensive as VC++, lacking IDE though (big deal). So your question should maybe be rephrased which compiler can I get for $$$, whatever your budget.

Tight_Coder_Ex 17 Posting Whiz in Training

In Access, VB & Excel today is 38,427 days since Jan 1, 1970. The time becomes the fracation protion, so at the time I'm writing this response it's 38,427.31. Now at 3:30 pm today 38,427.65 you lanuch you application and try to enter data that was for ealier today it won't work because >=now ().

chang your formula to >= int(now()) and it will work fine.

Comatose commented: Good Job +1
Tight_Coder_Ex 17 Posting Whiz in Training

Provide a little detail as to how far you've gotten with your code so far. Basically, you are going to respond to that windows WM_LBUTTONDOWN event. Then you can use GetWindowText (hWnd, lpstr String, length of string), provided window was created with "BUTTON" class.

Tight_Coder_Ex 17 Posting Whiz in Training

Try this baboon4000.

1. Create a table of 26 elements (A - Z)

2. Everytime you use a letter check the value of the corresponding element of the array and if it hasn't been used yet invert its state.

To tell you the truth, it probably took you longer to ask the question and check this board than it would have to write the program in the first place.

Probably be a good idea to stay away from "i need a code","where the code","i need codes"

Tight_Coder_Ex 17 Posting Whiz in Training
21 10 3 13 2005
12 8 4 9 2004
3 6 10 31 2004

Say you want to change 12 8 4 9 2004 to 12 8 4 11 2004

Wouldn't the resulting string being 1 byte longer overwrite the "3" in the next position (record)? Often when confronted with this type of data I prefer to pad values that will be less than 10 with zeros.

ie
21 10 03 13 2005
12 08 04 09 2004
03 06 10 31 2004

That makes each record a fixed length and maybe a little easier to code.

Tight_Coder_Ex 17 Posting Whiz in Training

What is the error? Right off hand I can see you are mixing two entry points. void main () & WinMain. WinMain is empty. There is an example of a sekeltal app in code snippets under cplusplus. Look at that one and it will give you a good idea how to correct yours.

Tight_Coder_Ex 17 Posting Whiz in Training

I think I've tried notepad before, but for some reason I think I used WordPad to save to a TXT file and then loaded with Notepad and copied and pasted from there. So far that is the only way I've been able to pad blanks instead of tabs.

In code snippets 1o0oBhP posted another example of a skeletal GUI app
http://www.daniweb.com/code/snippet112.html

Tight_Coder_Ex 17 Posting Whiz in Training

if ((fin[j]==false) && (nd[j] < ava[1]))

Your function definition declares "ava" as an it, but your trying to use as if it was an array. This wasn't too hard to spot, but in the furture please include everything so it can be pasted into compiler without modification.

Tight_Coder_Ex 17 Posting Whiz in Training

Technically C++ and XP/98 Linux OSX Unix are not an intregal part of one another. C++ is just merely a tool by which you can write applications for many platforms. The scope an purpose to your classes would have been gaining knowledge how to use the language effectively. Just because you are shown how to use a circular saw doesn't make you a carpenter, but you may be the best circular saw user on the planet.

If you are interested in designing GUI applicaitons for windows, now you must study a book such as WIN32 API Superbible. Once you understand all the functions that are part and parcel of the operating enviorment of interest, maybe even OSX, Linux, Unix, Gnome, KDE and so on, then you will be on your way marrying C++ with end user applications.

Learning an operating systems API can be as ownerous as learning C++. Here is an example of a skeletal windows app.

#define WIN32_LEAN_AND_MEAN
 
#include <windows.h>
 
HINSTANCE hInst;
 
HWND MainWnd;
 
const char *AppName = "OLIST", *AppTitle = "Order List Lookup";
 
static bool CreateMainWindow (int ShowValue);
 
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
 
// =========================================================================================
 
int APIENTRY WinMain (HINSTANCE Instance, HINSTANCE PrevInst, char *CmdLine, int ShowValue)
 
{
 
MSG Msg;
 
Msg.wParam = -1;
 
hInst = Instance; // Global copy of instance handle.
 
if (CreateMainWindow (ShowValue))
 
{
 
while (GetMessage (&Msg, NULL, 0, 0))
 
{
 
TranslateMessage (&Msg);
 
DispatchMessage (&Msg);
 
}
 
}
 
return Msg.wParam;
 
}
 
// -------------------------------------------------------------------------------------------
 
static bool CreateMainWindow (int ShowValue) …
Tight_Coder_Ex 17 Posting Whiz in Training

You've got the right idea, now it's just a matter of deciding what sort algorithym you want to use. Conditionals "if" would work, especially as there are only three values but you might not want to limit your application to this.

Consider declaring you inputs as an array of int's rather than three different variables. This will make it easier to code your sort routine, eventhough the way you've declared them they would be contiguous in the sort procedures frame.

Look through code snippets and I'm sure you'll find something to suite your needs.

Tight_Coder_Ex 17 Posting Whiz in Training

If you not too concerned about the bells and whistles that go along with 95/98/XP then mkdir will work just fine.

If you are creating projects in VC++ 6.0 with the wizzard and "stdafx.h" is already included you don't have to worry about <windows.h> because it's already in there.

Tight_Coder_Ex 17 Posting Whiz in Training

Start with this

char *Units [] = {"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};
char *Teen [] = {"Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
char *Tens [] = {"Ten","Twenty","Thirty","Fourty","Fifty","Sixty","Seventy","Eighty","Ninety"};

After you get your input cycle through all the characters and determine which string corresponds to the numeric input.

I already have this program done in it's entirety as part of a check writing application, so just get started and I'll help you along.

Tight_Coder_Ex 17 Posting Whiz in Training

Linux

#include <sys/stat.h>

mkdir (const char *path, mode_t mode);

in this case mode = O_CREAT. Function returns an int. Lookup "man mkdir", if memory serves me correctly for more details.

Windows

#include <windows.h>

CreateDirectory (char *DirName, SECURITY_ATTRIBUTES Attribs);

If the function succeeds returns non-zero otherwise NULL.

Tight_Coder_Ex 17 Posting Whiz in Training

echo(), noecho(), cbreak(), nocbreak(), raw() & noraw() are the functions in ncurses you are looking for. If you are windowing with ncurses also read about keypad (WINDOW, bool)

You can also do the same thing for terminals, but it's a little more convoluted than ncurses and it's the library I prefer.

#include <stdio.h>
#include <unistd.h>
#include <termios.h>
 
struct termios initial_settings, new_settings;
 
tcgetattr (fileno (input), &initial_settings);
new_settings = initial_settings;
newsettings.c_lflag &= ~ICANON;
newsettings.c_lflag &= ~ECHO;
newsettings.c_cc[VMIN] = 1;
newsettings.c_cc[VTIME] = 0;
tcsetattr (fileno (input), TCSANOW, &new_settings);

now using a terminal you'll receive characters in an uncooked mode. It's a real pain to deal with function and special keys though.

Tight_Coder_Ex 17 Posting Whiz in Training

Yes you will eventually run out of memory by continuously allocating with malloc and never freeing.

In the second case, theroetically you shouldn't run out of memory by freeing each time, but Linux and Unix like XP handle memory a lot better than 95 or 98 do. I have no experience with OSX, but assume it's similar to Linux. In 95 and 98 they just keep using memory until nothing is left and only relinquish it when application is closed. That is why you can run out of resourses with these two operating systems and have few programs running.

Long story short. It's good practice to determine how heap resourses are handled on the platform you are using and pay attention to those API's that will relinquish memory to operating system and/or coalesce fragmented segments while program is running.

If you have the oportunity to look at Linux man pages and sources that will give you a real good understanding how modern operating system handles memory.

Tight_Coder_Ex 17 Posting Whiz in Training

Any other suggestions I would have are related to my personal preference as to coding style which isn't really realative to your situation. Generally the body of your application is sound or at least it achieves the objective. All you have to do now is add the part where holdPhrase is modified dependant upon users input.

Tight_Coder_Ex 17 Posting Whiz in Training

I don't think you'll find anyone here that will provide you with code right from scatch without you showing any effort at all. Post what you think you should do (your code), and I'm sure you'll find lot's of help from that point.

Tight_Coder_Ex 17 Posting Whiz in Training

Pointers and arrays of pointers are always problematic to understand, hopefully these changes will clarify for you.

#include <iostream>
using namespace std;
 
char *tarray [] = {"Alpha","Bravo","Charlie","Delta","Echo","Foxtrot","Gulf","Hotel",
"India","Juliet","Kilo","Lima","Mike","November","Oscar","Papa",
"Quebec","Romeo","Sierra","Tango","Uniform","Victor","Wiskey","X-Ray",
"Yankee","Zulu"};
 
int main (void)
{
char phrase [80], holdPhrase [80], letter;
 
cout << "Enter Phrase: ";
cin.getline (phrase, 79);
int sizeOfPhrase = strlen (phrase);
 
for (int x = 0; x < sizeOfPhrase; x++)
{
if (phrase [x] == ' ')
holdPhrase [x] = ' '; else holdPhrase [x] = '-';
}
holdPhrase [x] = 0;
 
cout << holdPhrase << endl;
 
do
{
cout << "Enter letter please: ";
cin >> letter;
cout << tarray [(letter & 0x5f) - 'A'] << endl;
 
cout << "Again: ";
cin >> letter;
} while ((letter &0x5f) == 'Y');
 
return 0;
}

In your example you never used tarray, so I assume I have it in the right place. You can replace

letter & ox5f;
toupper (letter);

either converts input to uppercase.

Tight_Coder_Ex 17 Posting Whiz in Training

It appears the problem is not with the code but rather the calculation of the offset "Total" or the position you eventually end up at in the file. Maybe OutputFile.seekp(Total,ios::cur); would solve the problem. Without seeing the contents of your file and associated code in its entirety it's really difficult to tell.

Tight_Coder_Ex 17 Posting Whiz in Training

As defined in stdlib.h and malloc.h

free (q);

will do the trick. Assure only pointers that were created with malloc, calloc or realloc are passed to free (), otherwise other calls to get memory may have unpredictable results.

Tight_Coder_Ex 17 Posting Whiz in Training

Fortunately all data is numeric, string or otherwise. Therefore casting a single element of SSN to int allows you to add that single byte to an integer as if it were original an integer.

#include <iostream>
using namespace std;

int main()
     {
     int Result, Pntr;
     string SSN = "112226666";
     Result = Pntr = 0;

     while (SSN [Pntr])
     Result += (int) SSN [Pntr++];


     cout << Result << endl;
     return 0;
     }
Tight_Coder_Ex 17 Posting Whiz in Training

It looks as though you code is written for MASM Microsofts assembler.

Absolutely, you can write an operating system using entriely assembly. Linux however has 95% of it written in "C", and even though I've never had the oportunity to look at other operating systems sources like Linux I would imagine they are too.

As a matter of fact at http://www.menuetos.org/ is a complete operating system written using flat asm that you may be interested in.

Tight_Coder_Ex 17 Posting Whiz in Training

Here is an example that addresses theory of opertion. NOTE: not done in pure C++, especially as it pertains to cout, so don't use for an assignment.

I choose to use float instead of int, only in so much as it provides a greater level of precision.

#include <iostream>
using namespace std;
 
char *Prompt = "\n\n\t\t[P] Percent\n\t\t[A] Amount\n\t\t[B] Base\n\t\t[Q] Quit\n";
 
int main()
{
char Selection;
float Ratio, Amount, Base;
 
cout << Prompt;
 
do
{
cout << "\n\n\t\tSelect [ ]\b\b";
cin >> Selection;
cout << endl << "-------------------------------" << endl;
 
switch (Selection & 0x5f)
{
case 'P':
	cout << "\t\tAmount: ";
	cin >> Amount;
	cout << "\t\t Base: ";
	cin >> Base;
	cout << "\t\t\t" << (Amount / Base) * 100 << "%" << endl;
	break;
 
case 'A':
	cout << "\t\tPercentage: ";
	cin >> Ratio;
 
	if (Ratio > 1)
	 Ratio /= 100;
 
	cout << "\t\t	 Base: ";
	cin >> Base;
	cout << Base * Ratio << endl;
	break;
 
case 'B':
	cout << "\t\tPercentage: ";
	cin >> Ratio;
 
	if (Ratio > 1)
	 Ratio /= 100;
 
	 cout << "\t\t	Amount:";
	 cin >> Amount;
	 cout << "\t\t" << Amount / Ratio << endl;
	 break;
 
case 'Q':
	Selection = 0;
	break;
 
default:
	cout << "Invalid Funciton, Please select again" << endl;
	break;
}
 
} while (Selection != 0);
 
cout << "\n\n\nThank-you, Good-bye" << endl;
return 0;
}

A good exercise would be to clean up output using C++ qualifiers and eliminate redundancy "if (Ratio > 1)".

Tight_Coder_Ex 17 Posting Whiz in Training

That happens everywhere.

I thought so, but wanted to qualify as I've have no means by which to verify using Borland, g++ or anything else.

it only makes sense that the call should fail.

I was surprised though that based on the aforementioned code that once I entered 'n' at the percentage prompt that "cin" fell through the other two prompts.

(1) Do you know why this is?

(2) How would one code appropriately to circumvent. I assume by flushing the input buffer before next call to cin.

Tight_Coder_Ex 17 Posting Whiz in Training

Although

if (percent == 'n')

is not incorrect, it is unusual though to compare a char against an int. In this case the only way this would be true if you entered 110 as lower case n has that value.

Change your conditionals so you are comparing against numeric values

if (percent == 0)

Also with VC++

cin >> percent;

and then entering a character sends my system into a tailspin after entering that at the precentage prompt.

Tight_Coder_Ex 17 Posting Whiz in Training

I'm not at my own computer so I can't test the code, but the idea is to steer you in the right direction anyway. If you have the pro version of VC++ have a look at the disassembled code. You'll see why I let the switch statements fall through the way I do. In any event, trace through step by step and you'll see the logic.

The switch statements you constructed are not wrong, it's just they generate a little more code than necessary.

int CHexcalcDlg::ConvertHexToDec(CString str) 
{
	int number = 0;
	int length = str.GetLength();
 
	for (int i = 0; i < length; i++)
	{
		number <<= 4;			 // Shift bits left 4 times (Number * 16)
		char value = str[i] & 0x5f;
 
		switch(value)	 // Get character and convert to uppercase
		{
		case '0':
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
		 Number += int (value) & 15;
		 break;
 
		case 'A':
		case 'B':
		case 'C':
		case 'D':
		case 'E':
		case 'F':
		 Number += int (value & 15) + 9;
		 break;
 
		default:
			AfxMessageBox("Invalid character");
		}
	}
	return number;
}
Tight_Coder_Ex 17 Posting Whiz in Training

*wonders if it would work*
No, it wouldn't.

I beleive you're referring to code. If so, what about it won't work. The only thing I could see in the last snippet was it's not really necessary to enclose the set of conditionals in a statement block.

Tight_Coder_Ex 17 Posting Whiz in Training

I'd like to point out that these solutions are no better or worse than anyone elses, but rather a demonstration of different ways to solve the problem and still get the same result.

char get_letter_grade (int grade_num) 
{
char Result;
 
switch (grade_num / 10)
	{
	case 10:
	case 9:
	 Result = 'A';
	 break;
 
	case 8:
	 Result = 'B';
	 break;
 
	case 7:
	 Result = 'C';
	 break;
 
	case 6:
	 Result = 'D';
	 break;
 
	default:
	 Result = 'F';
	}
 
return Result;
}

or Needs tweeking if grade is 100 or less then 60

char get_letter_grade (int grade_num)
 
{
return ((10 - (Grade / 10)) + 64);
}
Tight_Coder_Ex 17 Posting Whiz in Training

DISREGUARD, You are using iostream and I'm not sure how that works with strings.

You can't compare strings the way you do.

while (strcmp (filename, "quit") != 0)

I think that should solve your problem.

Tight_Coder_Ex 17 Posting Whiz in Training

try

((x + ~y) >> 31) & 1
Tight_Coder_Ex 17 Posting Whiz in Training

For what language(s) is single a type?

Sure, let's have a party. Mix a little VB with C++ maybe some HTML too. Sorry klmbrt. Bad enough learning something new without having the issue confused. Single is a data type of VB. Any place I used single, replace with float.

Tight_Coder_Ex 17 Posting Whiz in Training

But the thing is that it has to be cross-platform and I just do not want to support Microsoft.

I may be mistaken, but if you're going to interface with an Access database you'll probably be using Jet 3.6 which kills any idea of being cross platform. Maybe investigate another forum about databases and see what options are avalible for cross platfrom drivers.

Otherwise C++ will work and as a matter of fact MFC is probably as easy to use as VB

Tight_Coder_Ex 17 Posting Whiz in Training

single, double, float, int, short, long are all type specifiers so in the example

single Ratio =

The specifier single tells the complier Ratio is a single precision value. You may be accustomed to seeing

single Ratio;
 
Ratio = (single (Answer) / single (Pos)) * 100;

Most often within a statement block I'll combine the declration with statement

Tight_Coder_Ex 17 Posting Whiz in Training

doesn't seem to work with ADODC
do you have anything else?

Sorry, 90% of my work is done in assembly and the other in C++. DAO is the only thing I've ever used with VB

Tight_Coder_Ex 17 Posting Whiz in Training

Get rid of Norton, it causes nothing but problems. Losing your mouse is the least of them.

Tight_Coder_Ex 17 Posting Whiz in Training

I'm not sure I understand the line:
single Ratio = (single (Answer) / single (Pos)) * 100

The method here is referred to as typecasting. In this case if you were to divide 19 by 21 lets say and leave them as integers you would get 0. Actually as integers anything other than 21 would yeild 0. You must coherse them to singles first and then the result will be .9047 multiplied by 100 you get 90.47%. I could have declared Answer & Pos as singles to begin with, but this causes unnecessary overhead for code as singles are not the natural data type for X86 CPU's

Tight_Coder_Ex 17 Posting Whiz in Training

I gather it will be safe to assume students results will always start at position 10. This is just one example of how it can be done.

char *Answer = &str [9];
int Pos = 0, Correct = 0;
 
str [8] = 0;							 // Terminator at end of Students ID
 
while (Answer [Pos]) {			 // This will look after terminating at end of string
	if (Answer [Pos] == ' ') continue; // Ignore blanks in input
	if (Answer [Pos] == a[Pos]) Correct++; // Increment on match
	Pos++;
}
 
single Ratio = (single (Answer) / single (Pos)) * 100
cout << str << " " << Answer << " " << Ratio << endl;

There are many variations of this same method and there may even be better ones. Simply, think about the application conceptually (how you would calcuate the result manually) and then code accordingly.

Tight_Coder_Ex 17 Posting Whiz in Training

By sounds of things you've sort of headed in the right direction with strcmp, and your ideas may not be as bad as you think. Give us an example of what you've come up with so far and take if from there.

Remember to enclose code using code tags.

Tight_Coder_Ex 17 Posting Whiz in Training

Got it. I'm going to experiment what will happen by calling without scoping and referencing ref_count as a.ref_count etc.

I still don't see a practical way I can use this, but your example makes it crystal so if I elect to do so I shouldn't have any problems.

Tight_Coder_Ex 17 Posting Whiz in Training

kimfalk posed a question about static functions in a class in http://www.daniweb.com/techtalkforums/thread19241.html to which my reponse was duly correct by

You're mixing up your statics. :) static is overloaded for too many different uses. In a class declaration, static means that the name belongs to the class and not to individual objects. In a function definition, static means that the variable being declared has static storage duration. In the global scope, static is a deprecated feature that forces internal linkage.

Of 262 pages of text devoted to the subject of classes in C++ Primer Plus, I somehow missed the two paragraphs that were devoted to this topic.

I'm assuming the lack of attention is due to unlikelyhood of use, but would appreciate a practical example that is not taken from any theoretical text. To me it seems somewhat analogous to declaring all variables public, defeating the purpose of encapsulation to begin with and OOP as a whole.

Tight_Coder_Ex 17 Posting Whiz in Training

Don't use static in a public class member. Public means it's accessable to the outside world, but static limits it too the segment of code where you've declared it. If you want to hide it from other peices of code put it in a protected or private section of the class.

Tight_Coder_Ex 17 Posting Whiz in Training

Linked lists are very simple. Take for example a doubly linked list, it has a pointer to the previous item and one to the next. I use -1 or 0xffffffff to indicate the item is either at the begining or end of the list. Each time you insert a new element you just change the pointers so they keep the list ordered.

As Dave Sinkula has eluded too, post some code so whomever helps you has some idea where to start. Google "linked lists" and I'm sure you'll get lots of detailed information on how a list works, not necessarily associated code but there may be some breif examples.

Tight_Coder_Ex 17 Posting Whiz in Training

struct node
{
int i;
char c;
};

struct node list[] =
{
{1,'A'},{2,'B'},{3,'C'},{4,'D'},{5,'E'},{6,'F'},{7,'G'},{8,'H'},{9,'I'},
};

struct node *plist[] =
{
&list[0], &list[2], &list[4], &list[6], &list[8],
&list[1], &list[3], &list[5], &list[7],
};

Nice Dave, I've been asked this question quite a bit and have never though of putting it together in this context

Tight_Coder_Ex 17 Posting Whiz in Training

In <stdio.h> you can use fseek to move to the end of the file and then use ftell to see where you are at, then fseek to move you to the begining again.

If you are using windows GetFileSize (handle). This method doesn't require you to move to be begining of the file as in the previous method.

<iostream> also provides you with similar methods, but I don't know those right off.

Tight_Coder_Ex 17 Posting Whiz in Training

All you have to do is move or more specifically code appropriately in Vend::Vend (default constructor) the values you want in fasm. This is how variables are initialized in a class, like int value [1][2] = {4, 8}; would be too code.

Tight_Coder_Ex 17 Posting Whiz in Training

I'm not sure how similar ADODC is to DAO, but this is what I've used in the command buttons click event

Dim Sql as String
 
Sql = "SELECT * FROM Table WHERE Str = '" & txtInputBox & "'"
Set Rs = Db.OpenRecordset (Sql)

Table, txtInputBox are my substitutions, I think you'll understand how you apply to your table and text box.

This it's just a matter of cycling through the records returned by Rs and populate whatever text, list or combobox or whatever.

Tight_Coder_Ex 17 Posting Whiz in Training

However, I would caution that this community is built fundamentally around your personality Dani

I agree 100%. No matter how the hierarchy of the forum reshapes itself which is inevitable, so long as your signature prevails right or wrong that is what is important.

I'd like to thank you for those of us, or at least me that eat, breath and sleep computers a means by which to exchange ideas and information with other like minded people.:D

Tight_Coder_Ex 17 Posting Whiz in Training

I code all my Windows applications in ASM and have posted several snippets in the "asm" area that may be of some help to you.

I use NASM, but MASM and the linker and resource compiler you are using will work just as well.