wap商城网站模板素材,云南网首页,农村电商网站建设,网站被攻击打不开怎么办一、GUI用户界面元素 #xff08;1#xff09;、GUI应用程序是由固定的窗口元素所构成 #xff08;2#xff09;、操作系统提供了创建用户界面元素所需要的函数 #xff08;3#xff09;、各自功能不同的函数依次调用#xff0c;从而创建出界面元素 #xff08;4#…一、GUI用户界面元素 1、GUI应用程序是由固定的窗口元素所构成 2、操作系统提供了创建用户界面元素所需要的函数 3、各自功能不同的函数依次调用从而创建出界面元素 4、操作系统提供的元素函数无法直接映射到界面元素 二、面向对象的GUI应用程序设计 1、GUI应用程序的应用 1、GUI应用程序是为了解决非科学计算问题而诞生的 2、GUI应用程序适用于非专业的日常生活领域 3、面向过程程序设计方法学不适合GUI程序设计 4、面向对象程序设计方法学更适合GUI程序设计 2、用面向对象的方法看待GUI程序设计 1、用面向对象的方法看待GUI界面元素 2、所有的界面元素都可以看做实际的对象 3、GUI用户界面是由各不相同的对象组成的 4、如主窗口对象 A、菜单对象 B、按钮对象 C、文本框对象 3、GUI应用程序非常适合采用面向对象的方法学 1、将界面元素定义成对应的类 2、通过抽象和封装可以隐藏界面元素的细节 3、程序的创建过程就是组合不同元素对象的过程 //main.cpp #include windows.h
#include Application.h
#include MainWindow.h
#include PushButton.hBOOL WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{Application a(hInstance, lpCmdLine);MainWindow w(hInstance, LMain Window);PushButton b(w, LMy Button);w.show();return a.exec();
} View Code //Application.h #pragma once#include windows.hclass Application
{
public:Application(HINSTANCE hInstance, LPSTR lpCmdLine);bool exec();
}; View Code //Application.cpp #include Application.hApplication::Application(HINSTANCE hInstance, LPSTR lpCmdLine)
{}bool Application::exec()
{MSG msg { 0 };//进入消息循环while ( GetMessage(msg, NULL, 0, 0)){//翻译并转换系统消息TranslateMessage(msg);//分发消息到对应的消息处理函数DispatchMessage(msg);}return TRUE;
} View Code //Widget.h #pragma once#include windows.hclass Widget
{
protected:Widget* m_parent;HWND m_hwnd;
public:Widget();Widget(Widget* parent);HWND hwnd();Widget* parent();
}; View Code //Widget.cpp #include Widget.hWidget::Widget()
{m_parent NULL;
}Widget::Widget(Widget* parent)
{m_parent parent;
}HWND Widget::hwnd()
{return m_hwnd;
}Widget* Widget::parent()
{return m_parent;
} View Code //MainWidow.h #pragma once#include Widget.hclass MainWindow : public Widget
{
protected:static const wchar_t STYLE_NAME[];//主窗口定义BOOL DefineMainWindow(HINSTANCE hInstance);//主窗口创建void CreateMainWindow(HINSTANCE hInstance, const wchar_t* title);//主窗口消息处理函数static LRESULT CALLBACK WndProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam);public:MainWindow(HINSTANCE hInstance, const wchar_t* title);void show();
}; View Code //MainWidow.cpp #include MainWindow.hconst wchar_t MainWindow::STYLE_NAME[] LMainForm;//主窗口定义
BOOL MainWindow::DefineMainWindow(HINSTANCE hInstance)
{static WNDCLASS WndClass { 0 };//系统结构类型用于描述窗口样式
WndClass.style 0;WndClass.cbClsExtra 0;WndClass.cbWndExtra 0;WndClass.hbrBackground (HBRUSH)(COLOR_WINDOW); //定义窗口背景色WndClass.hCursor LoadCursor(NULL, IDC_ARROW); //定义鼠标样式WndClass.hIcon LoadIcon(NULL, IDI_APPLICATION); //定义窗口左上角图标WndClass.hInstance hInstance; //定义窗口样式属于当前应用程序WndClass.lpfnWndProc (WNDPROC)WndProc; //窗口消息处理函数WndClass.lpszClassName STYLE_NAME; //窗口样式名WndClass.lpszMenuName NULL;//将定义好的窗口样式注册到系统上return RegisterClass(WndClass);
}//主窗口创建
void MainWindow::CreateMainWindow(HINSTANCE hInstance, const wchar_t* title)
{m_hwnd CreateWindow(STYLE_NAME, //通过定义好的窗口样式创建主窗口title, //主窗口标题WS_OVERLAPPEDWINDOW,//创建后主窗口的显示风格CW_USEDEFAULT, //主窗口左上角x坐标CW_USEDEFAULT, //主窗口左上角y坐标CW_USEDEFAULT, //主窗口宽度CW_USEDEFAULT, //主窗口高度NULL, //父窗口NULL, //主窗口菜单hInstance, //主窗口属于当前应用程序NULL);
}//主窗口消息处理函数
LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{switch (message){case WM_DESTROY:PostQuitMessage(0);break;default://调用系统提供的默认消息处理函数return DefWindowProc(hWnd, message, wParam, lParam);}return 0;
}MainWindow::MainWindow(HINSTANCE hInstance, const wchar_t* title) :Widget(NULL)
{DefineMainWindow(hInstance);CreateMainWindow(hInstance, title);
}void MainWindow::show()
{ShowWindow(m_hwnd, SW_SHOWNORMAL); //显示窗口UpdateWindow(m_hwnd); //刷新窗口
} View Code //PushButton.h #pragma once#include Widget.hclass PushButton : public Widget
{
public:PushButton(Widget* win, const wchar_t* text);
}; View Code //PushButton.cpp #include PushButton.hPushButton::PushButton(Widget* win, const wchar_t* text)
{HINSTANCE hInstance (HINSTANCE)GetWindowLong(win-hwnd(), GWL_HINSTANCE);m_hwnd CreateWindow(Lbutton, //通过系统预定义的窗口样式创建元素text, //窗口元素标题WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,//创建后窗口元素的显示风格50, //窗口元素在主窗口左上角x坐标50, //窗口元素在主窗口左上角y坐标200, //窗口元素宽度60, //窗口元素高度win-hwnd(), //父窗口(HMENU)this, //窗口元素ID值hInstance, //窗口元素属于当前应用程序NULL);
} View Code 三、QT的本质 1、QT是利用面向对象方法学开发的一套GUI组件库 2、QT将不同操作系统的GUI细节封装于类的内部 3、QT提供一套跨平台的类用于开发GUI程序 4、QT遵循经典的GUI应用程序开发模式 四、小结 1、GUI程序开发更适合采用面向对象方法学 2、所有的界面元素都可以看做是实际的对象 3、GUI用户界面是由各不相同的对象组成的 4、QT是利用面向对象方法学开发的一套GUI组件库 5、QT将GUI细节封装于类的内部具有跨平台的特性 转载于:https://www.cnblogs.com/gui-lin/p/6385174.html