'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい ' Declares 'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい #COMPILE EXE #INCLUDE "WIN32API.INC" '---------------------------------------------------------------------- %IDC_SCROLLBAR1 = 1 %IDC_SCROLLBAR2 = 2 %IDC_LISTBOX3 = 3 %IDC_COMBOBOX4 = 4 %IDC_OPTION5 = 5 %IDC_CHECKBOX6 = 6 %IDC_UNKNOWN7 = 7 %IDC_EDIT8 = 8 %IDC_BUTTON9 = 9 '---------------------------------------------------------------------- DECLARE FUNCTION WndProc (BYVAL hWnd AS LONG, BYVAL wMsg AS LONG, _ BYVAL wParam AS LONG, BYVAL lParam AS LONG) AS LONG 'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい ' Program entrance 'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい FUNCTION WINMAIN (BYVAL hInst AS LONG, BYVAL hPrevInstance AS LONG, _ lpszCmdLine AS ASCIIZ PTR, BYVAL nCmdShow AS LONG) AS LONG LOCAL hDlg AS LONG, hCtl AS LONG, hFont AS LONG, _ wc AS WndClassEx, szClassName AS ASCIIZ * 80 hFont = GetStockObject(%ANSI_VAR_FONT) szClassName = "MyClassName" wc.cbSize = SIZEOF(wc) wc.style = %CS_HREDRAW OR %CS_VREDRAW wc.lpfnWndProc = CODEPTR(WndProc) wc.cbClsExtra = 0 wc.cbWndExtra = 0 wc.hInstance = hInst wc.hIcon = LoadIcon (%NULL, BYVAL %IDI_APPLICATION) wc.hCursor = LoadCursor(%NULL, BYVAL %IDC_ARROW) wc.hbrBackground = %COLOR_3DFACE + 1 wc.lpszMenuName = %NULL wc.lpszClassName = VARPTR(szClassName) wc.hIconSm = LoadIcon (%NULL, BYVAL %IDI_APPLICATION) CALL RegisterClassEx (wc) hDlg = CreateWindowEx(%WS_EX_APPWINDOW OR %WS_EX_WINDOWEDGE, "MyClassName", "Form1", _ %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_CLIPCHILDREN OR %WS_CAPTION OR _ %WS_SYSMENU OR %WS_THICKFRAME OR %WS_MINIMIZEBOX OR _ %WS_MAXIMIZEBOX, _ (GetSystemMetrics(%SM_CXSCREEN) - 614) / 2, _ (GetSystemMetrics(%SM_CYSCREEN) - 334) / 2, _ 614, 334, 0, 0, GetModuleHandle(""), BYVAL %NULL) hCtl = CreateWindowEx(%WS_EX_NOPARENTNOTIFY, "SCROLLBAR", BYVAL %NULL, _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_TABSTOP OR _ %SBS_VERT, _ 472, 168, 33, 113, _ hDlg, %IDC_SCROLLBAR1, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(%WS_EX_NOPARENTNOTIFY, "SCROLLBAR", BYVAL %NULL, _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_TABSTOP, _ 24, 256, 409, 33, _ hDlg, %IDC_SCROLLBAR2, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(%WS_EX_CLIENTEDGE OR %WS_EX_NOPARENTNOTIFY, "LISTBOX", BYVAL %NULL, _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_TABSTOP OR _ %LBS_NOTIFY OR %LBS_USETABSTOPS, _ 456, 88, 121, 56, _ hDlg, %IDC_LISTBOX3, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(0, "COMBOBOX", BYVAL %NULL, _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_TABSTOP OR _ %CBS_DROPDOWN OR %CBS_AUTOHSCROLL OR %CBS_HASSTRINGS, _ 456, 32, 129, 160, _ hDlg, %IDC_COMBOBOX4, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(, "OPTION", "Option1", _ %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %BS_AUTORADIOBUTTON, _ 200, 192, 217, 33, _ hDlg, %IDC_OPTION5, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(, "CHECKBOX", "Check1", _ %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %BS_AUTOCHECKBOX, _ 200, 144, 209, 25, _ hDlg, %IDC_CHECKBOX6, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(%WS_EX_NOPARENTNOTIFY, "FRAME", "Frame1", _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_CLIPCHILDREN OR _ %WS_TABSTOP OR %BS_GROUPBOX, _ 24, 136, 121, 89, _ hDlg, %IDC_UNKNOWN7, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(%WS_EX_CLIENTEDGE OR %WS_EX_NOPARENTNOTIFY, "EDIT", "Text1", _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_TABSTOP OR _ %ES_AUTOHSCROLL OR %ES_AUTOVSCROLL, _ 192, 88, 233, 33, _ hDlg, %IDC_EDIT8, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 hCtl = CreateWindowEx(%WS_EX_NOPARENTNOTIFY, "BUTTON", "Command1", _ %WS_CHILD OR %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_TABSTOP OR _ %BS_DEFPUSHBUTTON OR %BS_MULTILINE, _ 24, 24, 97, 57, _ hDlg, %IDC_BUTTON9, GetModuleHandle(""), BYVAL %NULL) IF hFont THEN SendMessage hCtl, %WM_SETFONT, hFont, 0 ShowWindow hDlg, nCmdShow UpdateWindow hDlg LOCAL Msg AS tagMsg WHILE GetMessage(Msg, %NULL, 0, 0) TranslateMessage Msg DispatchMessage Msg WEND FUNCTION = msg.wParam END FUNCTION 'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい ' Main Window procedure 'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい FUNCTION WndProc (BYVAL hWnd AS LONG, BYVAL wMsg AS LONG, _ BYVAL wParam AS LONG, BYVAL lParam AS LONG) AS LONG SELECT CASE wMsg CASE %WM_CREATE 'A good place to initiate things, declare variables, 'create controls and read/set settings from a file, etc. '------------------------------------------------------- CASE %WM_COMMAND 'Messages from controls and menu items are handled here. '------------------------------------------------------- SELECT CASE LOWRD(wParam) CASE %IDCANCEL IF HIWRD(wParam) = %BN_CLICKED THEN SendMessage hWnd, %WM_DESTROY, wParam, lParam FUNCTION = 0 : EXIT FUNCTION END IF CASE %IDC_SCROLLBAR1 CASE %IDC_SCROLLBAR2 CASE %IDC_LISTBOX3 CASE %IDC_COMBOBOX4 CASE %IDC_OPTION5 CASE %IDC_CHECKBOX6 CASE %IDC_UNKNOWN7 CASE %IDC_EDIT8 CASE %IDC_BUTTON9 END SELECT CASE %WM_CTLCOLORDLG SetBkColor wParam, GetSysColor(%COLOR_WINDOW) FUNCTION = GetStockObject(%NULL_BRUSH) EXIT FUNCTION CASE %WM_CTLCOLORBTN, %WM_CTLCOLOREDIT, %WM_CTLCOLORLISTBOX, %WM_CTLCOLORSTATIC ' wParam is handle of control's display context (hDC) ' lParam is handle of control ' Example on how to set colors to a specific control: '----------------------------------------------------- 'IF lParam = GetDlgItem(hWnd, CtlId) THEN ' SetBkColor wParam, GetSysColor(%COLOR_INFOBK) ' SetTextColor wParam, GetSysColor(%COLOR_INFOTEXT) ' FUNCTION = GetSysColorBrush(%COLOR_INFOBK) ' EXIT FUNCTION 'END IF '----------------------------------------------------- CASE %WM_DESTROY ' is sent when program ends - a good place to delete any created objects and ' store settings in file for next run, etc. Must send PostQuitMessage to end ' properly in SDK-style dialogs. The PostQuitMessage function sends a WM_QUIT ' message to the program's (thread's) message queue, and then WM_QUIT causes ' the GetMessage function to return zero in WINMAIN's message loop. '---------------------------------------------------------------------------- PostQuitMessage 0 FUNCTION = 0 : EXIT FUNCTION CASE %WM_SIZE IF wParam <> %SIZE_MINIMIZED THEN ' LOWRD(lParam) = width of dialog's client area ' HIWRD(lParam) = height of dialog's client area ' Example that resizes a control to dialog's client area: '------------------------------------------------------ 'LOCAL pt AS POINTAPI, rc AS RECT 'GetWindowRect GetDlgItem(hWnd, CtlId), rc 'get control's position on screen 'pt.x = rc.nLeft : pt.y = rc.nTop 'need left and top pos 'ScreenToClient hWnd, pt 'convert coordinates to client area 'MoveWindow GetDlgItem(hWnd, CtlId), pt.x, pt.y, _ ' LOWRD(lParam) - pt.x, HIWRD(lParam) - pt.y, %TRUE END IF END SELECT FUNCTION = DefWindowProc(hWnd, wMsg, wParam, lParam) END FUNCTION