Command buttons do not have values, so you should not use SetCtrlVal or GetCtrlVal.
Use SetCtrlAttribute and GetCtrlAttribute with the ATTR_LABEL_TEXT attribute to set and get the string displayed on the button.
Use GetCtrlAttribute with the ATTR_LABEL_TEXT_LENGTH attribute to determine the size of the buffer needed to get the button label. Keep in mind that GetCtrlAttribute appends a NULL byte to the end of the text string, so you must make the buffer 1 byte larger than the value obtained using ATTR_LABEL_TEXT_LENGTH.