|
I'm not an advanced programmer, but I thought having SOME reply is better than nothing...
I get your behavior sometimes and often it's because the number/label of your ID (ID_RADIO_REMOFF) is not in sync with other parts of the code (dialog designer), so ensure that all these references match.
Also, I believe that the DDX stuff is for moving data between a control and a simple data variable (e.g., int, CString, etc.), so it seems odd to me that there needs to be an exchange of data between your dialog control and your local variable that points to that control.
thanks,
JennyP
|
|
|
|
|
First of all, I want to thanks that you spend your time to read my problem.
I have three classes in my program. Student is the base class. Graduate is derivated from Student class. studentDB is a class that includes both Student and Graduate class.
I use a STL container to save the data which could be Student or Graduate .
When I save data to an outfile, I got a problem. Visual C++ shows me a message below.
'show_thesis_topic' : is not the member of 'student'.
I know I can fix the problem if I create a Graduate class instead of Student class.
But I just want to know have any idea that I can also use to fix the problem.
Thanks your help. Bless you.
//Student.h
#ifndef __STUDENT
#define __STUDENT
class student //I define regular a student information here.
{
public:
void set_lastname(std::string );
void set_firstname(std::string );
void set_ssn(std::string );
void set_age(int);
void set_phone(std::string );
std::string show_lastname();
std::string show_firstname();
std::string show_ssn();
int show_age();
std::string show_phone();
std::string show_type_of_student();
void set_type_of_student(std::string);
virtual void display();
private:
std::string lastname;
std::string firstname;
std::string ssn;
int age;
std::string phone;
std::string type_of_student;
};
#endif
//student.cpp
#include <iostream>
#include <string>
#include <iomanip>
#include "student.h"
using namespace std;
//--------------------------------------------------------------------------------
// The following functions declare for the class of student.
//--------------------------------------------------------------------------------
void student::display() //the function will printout the student information out to screen.
{
cout << "\tStudent Data:\n";
cout << "\t\tSSN: " << ssn << endl;
cout << "\t\tLast Name: " << lastname << endl;
cout << "\t\tFirst Name: " << firstname << endl;
cout << "\t\tPhone Number: " << phone << endl;
cout << "\t\tAge: " << age << endl;
}
std::string student::show_lastname()
{
return lastname;
}
std::string student::show_firstname()
{
return firstname;
}
std::string student::show_ssn()
{
return ssn;
}
int student::show_age()
{
return age;
}
std::string student::show_phone()
{
return phone;
}
std::string student::show_type_of_student()
{
return type_of_student;
}
void student::set_lastname(std::string text)
{
lastname=text;
}
void student::set_firstname(std::string text)
{
firstname=text;
}
void student::set_ssn(std::string text)
{
ssn=text;
}
void student::set_age(int number)
{
age=number;
}
void student::set_phone(std::string text)
{
phone=text;
}
void student::set_type_of_student(string text)
{
type_of_student=text;
}
//Graduate.h
#include "student.h"
#ifndef __GRADUATE
#define __GRADUATE
class Graduate: public student // I define extra information for a graudate student
{
public:
std::string show_thesis_topic();
void set_thesis_topic(std::string);
std::string show_adviser();
void set_adviser(std::string);
void display();
private:
std::string thesis_topic;
std::string adviser;
};
#endif
//Graduate.cpp
#include <iostream>
#include <string>
#include <iomanip>
#include "Graduate.h"
using namespace std;
void Graduate::display()
{
cout << "\tGraduate Data:\n";
cout << "\t\tSSN: " << student::show_ssn() << endl;
cout << "\t\tLast Name: " << student::show_lastname() << endl;
cout << "\t\tFirst Name: " << student::show_firstname() << endl;
cout << "\t\tPhone Number: " << student::show_phone() << endl;
cout << "\t\tAge: " << student::show_age() << endl;
cout << "\t\tThesis: " << thesis_topic << endl;
cout << "\t\tAdvisor: " << adviser << endl;
}
void Graduate::set_adviser(string text)
{
adviser=text;
}
void Graduate::set_thesis_topic(string text)
{
thesis_topic=text;
}
string Graduate::show_adviser()
{
return adviser;
}
string Graduate::show_thesis_topic()
{
return thesis_topic;
}
//StudentDB.h
#include "student.h"
#include "Graduate.h"
#include <list>
#ifndef __STUDENTDB
#define __STUDENTDB
class student_db
{
public:
// add a regular student to the database – return true if successful, false otherwise
bool add_Student(std::string , std::string , std::string , int , std::string);
// add a graduate student to the database – return true if successful, false otherwise
bool add_Graduate(std::string , std::string , std::string , int , std::string , std::string , std::string );
// delete student with a particular social security number – return true if successful
// and false otherwise
bool delete_Student(std::string);
// display the data for student if present in the database – otherwise error message
void display_Student(std::string);
// display data for ALL the student in the database
void display_all();
// read data from disk - return true if data exist, false otherwise.
bool read_data(std::string,std::string);
// The function will write out a table of students.
void write_result();
// The function will return a value that showing how many records in database.
int how_many_record();
student_db();
~student_db();
private:
// The function will return true if find student in list, false otherwise
bool searchSSN(std::string);
std::ifstream Openfile;
std::ofstream Savefile;
std::string input_filename; //input_filename record the inputfile name.
std::string output_filename; //output_filename record the outfilename;
int how_many_data;
std::list<student *> database;
};
#endif
//StudentDB.cpp
#include <iostream>
#include <string>
#include <list>
#include <fstream>
#include <iomanip>
#include "studentDB.h"
using namespace std;
// The function will return a value that showing how many records in database.
int student_db::how_many_record()
{
return how_many_data;
}
// add a regular student to the database – return true if successful, false otherwise
bool student_db::add_Student(string ssn, string lastname, string firstname, int age, string phone)
{
if(!searchSSN(ssn)) //if the SSN cann't find in the array, saving a new record to the array.
{
student *temp_student=new student();
temp_student->set_type_of_student("Student");
temp_student->set_ssn(ssn);
temp_student->set_lastname(lastname);
temp_student->set_firstname(firstname);
temp_student->set_age(age);
temp_student->set_phone(phone);
database.push_front(temp_student);
return true;
}
else
return false;
}
// add a graduate student to the database – return true if successful, false otherwise
bool student_db::add_Graduate (string ss, string last, string first, int age, string ph, string th, string ad)
{
if(!searchSSN(ss)) //if the SSN cann't find in the array, saving a new record to the array.
{
Graduate *temp_student=new Graduate();
temp_student->set_type_of_student("Graduate");
temp_student->set_ssn(ss);
temp_student->set_lastname(last);
temp_student->set_firstname(first);
temp_student->set_age(age);
temp_student->set_phone(ph);
temp_student->set_adviser(ad);
temp_student->set_thesis_topic(th);
database.push_front(temp_student);
return true;
}
else
return false;
}
// delete student with a particular social security number – return true if successful
// and false otherwise
bool student_db::delete_Student(string ssn)
{
bool is_found=false;
list<student *>::iterator database_list;
database_list=database.begin();
if(searchSSN(ssn))
{
while (!is_found && database_list != database.end())
{
if ((*database_list)->show_ssn()==ssn)
is_found = true;
else
database_list++;
}
}
if(is_found) //if the index number is not -1, the program will start remove a record.
{
delete *database_list; // return storage for the car to heap
database.erase(database_list);
return true;
}
else
return false;
}
// display the data for student if present in the database – otherwise error message
void student_db::display_Student(string ssn)
{
if(searchSSN(ssn))
{
bool is_found=false;
list<student *>::iterator database_list;
database_list=database.begin();
while (!is_found && database_list != database.end())
{
if ((*database_list)->show_ssn()==ssn)
is_found = true;
else
database_list++;
}
if(is_found)
{
(*database_list)->display();
}
}
else
cout << "Student with ssn: " << ssn << " NOT found\n";
}
// display data for ALL the student in the database (using dynamic binding)
void student_db::display_all()
{
list<student *>::iterator database_list;
database_list=database.begin();
{
while(database_list!=database.end())
{
if((*database_list)->show_type_of_student()!="Graduate")
cout << setw(10) << (*database_list)->show_lastname() << setw(10) << (*database_list)->show_firstname() << setw(16) << (*database_list)->show_ssn() << setw(18) << (*database_list)->show_phone() << setw(7) << (*database_list)->show_age() << endl;
else
//-----------------------------------------------------------------
// This is the place where I got the problem.
//
//-----------------------------------------------------------------
cout << setw(10) << (*database_list)->show_lastname() << setw(10) << (*database_list)->show_firstname() << setw(16) << (*database_list)->show_ssn() << setw(18) << (*database_list)->show_phone() << setw(7) << (*database_list)->show_age() << setw(7) << (*database_list)->show_thesis_topic << setw(7) << (*database_list)->show_advise() << endl;
database_list++;
}
}
cout << endl;
}
student_db::student_db()
{
how_many_data=0;
}
student_db::~student_db()
{
Savefile.close();
Openfile.close();
}
// The function will write out a table of students
void student_db::write_result()
{
/*
list<student *>::iterator database_list;
database_list=database.begin();
{
while(database_list!=database.end())
{
if((*database_list)->show_type_of_student!="Graduate")
Savefile << setw(10) << (*database_list)->show_lastname() << setw(10) << (*database_list)->show_firstname() << setw(16) << (*database_list)->show_ssn() << setw(18) << (*database_list)->show_phone() << setw(7) << (*database_list)->show_age() << endl;
else
Savefile << setw(10) << (*database_list)->show_lastname() << setw(10) << (*database_list)->show_firstname() << setw(16) << (*database_list)->show_ssn() << setw(18) << (*database_list)->show_phone() << setw(7) << (*database_list)->show_age() << setw(7) << (*database_list)->show_thesis_topic() << setw(7) << (*database_list)->show_advise() << endl;
database_list++;
}
}
Savefile << endl;
*/
}
// The function will return true if find student in list, false otherwise
bool student_db::searchSSN(string ssn)
{
bool is_found=false;
list<student *>::iterator database_list;
database_list=database.begin();
while (!is_found && database_list != database.end())
{
if ((*database_list)->show_ssn()==ssn)
is_found = true;
else
database_list++;
}
return is_found;
}
// read data from disk - return true if data exist, false otherwise.
bool student_db::read_data(string in_filename, string out_filename)
{
Openfile.open(in_filename.c_str());
if(Openfile==NULL) //IF FILE DOES NOT EXIST, finish the function.
{
return false;
}
else // executing this scope if the file exist
{
Savefile.open(out_filename.c_str());
input_filename=in_filename; //recording a name of the inputfile to filename[0]
output_filename=out_filename; //recording a name of the outputfile to filename[1]
string temp_use; //the variable will save a string that read from inputfile for temp.
int temp_int_use; //the variable will save a integer that read from inputfile for temp.
while(!Openfile.eof()) //leaving for loop if there is nothing in the file.
{
Openfile >> temp_use;
if(Openfile==NULL)
break;
if(temp_use!="Graduate") //if the data that reads from the input file is belong Graduate, creating a graduate object, otherwise a student object.
{
student *temp_student=new student(); //creating a new student class to save each record that read from an input file.
temp_student->set_type_of_student(temp_use);
Openfile >> temp_use;
temp_student->set_lastname(temp_use);
Openfile >> temp_use;
temp_student->set_firstname(temp_use);
Openfile >> temp_use;
temp_student->set_ssn(temp_use);
Openfile >> temp_use;
temp_student->set_phone(temp_use);
Openfile >> temp_int_use;
temp_student->set_age(temp_int_use);
database.push_front(temp_student);
how_many_data++;
}
else
{
Graduate *temp_student=new Graduate(); //creating a new student class to save each record that read from an input file.
temp_student->set_type_of_student(temp_use);
Openfile >> temp_use;
temp_student->set_lastname(temp_use);
Openfile >> temp_use;
temp_student->set_firstname(temp_use);
Openfile >> temp_use;
temp_student->set_ssn(temp_use);
Openfile >> temp_use;
temp_student->set_phone(temp_use);
Openfile >> temp_int_use;
temp_student->set_age(temp_int_use);
Openfile >> temp_use;
temp_student->set_thesis_topic(temp_use);
Openfile >> temp_use;
temp_student->set_adviser(temp_use);
database.push_front(temp_student);
how_many_data++;
}
}
return true;
}
}
//Main program
#include <iostream>
#include <fstream>
#include <string>
#include "studentDB.h"
using namespace std;
int main()
{
cout << "\tSTUDENT DATABASE PROGRAM\n";
string filename[2]; //declare an array to save a input filename and a output filename;
cout << "\tEnter input file name: ";
cin >> filename[0];
cout << "\tEnter output file name: ";
cin >> filename[1];
student_db database;
if(database.read_data(filename[0],filename[1]))
{
cout << "\tData for " << database.how_many_record() << " students was read into the database…\n";
bool should_I_leave=false;
char command; //The variable will save the command that user choose.
string temp_info[6];
int temp_age;
while(!should_I_leave) //When user type Q or q will leave loop.
{
cout << "Enter command (A -> add, R -> remove, D -> display, S -> show all, Q -> quit): ";
cin >> command;
switch (command)
{
case 'A': case 'a':
cout << "\t\tWhat type of Student (r/R regular; g/G graduate): "; // If the user chooses r, the program will call add_Student function. If the user chooses g, the program will call add_Graduate function.
cin >> command;
switch (command)
{
case 'R': case 'r':
cout << "\t\t\tEnter social security number: ";
cin >> temp_info[0];
cout << "\t\t\tEnter last name: ";
cin >> temp_info[1];
cout << "\t\t\tEnter first name: ";
cin >> temp_info[2];
cout << "\t\t\tEnter age: ";
cin >> temp_age;
cout << "\t\t\tEnter phone: ";
cin >> temp_info[3];
if(database.add_Student(temp_info[0],temp_info[1],temp_info[2],temp_age,temp_info[3]))
cout << "\t\tStudent added!\n";
else
cout << "\t\tStudent with ssn: " << temp_info[0] << " already exist!\n";
break;
case 'G': case 'g':
cout << "\t\t\tEnter social security number: ";
cin >> temp_info[0];
cout << "\t\t\tEnter last name: ";
cin >> temp_info[1];
cout << "\t\t\tEnter first name: ";
cin >> temp_info[2];
cout << "\t\t\tEnter age: ";
cin >> temp_age;
cout << "\t\t\tEnter phone: ";
cin >> temp_info[3];
cout << "\t\t\tEnter thesis: ";
cin >> temp_info[4];
cout << "\t\t\tEnter advisor: ";
cin >> temp_info[5];
if(database.add_Graduate(temp_info[0],temp_info[1],temp_info[2],temp_age,temp_info[3],temp_info[4],temp_info[5]))
cout << "\t\tStudent added!\n";
else
cout << "\t\tStudent with ssn: " << temp_info[0] << " already exist!\n";
break;
}
break;
case 'D': case 'd':
cout << "\tEnter ssn of student to display: ";
cin >> temp_info[0];
database.display_Student(temp_info[0]);
break;
case 'R': case 'r':
cout << "\tEnter ssn of student to delete: ";
cin >> temp_info[0];
if(database.delete_Student(temp_info[0]))
cout << "\t\tStudent deleted!\n";
else
cout << "Student with ssn: " << temp_info[0] << " NOT found!\n";
break;
case 'S': case 's':
database.display_all();
break;
case 'Q': case 'q':
cout <<"Leaving the main loop\n";
cout <<"\tWritten output to " << filename[1] << endl;
database.write_result();
should_I_leave=true;
break;
}
}
}
else
{
cout << "the name of the file does not exist\n";
}
cout << "Exiting database Program…\n";
return 0;
}
|
|
|
|
|
Before trying to output data related to a Graduate you need to first try to convert the base student pointer (in list) to a Graduate pointer. You do that by trying to cast it using dynamic_cast, if it fails it is not a Graduate.
// output data common to all students
...
// try to cast student pointer to Graduate pointer
Graduate* pG = dynamic_cast<graduate*>(pStudent);
if( pG ) // if Graduate
{
// output data of graduate students
cout<<pg->show_thesis_topic();
}
// finish up
...
I beleive that is what you are looking for.
P.S. You did not need to post evey thing, only enough to show the problem.
(Pesonaly I ignored the rest).
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
i never got to understand the way you can hook a window function like CopyFileA or RegSetValueW for exmple. can someone explain it to me or give me some good site where I can read more about this. I would be veru greatful. I want to know how to it without drivers for now.
Thank you
gabby
|
|
|
|
|
If there is away to hook a function, I have never heard of it. I can think of a few ways this might be accomplished, but it would take a lot of reaserch (and the system security should object to that level of interference).
Hooks are away of intercepting messages being sent from one place to anouther. You can redirect the messages, stop them from being proccessed or allow them to be pass on to there inteneded target.
What you probaly are looking for is articles on hooking in windows. There are several articles at CP and probably at CodeGuru.com. There is also a number of articles on drawing menues and etc... that use hooks to redirect messages to there own drawing code.
I hope that helps!
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
|
On Windows XP and others it is possible to sign on without a user name or password. Is the default user name always default or can it contain another value?
Thanks
"Naked we come and bruised we go."
- James Douglas Morrison
Best Wishes,
ez_way
|
|
|
|
|
BaldwinMartin wrote:
On Windows XP and others it is possible to sign on without a user name or password.
Not if the adiminstrator has set it up to disallow it.
BaldwinMartin wrote:
Is the default user name always default or can it contain another value?
No and Yes! It is up to the administrator.
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
I have this problem, im used to doing winsock program in vb, when i create multiple connection in vb, i just create an array of it, i tried doing this in c++/win32api the problem is, when a connection connected to certain
socket[index] closes i have no idea which socket it is. coz i have no idea how to retreive the index of the socket that got the disconnection. does anyone know a way to know which socket got the disconnection?
I have no idea
|
|
|
|
|
I don't but it might help if you gave two very short code examples. That is give one example of how you do it in VB and one example of how you are doing it in C++. That should provide enough information for someone to give a good answer (possibly even me).
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
///this is just a part of the code its kinda messy i just starting to learn c++/winapi.
SOCKET m_socket[chatter];
else if(msg==WM_SOCKET)
{
switch(WSAGETSELECTEVENT(lParam))
{
case FD_ACCEPT:
char socknum[30];
sprintf(socknum,"%d",sock);
strcat(socknum,"Connection Detected on socket ");
SendtoChat(socknum);
m_socket[sock]=accept(m_socket[0],NULL,NULL);
sock++;
break;
case FD_CLOSE:
SendtoChat("Closing Detected");
//closesocket(m_socket[1]);
break;
case FD_READ:
char str[1000];
memset(str,0,1000);int ctr=1;
while(ctr!=chatter)
{
recv(m_socket[ctr],str,sizeof(str),0);
ctr++;
}
ctr=1;
while(ctr!=chatter)
{
if(send(m_socket[ctr],str,sizeof(str),0)==SOCKET_ERROR)
{
}
ctr++;
}
SendtoChat(str);
//MessageBox(hwnd,str,"",MB_OK);
//free(str);
break;
}
--------
What i want to do is evrytime someone disconnects.. i wanna know which socket got the disconnection... so when soemone try to request connection i will know which index is available for connection and so i could give that index to the connection requesting.... i can just make a loop until it doesnt get an error to see if someone is connected to it or not but then i dont want it to be unorganized.... and another thing sometimes port scanners connects to a winsock program and fools the program for a legitimate connection so i want it to be more organize so i will know whch connection is legitimate or not
Maybe, is there a way to know if someone is connected to one socket?
I have no idea
|
|
|
|
|
What you try to do is implement yur own homemade connection pool, not an easy task if you are new to working with sockets.
The easiest way to make a program, like what it looks like you are doing, is using blocking sockets and use a new thread for each connection. When a client disconnect from the socket you just close it and ends the thread.
When a new client connect, you just spawn a new thread and talk to the client from that thread...
More advanced ways to do it (and faster and better) is to use async sockets...
Take a look at all the articles here on CP, there are plenty both simple samples and more advanced ones...
- Anders
My PhotosWDevs - The worlds first DSP, free blog space, email and more. Now also with forums
|
|
|
|
|
If you havn't yet, you might want to read the articles by Nishant (at CP) on Winsock including Multithreading.
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
Okay thnks to both ill try your suggestions
I have no idea
|
|
|
|
|
i need to run a big project including 3 little project .dll
and after to run an .exe file
|
|
|
|
|
dov you want to know how to run a exe from inside a dll
if yes use CreateProcess or ShellExecute or LoadModule . . . us eyour imagination
gabby
|
|
|
|
|
So, view may appear differently? I want to pass some parameter to view, these parameter is created at run time. So how can I pass them to view?
A way to work arround is save those parameter in Doc. But it looks not quite right. I hope I can create CView::CView( int A, int B ) there is CView::Cview() already. so when template create view, pass A and B to view, so CView::CView( int A, int B ) is called, instaed of CView::CView( ). I was stuck, Please help me out.
Thank you inadvance.
|
|
|
|
|
Storing it in the document does make since.
You can pass additional information to the veiw of a particular document via
OnUpdateAll(...,lHint,pHint). The lHint, argument can be long value (or a pointer value stored in a long). The pHint can be used if the addition information is stored in a CObject derive object.
Good Luck!
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
It would be easier to store it in document. In your view's OnDraw just call GetDocument() to get the document and then the parameter and simply write your drawing code depending on the parameter
|
|
|
|
|
wwwrabbit1 already knows how to do that but wanted another way (to pass information to CView object) to accomplish the same thing and that is what the hint parameters are for.
I personaly would contenue to store the information in the document, where it (probably) belongs.
What we do not know is what effect the information is supposed to have, other than they effect what is to be shown.
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
Hello!
I'm currently writing some application, that contains a class A. It loads a DLL and passes a pointer to A to the DLL. The DLL includes the header file of A.
Anyway, when I try to compile this, I get LNK2001: unresolved external symbol errors for all A class function calls...
When I include all *.obj files as library files in the DLL settings, it compiles. But it doesn't really execute the actual functions of the main application then, it just compiles the whole code again into the DLL. It shouldn't do this, it should just call the real functions of the main application.
What must I do that the DLL can execute the functions of A?
Thanks and best regards,
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
write 0xAD to port 0x64
oh wait...
pass a pointer to the function to the DLL.
I know of no "reverse export" mechanism.
we are here to help each other get through this thing, whatever it is Vonnegut jr. boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
So it's impossible? Isn't there some possibility of generating a .lib file of main app or something like that?
How can I write a plugin architecture then? The DLL must be somehow be able to execute class functions of the main app...
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
Wooo! It is more than possible! The person who has the information at the tip of his tong is just not online. If we have not done anything like that in a while, then we have to try to remember enough to figure it out (if we have the time to go through the trouble).
There are articles at CP on plugins, DLLs and COMM (also in the MSDN Library).
When I first read your post (ealier today) the first thing I thought about was callback functions, but that was not what you where asking about. If you can pass a callback function you can pass a class pointer. Heck we pass class pointers and references to DLLs all the time, otherwise we could not use MFC.
Your question is resonable and someone may yet answer it.
I am no expert on DLLs, so I did not try to figure out what the problem was.
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
The person who has the information at the tip of his tong is just not online.
Let's hope he'll get online soon
There are articles at CP on plugins, DLLs and COMM (also in the MSDN Library).
I've read most of them, but actually many of them are for C# only and the others for C++ never have the problem that the DLL wants to call something that is in the EXE. They'll just describe how to load and call a DLL, the DLL then does many things, like creating new windows, sending windows messages, etc. but never calls something of the EXE...
Thanks and best regards,
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|