Hmmm, missing namespaces was my best guess.
It should be declared in the header file as a member of the class inheriting System::Windows::Forms::Form.
Code:
private: System::Windows::Forms::Button^ btnfunction;
I still think I might be able to guess the problem if you give the exact compiler error
btnfunction is an argument to the function so surely it can only be undefined if the compiler is unable to figure out the type. It's not like you're trying to access it directly.
If there's something wrong with the declaration, then presumably if you try to use the same code to change the text within the .h fine in the Click handler, it'll still fail. Should be an easy way to verfiy your declarations are correct.
I don't know anything first hand about MFC, but I didn't think it was a 3d app targetted thing. I thought it was just a GUI library. I'd guess that the learning curve and experience is probably fairly similar between MFC and CLI. I've no idea how you'd choose between them, but a quick google for "mfc or cli" has plenty of hits.