void skbdwin_create(void) { GtkWidget *main_widget; GtkWidget *da; int width, height; if (skwin.window) return; if (softkbd_getsize(&width, &height) != SUCCESS) return; skwin.window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(skwin.window), "Software Keyboard"); gtk_window_set_resizable(GTK_WINDOW(skwin.window), FALSE); gtk_widget_add_events(skwin.window, EVENT_MASK); g_signal_connect(GTK_OBJECT(skwin.window), "destroy", GTK_SIGNAL_FUNC(skbdwin_window_destroy), NULL); gtk_widget_realize(skwin.window); main_widget = gtk_vbox_new(FALSE, 2); gtk_widget_show(main_widget); gtk_container_add(GTK_CONTAINER(skwin.window), main_widget); skwin.hdl = drawmng_create(skwin.window, width, height); if (skwin.hdl == NULL) { goto destroy; } da = GTK_WIDGET(drawmng_get_widget_handle(skwin.hdl)); gtk_box_pack_start(GTK_BOX(main_widget), da, FALSE, TRUE, 0); gtk_widget_show(da); g_signal_connect(GTK_OBJECT(skwin.window), "key_press_event", GTK_SIGNAL_FUNC(skbdwin_key_press), NULL); g_signal_connect(GTK_OBJECT(skwin.window), "key_release_event", GTK_SIGNAL_FUNC(skbdwin_key_release), NULL); g_signal_connect(GTK_OBJECT(skwin.window), "button_press_event", GTK_SIGNAL_FUNC(skbdwin_button_press), NULL); g_signal_connect(GTK_OBJECT(skwin.window), "button_release_event", GTK_SIGNAL_FUNC(skbdwin_button_release), NULL); g_signal_connect(GTK_OBJECT(da), "expose_event", GTK_SIGNAL_FUNC(skbdwin_expose), NULL); gtk_widget_show_all(skwin.window); drawmng_set_size(skwin.hdl, width, height); drawmng_invalidate(skwin.hdl, NULL); return; destroy: gtk_widget_destroy(skwin.window); skwin.window = NULL; }
void skbdwin_create(HINSTANCE hInstance) { TCHAR szCaption[128]; HWND hwnd; if (skbdwin.hwnd != NULL) { return; } ZeroMemory(&skbdwin, sizeof(skbdwin)); if (softkbd_getsize(&skbdwin.width, &skbdwin.height) != SUCCESS) { return; } loadstringresource(LOWORD(IDS_CAPTION_SOFTKEY), szCaption, NELEMENTS(szCaption)); hwnd = CreateWindow(skbdclass, szCaption, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, skbdcfg.posx, skbdcfg.posy, skbdwin.width, skbdwin.height, NULL, NULL, hInstance, NULL); skbdwin.hwnd = hwnd; if (hwnd == NULL) { goto skcre_err1; } ShowWindow(hwnd, SW_SHOWNOACTIVATE); UpdateWindow(hwnd); skbdwin.dd2hdl = dd2_create(hwnd, skbdwin.width, skbdwin.height); if (skbdwin.dd2hdl == NULL) { goto skcre_err2; } InvalidateRect(hwnd, NULL, TRUE); SetForegroundWindow(g_hWndMain); return; skcre_err2: DestroyWindow(hwnd); skcre_err1: return; }
void skbdwin_create(void) { HWND hwnd; if (skbdwin.hwnd != NULL) { return; } ZeroMemory(&skbdwin, sizeof(skbdwin)); if (softkbd_getsize(&skbdwin.width, &skbdwin.height) != SUCCESS) { return; } hwnd = CreateWindow(skbdclass, skbdtitle, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, skbdcfg.posx, skbdcfg.posy, skbdwin.width, skbdwin.height, NULL, NULL, hInst, NULL); skbdwin.hwnd = hwnd; if (hwnd == NULL) { goto skcre_err1; } ShowWindow(hwnd, SW_SHOWNOACTIVATE); UpdateWindow(hwnd); skbdwin.dd2hdl = dd2_create(hwnd, skbdwin.width, skbdwin.height); if (skbdwin.dd2hdl == NULL) { goto skcre_err2; } InvalidateRect(hwnd, NULL, TRUE); SetForegroundWindow(hWndMain); return; skcre_err2: DestroyWindow(hwnd); skcre_err1: return; }