How about this for an improvement:
1: Make the encode/decode functions take the key and text to encode/decode as string arguments, rather than ask for them inside the function.
Code:
        string enc(const string &key, const string &message);
        string dec(const string &key, const string &encoded);
I'm intentionally leaving the code inside those two member functions out, since I think it would be good practice to rewrite your function [it's actually pretty small changes].

This of course means that the code to read the key and message will have to move elsewhere - I changed main to look like this:
Code:
int main()
{
    Frame ob;
    int ch;
	int done = 0;
	char text[100];
	string key;
	string result;
	while(!done) 
	{
		cout<<"\n(1)Encrypt or (2)Decrypt?";
		cin>>ch;
		cin.ignore();

		switch(ch) 
		{
		case 1:
		    cout<<"\nInsert key... ";
			cin >> key;
			cin.ignore();
		        cout<<"\nEnter message.... ";
		        cin.getline(text,100);
			result = ob.enc(key, text);
			cout << "encrypted: \"" << result << "\"." << endl;
			break;
		case 2:
		    cout<<"\nInsert key... ";
			cin >> key;
			cin.ignore();
		        cout<<"\nEnter coded msg.... ";
		        cin.getline(text,100);
		        result = ob.dec(key, text);
			cout << "decrypted: \"" << result << "\"." << endl;
			break;
		case 0:
			done = 1;
			break;
		}
	}
    return 0;
}
2: Use modulo to calculate the current key-character:
Code:
            k=i % keylen;
            srchk=tolower(key[k]);
This replaces this code:
Code:
            k=i;
            if(i>keylen)
                        k=0;
            srchk=tolower(key[k]);
It is shorter and more succinct, but on the other hand, it takes a few more clock-cycles (because it uses divide, which is one of the "worst" instructions you can give to any processor).

On the other hand, this change cleans up the class and perhaps gives a (slight) performance enhancement: Move these variable declarations of these things back into the enc/dec functions:
Code:
	int keylen, msglen, arow, bcol, k;
	char srchk, srchm;
There is no need for them to be part of the class, and if you are unlucky, the code will be slower because the compiler has to access them through the "this" pointer, and certainly, the compiler can't be as agressive when it comes to not storing the final result of these. This is particularly meaningless as enc/dec never use the value from one call to another, so there's absolutely no need to store back any of it into the class - but it's very hard for the compiler to figure that part out, since the compiler doesn't quite follow all that.

A class should only have member components that NEED to be in the class for it's functionality. Temporary variables that are only used within a member function shouldn't be part of the class.

[And the above change to add parameters to enc/dec means that key, message and encoded should also be removed from the class].


--
Mats