Здравствуйте edvin, Вы писали:
E>Здравствуйте у меня такая беда: использую функцию
E>#define BUF_SIZE 50
E>char buf[BUF_SIZE];GetDlgItemText(hDlg, IDD_USER_NAME, buf, BUF_SIZE); //а потом
Может попробовать char* buf=new char[BUF_SIZE]
E>file = fopen( file_name, "w" );
E>fputs( buf, file );
E>fclose( file );
E>в результате вадается ошибка
E>warning C4133: 'function' : incompatible types — from 'char [50]' to 'unsigned short *' на строку с функцией.В help написано что buf это указатель (Pointer to the null-terminated string that contains the text to be copied to the control), тогда вопрос как достать оттуда текст.
Здравствуйте edvin, Вы писали:
E>Здравствуйте у меня такая беда: использую функцию
E>#define BUF_SIZE 50
E>char buf[BUF_SIZE];GetDlgItemText(hDlg, IDD_USER_NAME, buf, BUF_SIZE); //а потом
E>file = fopen( file_name, "w" );
E>fputs( buf, file );
E>fclose( file );
E>в результате вадается ошибка
E>warning C4133: 'function' : incompatible types — from 'char [50]' to 'unsigned short *' на строку с функцией.В help написано что buf это указатель (Pointer to the null-terminated string that contains the text to be copied to the control), тогда вопрос как достать оттуда текст.
UINT GetDlgItemText(
HWND hDlg, // handle to dialog box
int nIDDlgItem, // control identifier
LPTSTR lpString, // pointer to buffer for text
int nMaxCount // maximum size of string
);
— определена в доке так. А это — так:
LPTSTR A 32-bit pointer to a character string that is portable for Unicode and DBCS
Когда пишет, что 'unsigned short*', это значит, что требуется юникодная строка. Проверь, не собираешься ли ты часим в юникодной конфигурации, или не определен ли у тебя где-нибудь часом макрос _UNICODE.
С уважением
Насчет char* buf=new char[BUF_SIZE] пробовал не проходит
А насчет UNICODE признаться не знаю, вообще говоря это не ошибка а Warning но в файл пишется только первая буква логина,
дело в том что я пишу свою gina.dll
грубо говоря изменяю пример из MSDN, в результате
я отлавливаю логин юзера при входе и мне надо записать его
в файл, в прмере есть вариант как записать в реестр но меня интересует файл.
Здравствуйте edvin, Вы писали:
E>Насчет char* buf=new char[BUF_SIZE] пробовал не проходит
E>А насчет UNICODE признаться не знаю, вообще говоря это не ошибка а Warning но в файл пишется только первая буква логина,
E>дело в том что я пишу свою gina.dll
E>грубо говоря изменяю пример из MSDN, в результате
E>я отлавливаю логин юзера при входе и мне надо записать его
E>в файл, в прмере есть вариант как записать в реестр но меня интересует файл.
Если пишется только первая буква — это стопудово UNICODE (младшим байтом вперед).
L"Login\x0000" ==
"L\x00o\x00g\x00i\x00n\x00\x00\x00"
Очевидно, что в дальнейшем строка воспринимается до первого нуль-символа (т.е. до байта [1]).
Хочешь работать с char — используй WideCharToMultiByte