#Include "windows.bi" #Include "resource.bi" Const As String g_szClassName = "myWindowClass" Dim Shared As HMODULE hInstance Dim Shared As ZString Ptr lpCmdLine Function AboutDlgProc(hwnd As HWND, Message As UINT, wParam As WPARAM, lParam As LPARAM) As bool Select Case Message Case WM_INITDIALOG Return TRUE Case WM_COMMAND Select Case LoWord(wParam) Case IDOK EndDialog(hwnd, IDOK) Case IDCANCEL EndDialog(hwnd, IDCANCEL) 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_COMMAND Select Case LoWord(wParam) Case ID_FILE_EXIT PostMessage(hwnd, WM_CLOSE, 0, 0) Case ID_HELP_ABOUT Dim As Long ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), _ hwnd, @AboutDlgProc) If ret = IDOK Then MessageBox(hwnd, "Dialog exited with IDOK.", "Notice", MB_OK Or MB_ICONINFORMATION) ElseIf ret = IDCANCEL Then MessageBox(hwnd, "Dialog exited with IDCANCEL.", "Notice", MB_OK Or MB_ICONINFORMATION) ElseIf ret = -1 Then MessageBox(hwnd, "Dialog failed!", "Error", MB_OK Or MB_ICONINFORMATION) EndIf End Select Case WM_CLOSE DestroyWindow(hwnd) Case WM_DESTROY 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)