#Include "windows.bi" #Include "resource.bi" Const As String g_szClassName = "myWindowClass" Dim Shared As HMODULE hInstance Dim Shared As ZString Ptr lpCmdLine Dim Shared As HWND g_hToolbar = NULL Function ToolDlgProc(hwnd As HWND, Message As UINT, wParam As WPARAM, lParam As LPARAM) As BOOL Select Case Message Case WM_COMMAND Select Case LoWord(wParam) Case IDC_PRESS MessageBox(hwnd, "Hi!", "This is a message", MB_OK Or MB_ICONEXCLAMATION) Case IDC_OTHER MessageBox(hwnd, "Bye!", "This is also a message", MB_OK Or MB_ICONEXCLAMATION) End Select Case Else Return FALSE End Select Return TRUE End Function Function WndProc(hwnd As HWND, Message As UINT, wParam As WPARAM, lParam As LPARAM) As LRESULT Select Case Message Case WM_CREATE g_hToolbar = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_TOOLBAR), _ hwnd, @ToolDlgProc) If g_hToolbar <> NULL Then ShowWindow(g_hToolbar, SW_SHOW) Else MessageBox(hwnd, "CreateDialog returned NULL", "Warning!", MB_OK Or MB_ICONINFORMATION) EndIf Case WM_COMMAND Select Case LoWord(wParam) Case ID_FILE_EXIT PostMessage(hwnd, WM_CLOSE, 0, 0) Case ID_DIALOG_SHOW ShowWindow(g_hToolbar, SW_SHOW) Case ID_DIALOG_HIDE ShowWindow(g_hToolbar, SW_HIDE) End Select Case WM_CLOSE DestroyWindow(hwnd) Case WM_DESTROY DestroyWindow(g_hToolbar) PostQuitMessage(0) Case Else Return DefWindowProc(hwnd, Message, wParam, lParam) End Select Return 0 End Function Function WinMain(hInstance As HINSTANCE, hPrevInstance As HINSTANCE, lpCmdLine As LPSTR, nCmdShow As Long) As Long Dim As WNDCLASSEX wc Dim As HWND hwnd Dim As MSG Msg wc.cbSize = SizeOf(WNDCLASSEX) wc.style = 0 wc.lpfnWndProc = @WndProc wc.cbClsExtra = 0 wc.cbWndExtra = 0 wc.hInstance = hInstance wc.hIcon = LoadIcon(NULL, IDI_APPLICATION) wc.hCursor = LoadCursor(NULL, IDC_ARROW) wc.hbrBackground = Cast(HBRUSH, COLOR_WINDOW + 1) wc.lpszMenuName = MAKEINTRESOURCE(IDR_MYMENU) wc.lpszClassName = @g_szClassName wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION) If RegisterClassEx(@wc) = 0 Then MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION Or MB_OK) Return 0 EndIf hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, _ g_szClassName, _ "The title of my window", _ WS_OVERLAPPEDWINDOW, _ CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, _ NULL, NULL, hInstance, NULL) If hwnd = NULL Then MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION Or MB_OK) Return 0 EndIf ShowWindow(hwnd, nCmdShow) UpdateWindow(hwnd) Do While GetMessage(@msg,NULL,0,0) TranslateMessage(@msg) DispatchMessage(@msg) Loop Return msg.wParam End Function ' Program start hInstance = GetModuleHandle(NULL) lpCmdLine = GetCommandLine WinMain(hInstance, NULL, lpCmdLine, SW_SHOWDEFAULT) ExitProcess(0)