www.pudn.com > editbox.rar > edit.c
#include#include #include #include #include #include #include static DLGTEMPLATE DlgBoxInputChar = { WS_BORDER | WS_CAPTION, WS_EX_NONE, 0, 0, 400, 220, #ifdef _LANG_ZHCN "Çë¼üÈë×Öĸ", #else "Please input letters", #endif 0, 0, 4, NULL, 0 }; #define IDC_CHAR 100 #define IDC_CHARS 110 static CTRLDATA CtrlInputChar [] = { { CTRL_STATIC, WS_VISIBLE , 10, 10, 380, 18, IDC_STATIC, #ifdef _LANG_ZHCN "ÇëÊäÈëÒ»¸ö×Öĸ:", #else "Please input a letter:", #endif 0 }, { CTRL_SLEDIT, WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_CENTER, 10, 40, 80, 25, IDC_CHAR, NULL, 0 }, { CTRL_MLEDIT, WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_BASELINE | ES_AUTOWRAP, 10, 80, 380, 70, IDC_CHARS, NULL, 0 }, { CTRL_BUTTON, WS_TABSTOP | WS_VISIBLE | BS_DEFPUSHBUTTON, 170, 160, 60, 25, IDOK, "OK", 0 } }; char message_zh[] = "M\00\00\00i\00\00\00n\00\00\00i\00\00\00G\00\00\00U\00\00\00I\00\00\00\"k\00\00\xCE\x8F\00\00\x7F" "O\00\00(u\00\00 \00\00\00"; #ifdef _UNICODE_SUPPORT static void test_utf8 (HWND hwnd, LOGFONT* utf8_font) { char utf8_msg [100] = {0}; int len = WCS2MBS (utf8_font, utf8_msg, (wchar_t*)message_zh, 12, 100); utf8_msg [len] = '\0'; SetWindowText (hwnd, utf8_msg); } #endif static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data) { unsigned char buff [256] = {0}; if (id == IDC_CHAR && nc == EN_CHANGE) { GetWindowText (hwnd, buff, 4); SendMessage (hwnd, EM_SETCARETPOS, 0, 0); SendMessage (GetDlgItem (GetParent (hwnd), IDC_CHARS), MSG_CHAR, buff[0], 0L); } else if (id == IDC_CHARS && nc == EN_CHANGE) { GetWindowText (hwnd, buff, 255); printf ("String: %s\n", buff); } } static int InputCharDialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { static PLOGFONT my_font; HWND hwnd; switch (message) { case MSG_INITDIALOG: my_font = CreateLogFont (NULL, "fmhei", "utf-8", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 20, 0); hwnd = GetDlgItem (hDlg, IDC_CHAR); SetNotificationCallback (hwnd, my_notif_proc); //SetWindowFont (hwnd, my_font); #ifdef _UNICODE_SUPPORT test_utf8 (hwnd, my_font); #endif SendMessage (hwnd, MSG_KEYDOWN, SCANCODE_INSERT, 0L); return 1; case MSG_CLOSE: EndDialog (hDlg, IDCANCEL); break; case MSG_COMMAND: switch (wParam) { case IDOK: case IDCANCEL: DestroyLogFont (my_font); EndDialog (hDlg, wParam); break; } break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } int MiniGUIMain (int argc, const char* argv[]) { #ifdef _MGRM_PROCESSES JoinLayer(NAME_DEF_LAYER , "edit" , 0 , 0); #endif #ifdef _LITE_VERSION if (!InitVectorialFonts ()) { printf ("InitVectorialFonts: error.\n"); return 1; } #endif DlgBoxInputChar.controls = CtrlInputChar; DialogBoxIndirectParam (&DlgBoxInputChar, HWND_DESKTOP, InputCharDialogBoxProc, 0L); #ifdef _LITE_VERSION TermVectorialFonts (); #endif return 0; } #ifndef _LITE_VERSION #include #endif