witam, robię program, który łączy się z bazą mysql i dane wstawia do listy combobox.
Łączy się itp, tylko nie mogę zrobić, aby wyświetlał mi polskie znaki z bazy.
Na początku zamiast polskich znaków miałem znaki zapytania, wiec dodałem ten kawałeczek kodu:
mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8");
jednak teraz wywala krzaczki.
Korzystam z dev c++, baza localhost i wszędzie ustawione utf8_general_ci.
mógłby ktoś podpowiedzieć jak sobie z tym poradzić?
#include <windows.h>
#include <commctrl.h>
#include <c:\Program Files\MySQL\MySQL Connector C 6.0.2\include\mysql.h>
//ZMIENNE POTRZEBNE DO POLACZENIA Z BAZA
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int num_fields;
HWND hCombo,hWnd;
CHAR szClassName[]="OknoRodzica";
HINSTANCE* hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lStart,INT nShow)
{
//ZAINICJOWANIE POLACZENIA Z BAZA
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8");
INT a;
if (!mysql_real_connect(&mysql,"localhost","root","","przystanki",0,NULL,0))
{
a=MessageBox(HWND_DESKTOP,"niePolączony",":>",MB_OK);
}else{
}
hInst=&hInstance;
WNDCLASSEX wc;
wc.hInstance=*hInst;
wc.lpszClassName=szClassName;
wc.lpfnWndProc=WndProc;
wc.style=0;
wc.cbSize=sizeof(WNDCLASSEX);
wc.hIcon=LoadIcon(0,IDI_APPLICATION);
wc.hIconSm=LoadIcon(0,IDI_APPLICATION);
wc.hCursor=LoadCursor(0,IDC_ARROW);
wc.lpszMenuName=0;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)COLOR_BACKGROUND;
if(!RegisterClassEx(&wc)) return 0;
hWnd=CreateWindowEx(0,szClassName,"Lekcja-ComboBox",WS_OVERLAPPEDWINDOW,20,20,600,300,0,0,*hInst,0);
ShowWindow(hWnd,nShow);
MSG msgs;
while(GetMessage(&msgs,0,0,0))
{
TranslateMessage(&msgs);
DispatchMessage(&msgs);
}
return msgs.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)
{
switch(msg)
{
case WM_CREATE:
hCombo=CreateWindowEx(0,WC_COMBOBOX,0,WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST|WS_VSCROLL,10,10,570,300,hwnd,0,*hInst,0);
mysql_query(&mysql,"SELECT `przystanek` FROM `baza_przystankow`");
res = mysql_store_result(&mysql);
num_fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res)))
{
for(int i = 0; i < num_fields; i++)
{
SendMessage(hCombo, CB_ADDSTRING, 0, (LPARAM)row[i]);
}
}
break;
case WM_DESTROY:
DestroyWindow(hCombo);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,msg,wPar,lPar);
}
return 0;
}