|
本帖最后由 canglong 于 2015-1-23 09:25 编辑
装完Lazarus,立马编译一个带窗体的程序,执行文件大小:70.4 KB,但中文 乱码了 ...- program WindowDemo;
- uses Windows, Messages;
- // 窗口函数,窗口接到消息时被Windows所调用
- function WindowProc(hwnd : HWND; uMsg : Cardinal; wParam : WPARAM;
- lParam : LPARAM) : LResult; stdcall;
- begin
- Result := 0;
- case uMsg of
- // 关闭窗口消息,当用户关闭窗口后,通知主消息循环结束程序
- WM_CLOSE : PostMessage(hwnd, WM_QUIT, 0, 0);
- // 鼠标左键按下消息
- WM_LBUTTONDOWN : MessageBox(hwnd, 'Hello! 您好', '和您打个招呼',
- MB_ICONINFORMATION);
- else
- // 其他消息做默认处理
- Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
- end;
- end;
- var
- wndcls : WNDCLASS; // 窗口类的记录(结构)类型
- hWnd : THandle;
- Msg : tagMSG; // 消息类型
- begin
- wndcls.style := CS_DBLCLKS; // 允许窗口接受鼠标双击
- wndcls.lpfnWndProc := @WindowProc; // 为窗口类指定窗口函数
- wndcls.cbClsExtra := 0;
- wndcls.cbWndExtra := 0;
- wndcls.hInstance := hInstance;
- wndcls.hIcon := 0;
- wndcls.hCursor := LoadCursor(hInstance, 'IDC_ARROW');
- wndcls.hbrBackground := COLOR_WINDOWFRAME;
- wndcls.lpszMenuName := nil;
- wndcls.lpszClassName := 'WindowClassDemo'; // 窗口类名称
- // 注册窗口类
- if RegisterClass(wndcls) = 0 then
- Exit;
- // 创建窗口
- hWnd := CreateWindow(
- 'WindowClassDemo', // 窗口类名称
- 'WindowDemo', // 窗口名称
- WS_BORDER or WS_CAPTION or WS_SYSMENU, // 窗口类型
- Integer(CW_USEDEFAULT),
- Integer(CW_USEDEFAULT),
- Integer(CW_USEDEFAULT),
- Integer(CW_USEDEFAULT),
- 0,
- 0,
- hInstance,
- nil
- );
- if hWnd = 0 then
- Exit;
- // 显示窗口
- ShowWindow(hWnd, SW_SHOWNORMAL);
- UpdateWindow(hWnd);
- // 创建主消息循环,处理消息队列中的消息并分发
- // 直至收到WM_QUIT消息,退出主消息循环,并结束程序
- // WM_QUIT消息由PostMessage()函数发送
- while GetMessage(Msg, hWnd, 0, 0) do
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- end;
- end.
复制代码 |
|