精华内容
下载资源
问答
  • 2018-09-12 20:35:28

    桌面应用程序:
         在台式电脑上运行的应用程序称为桌面应用程序。比如:记事本,Word,Excel。
         这种应用程序的特点是
           1)缺少共享 2)直接双击就可以运行,不需要IE  3)一般以window的窗口形式存在
       Web应用程序:
           1)需要IE来执行    2)一般以网页的形式的存在  3)可以有很多的客户端来共享。
             比如: www.sina.com 
        Web应用程序的优点:
          1)能够实现最大的资源共享,
              比如:开发一个网站,放在Internet上,就可以让全世界的人都来共享
          2)维护与部署起来成本低
            Web应用程序只需要在服务器上安装一次,就可以通过网络给所有客户端共享,以后要修改
            Web应用程序,只需要修改服务器上Web应用程序,则所有的客户端自动进行更新。而桌面
            应用程序必须在每台计算机上都安装一次,以后要修改时,每台计算机都要修改
       Web应用程序的缺点:

            响应速度比桌面应用程序要低很多,因为要通过Internet去访问远程网页.

    更多相关内容
  • 演练:创建传统的 Windows 桌面应用程序 (c + +)05/28/2020本文内容本演练演示如何在 Visual Studio 中创建传统的 Windows 桌面应用程序。 要创建的示例应用程序使用 Windows API 显示 "Hello,Windows desktop!" ...

    演练:创建传统的 Windows 桌面应用程序 (c + +)

    05/28/2020

    本文内容

    本演练演示如何在 Visual Studio 中创建传统的 Windows 桌面应用程序。 要创建的示例应用程序使用 Windows API 显示 "Hello,Windows desktop!" 应用程序。 可以将本演练中开发的代码作为模式来创建其他 Windows 桌面应用程序。

    Windows API (也称为 Win32 API、Windows 桌面 API 和 Windows Classic API) 是基于 C 语言的框架,用于创建 Windows 应用程序。 它已存在,因为它已被占用了20% 的时间,用于创建数十年的 Windows 应用程序。 更高级、更易于编程的框架是在 Windows API 之上构建的。 例如,MFC,ATL,.NET framework。 甚至使用 c + +/WinRT 编写的 UWP 和应用商店应用的最新式 Windows 运行时代码也使用下面的 Windows API。 有关 Windows API 的详细信息,请参阅 WINDOWS Api Index。 有多种方法可以创建 Windows 应用程序,但上面的过程是第一个。

    重要

    为了简洁起见,文本中省略了一些代码语句。 本文档末尾的 " 生成代码" 部分显示了完整的代码。

    先决条件

    运行 Microsoft Windows 7 或更高版本的计算机。 建议使用 Windows 10 以实现最佳开发体验。

    Visual Studio 的副本。 有关如何下载和安装 Visual Studio 的信息,请参阅安装 Visual Studio。 运行安装程序时,请务必选中“使用 C++ 的桌面开发” 工作负载。 如果在安装 Visual Studio 时未安装此工作负载,请不要担心。 可以再次运行安装程序并立即安装。

    使用 C++ 的桌面开发

    6e48e00c0f3396c993ae476fb89fa919.png

    了解使用 Visual Studio IDE 的基础知识。 如果你之前使用过 Windows 桌面应用,可能具备一定的相关知识。 有关简介,请参阅 Visual Studio IDE 功能导览。

    了解足够的 C++ 语言基础知识以供继续操作。 别担心,我们不会执行过于复杂的操作。

    创建 Windows 桌面项目

    按照以下步骤创建您的第一个 Windows 桌面项目。 当你执行此操作时,你将为正在运行的 Windows 桌面应用程序输入代码。 若要查看 Visual Studio 首选项的文档,请使用“版本”选择器控件。 它位于此页面上目录表的顶部。

    在 Visual Studio 2019 中创建 Windows 桌面项目

    在主菜单中,依次选择“文件”>“新建”>“项目”,以打开“新建项目”对话框。

    在对话框顶部,将 " 语言 " 设置为 " c + + ",将 " 平台 " 设置为 " Windows ",将 " 项目类型 " 设置为 " 桌面

    从筛选的项目类型列表中,选择 " Windows 桌面向导 ",然后选择 " 下一步 "。 在下一页中,输入项目的名称,例如 " DesktopApp "。

    选择“创建” 按钮创建项目。

    此时将显示 " Windows 桌面项目 " 对话框。 在 " 应用程序类型 " 下,选择 " 桌面应用程序 ( .exe) 。 在“附加选项” 下,选择“空项目” 。 选择“确定”,创建项目 。

    在 解决方案资源管理器 中,右键单击 DesktopApp 项目,选择 " 添加 ",然后选择 " 新建项 "。

    a701a54aa872530dc351f0f96481e8cb.gif

    在“添加新项” 对话框中选择“C++ 文件(.cpp)” 。 在 " 名称 " 框中,键入文件的名称,例如 " HelloWindowsDesktop "。 选择“添加”。

    a923585fb87286da73f46abf74272012.png

    此时会创建项目,并在编辑器中打开源文件。 若要继续,请跳到 创建代码。

    在 Visual Studio 2017 中创建 Windows 桌面项目

    在“文件”菜单上选择“新建”,再选择“项目”。

    在 " 新建项目 " 对话框的左窗格中,展开 " 已安装 > " Visual C++ ,然后选择 " Windows 桌面 "。 在中间窗格中,选择 " Windows 桌面向导 "。

    在 " 名称 " 框中,键入项目的名称,例如 " DesktopApp "。 选择 “确定” 。

    9d4a72a0950f9b62b2aa788425147a77.png

    在 " Windows 桌面项目 " 对话框中的 " 应用程序类型 " 下,选择 " Windows 应用程序 ( .exe) 。 在“附加选项” 下,选择“空项目” 。 请确保未选择 " 预编译头 "。 选择“确定”,创建项目 。

    在 解决方案资源管理器 中,右键单击 DesktopApp 项目,选择 " 添加 ",然后选择 " 新建项 "。

    a701a54aa872530dc351f0f96481e8cb.gif

    在“添加新项” 对话框中选择“C++ 文件(.cpp)” 。 在 " 名称 " 框中,键入文件的名称,例如 " HelloWindowsDesktop "。 选择“添加”。

    a923585fb87286da73f46abf74272012.png

    此时会创建项目,并在编辑器中打开源文件。 若要继续,请跳到 创建代码。

    在 Visual Studio 2015 中创建 Windows 桌面项目

    在“文件”菜单上选择“新建”,再选择“项目”。

    在 " 新建项目 " 对话框的左窗格中,展开 " 已安装 > 的 模板 " > Visual C++ ,然后选择 " Win32 "。 在中间窗格中,选择“Win32 项目” 。

    在 " 名称 " 框中,键入项目的名称,例如 " DesktopApp "。 选择 “确定” 。

    7fb6cafa4653efc50b82f6f65a8de3e5.png

    在 " Win32 应用程序向导 " 的 " 概述 " 页上,选择 " 下一步 "。

    9fcf01b69f6573002af9aa7273e32795.png

    在 " 应用程序设置 " 页的 " 应用程序类型 " 下,选择 " Windows 应用程序 "。 在 其他选项 下,取消选中 " 预编译头 ",然后选择 " 空项目 "。 选择“完成”以创建项目 。

    在 解决方案资源管理器 中,右键单击 DesktopApp 项目,选择 " 添加 ",然后选择 " 新建项 "。

    0e8225d39e36f2ef6466a04303554fcd.gif

    在“添加新项” 对话框中选择“C++ 文件(.cpp)” 。 在 " 名称 " 框中,键入文件的名称,例如 " HelloWindowsDesktop "。 选择“添加”。

    0de41326c7b5dd57cbefb87e28d9c9a5.png

    此时会创建项目,并在编辑器中打开源文件。

    创建代码

    接下来,你将学习如何在 Visual Studio 中为 Windows 桌面应用程序创建代码。

    启动 Windows 桌面应用程序

    正如每个 C 应用程序和 c + + 应用程序必须将 main 函数作为其起始点一样,每个 Windows 桌面应用程序都必须具有一个 WinMain 函数。 WinMain 具有以下语法。

    int CALLBACK WinMain(

    _In_ HINSTANCE hInstance,

    _In_opt_ HINSTANCE hPrevInstance,

    _In_ LPSTR lpCmdLine,

    _In_ int nCmdShow

    );

    有关此函数的参数和返回值的信息,请参阅 WinMain 入口点。

    备注

    所有这些额外的词,例如 CALLBACK 、或 HINSTANCE _In_ 。 传统的 Windows API 广泛使用 typedef 和预处理器宏来抽象掉某些类型的详细信息和特定于平台的代码,例如调用约定、 __declspec 声明和编译器杂注。 在 Visual Studio 中,可以使用 IntelliSense 快速信息 功能来查看这些 typedef 和宏定义的内容。 将鼠标悬停在感兴趣的字词上,或选择它, 然后按 ctrl + K , ctrl + I 获取包含定义的小的弹出窗口。 有关详细信息,请参阅使用 IntelliSense。 参数和返回类型通常使用 SAL 批注 来帮助您捕获编程错误。 有关详细信息,请参阅 使用 SAL 注释减少 C/c + + 代码缺陷。

    Windows 桌面程序需要 <>。 定义 TCHAR 宏, wchar_t 如果在项目中定义了 UNICODE 符号,则该宏将最终解析为,否则它将解析为 char 。 如果你始终启用了 UNICODE 生成,则无需 TCHAR,只需直接使用即可 wchar_t 。

    #include

    #include

    除了 WinMain 函数,每个 Windows 桌面应用程序还必须具有一个窗口过程函数。 此函数通常名为 WndProc ,但你可以将其命名为你喜欢的任何名称。 WndProc 具有以下语法。

    LRESULT CALLBACK WndProc(

    _In_ HWND hWnd,

    _In_ UINT message,

    _In_ WPARAM wParam,

    _In_ LPARAM lParam

    );

    在此函数中,你将编写代码来处理应用程序在发生 事件 时从 Windows 接收的 消息 。 例如,如果用户在您的应用程序中选择了 "确定" 按钮,Windows 将向您发送一条消息,您可以在函数内编写 WndProc 执行任何适当工作的代码。 这称为 处理 事件。 仅处理与应用程序相关的事件。

    有关详细信息,请参阅 窗口过程。

    向 WinMain 函数添加功能

    在 WinMain 函数中,您将填充类型为 WNDCLASSEX的结构。 结构包含有关窗口的信息:应用程序图标、窗口的背景色、在标题栏中显示的名称,等等。 重要的是,它包含指向您的窗口过程的函数指针。 下面的示例演示一个典型 WNDCLASSEX 结构。

    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style = CS_HREDRAW | CS_VREDRAW;

    wcex.lpfnWndProc = WndProc;

    wcex.cbClsExtra = 0;

    wcex.cbWndExtra = 0;

    wcex.hInstance = hInstance;

    wcex.hIcon = LoadIcon(hInstance, IDI_APPLICATION);

    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

    wcex.lpszMenuName = NULL;

    wcex.lpszClassName = szWindowClass;

    wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION);

    有关上述结构的字段的信息,请参阅 WNDCLASSEX。

    向 Windows 注册, WNDCLASSEX 使其了解你的窗口以及如何向其发送消息。 使用 RegisterClassEx 函数,并将窗口类结构作为参数传递。 使用 _T 宏是因为我们使用的是 TCHAR 类型。

    if (!RegisterClassEx(&wcex))

    {

    MessageBox(NULL,

    _T("Call to RegisterClassEx failed!"),

    _T("Windows Desktop Guided Tour"),

    NULL);

    return 1;

    }

    现在可以创建窗口了。 使用 CreateWindow 函数。

    static TCHAR szWindowClass[] = _T("DesktopApp");

    static TCHAR szTitle[] = _T("Windows Desktop Guided Tour Application");

    // The parameters to CreateWindow explained:

    // szWindowClass: the name of the application

    // szTitle: the text that appears in the title bar

    // WS_OVERLAPPEDWINDOW: the type of window to create

    // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)

    // 500, 100: initial size (width, length)

    // NULL: the parent of this window

    // NULL: this application does not have a menu bar

    // hInstance: the first parameter from WinMain

    // NULL: not used in this application

    HWND hWnd = CreateWindow(

    szWindowClass,

    szTitle,

    WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT, CW_USEDEFAULT,

    500, 100,

    NULL,

    NULL,

    hInstance,

    NULL

    );

    if (!hWnd)

    {

    MessageBox(NULL,

    _T("Call to CreateWindow failed!"),

    _T("Windows Desktop Guided Tour"),

    NULL);

    return 1;

    }

    此函数返回一个 HWND ,它是窗口的句柄。 句柄有些类似于 Windows 用来跟踪打开的窗口的指针。 有关详细信息,请参阅 Windows 数据类型。

    此时,已创建了窗口,但我们仍需要告知 Windows 使其可见。 这就是此代码的作用:

    // The parameters to ShowWindow explained:

    // hWnd: the value returned from CreateWindow

    // nCmdShow: the fourth parameter from WinMain

    ShowWindow(hWnd,

    nCmdShow);

    UpdateWindow(hWnd);

    显示的窗口不包含太多内容,因为您尚未实现 WndProc 函数。 换句话说,应用程序尚未处理 Windows 现在正在向其发送的消息。

    为了处理这些消息,我们首先添加一个消息循环来侦听 Windows 发送的消息。 当应用程序收到消息时,此循环会将它调度到要 WndProc 处理的函数。 该消息循环类似于以下代码。

    MSG msg;

    while (GetMessage(&msg, NULL, 0, 0))

    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

    }

    return (int) msg.wParam;

    此时, WinMain 函数类似于以下代码。

    int WINAPI WinMain(HINSTANCE hInstance,

    HINSTANCE hPrevInstance,

    LPSTR lpCmdLine,

    int nCmdShow)

    {

    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style = CS_HREDRAW | CS_VREDRAW;

    wcex.lpfnWndProc = WndProc;

    wcex.cbClsExtra = 0;

    wcex.cbWndExtra = 0;

    wcex.hInstance = hInstance;

    wcex.hIcon = LoadIcon(hInstance, IDI_APPLICATION);

    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

    wcex.lpszMenuName = NULL;

    wcex.lpszClassName = szWindowClass;

    wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION);

    if (!RegisterClassEx(&wcex))

    {

    MessageBox(NULL,

    _T("Call to RegisterClassEx failed!"),

    _T("Windows Desktop Guided Tour"),

    NULL);

    return 1;

    }

    // Store instance handle in our global variable

    hInst = hInstance;

    // The parameters to CreateWindow explained:

    // szWindowClass: the name of the application

    // szTitle: the text that appears in the title bar

    // WS_OVERLAPPEDWINDOW: the type of window to create

    // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)

    // 500, 100: initial size (width, length)

    // NULL: the parent of this window

    // NULL: this application dows not have a menu bar

    // hInstance: the first parameter from WinMain

    // NULL: not used in this application

    HWND hWnd = CreateWindow(

    szWindowClass,

    szTitle,

    WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT, CW_USEDEFAULT,

    500, 100,

    NULL,

    NULL,

    hInstance,

    NULL

    );

    if (!hWnd)

    {

    MessageBox(NULL,

    _T("Call to CreateWindow failed!"),

    _T("Windows Desktop Guided Tour"),

    NULL);

    return 1;

    }

    // The parameters to ShowWindow explained:

    // hWnd: the value returned from CreateWindow

    // nCmdShow: the fourth parameter from WinMain

    ShowWindow(hWnd,

    nCmdShow);

    UpdateWindow(hWnd);

    // Main message loop:

    MSG msg;

    while (GetMessage(&msg, NULL, 0, 0))

    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

    }

    return (int) msg.wParam;

    }

    向 WndProc 函数添加功能

    若要启用 WndProc 函数以处理应用程序收到的消息,请实现 switch 语句。

    要处理的一项重要消息是 WM_PAINT 消息。 WM_PAINT当必须更新其显示窗口的一部分时,应用程序将接收该消息。 如果用户将窗口移到窗口的前面,则会发生此事件,然后再将其移开。 您的应用程序不知道这些事件发生的时间。 只有 Windows 知道,因此它将使用消息通知您的应用程序 WM_PAINT 。 第一次显示窗口时,必须对其进行更新。

    要处理 WM_PAINT 消息,首先应调用 BeginPaint,然后处理所有的逻辑以在窗口中布局文本、按钮和其他控件,然后调用 EndPaint。 对于应用程序,开始调用和结束调用之间的逻辑显示字符串 "Hello,Windows desktop!" “Hello,World!”。 在下面的代码中, TextOut 函数用于显示字符串。

    PAINTSTRUCT ps;

    HDC hdc;

    TCHAR greeting[] = _T("Hello, Windows desktop!");

    switch (message)

    {

    case WM_PAINT:

    hdc = BeginPaint(hWnd, &ps);

    // Here your application is laid out.

    // For this introduction, we just print out "Hello, Windows desktop!"

    // in the top left corner.

    TextOut(hdc,

    5, 5,

    greeting, _tcslen(greeting));

    // End application-specific layout section.

    EndPaint(hWnd, &ps);

    break;

    }

    HDC 在代码中,是用于在窗口的工作区中进行绘制的设备上下文的句柄。 使用 BeginPaint 和 EndPaint 函数来准备并完成工作区中的绘图。 BeginPaint 返回用于在客户端区域中绘制的显示设备上下文的句柄; EndPaint 结束绘制请求并释放设备上下文。

    应用程序通常会处理许多其他消息。 例如,在首次创建窗口时 WM_CREATE ,当窗口关闭时 WM_DESTROY 。 以下代码显示基本但完整的 WndProc 函数。

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

    {

    PAINTSTRUCT ps;

    HDC hdc;

    TCHAR greeting[] = _T("Hello, Windows desktop!");

    switch (message)

    {

    case WM_PAINT:

    hdc = BeginPaint(hWnd, &ps);

    // Here your application is laid out.

    // For this introduction, we just print out "Hello, Windows desktop!"

    // in the top left corner.

    TextOut(hdc,

    5, 5,

    greeting, _tcslen(greeting));

    // End application specific layout section.

    EndPaint(hWnd, &ps);

    break;

    case WM_DESTROY:

    PostQuitMessage(0);

    break;

    default:

    return DefWindowProc(hWnd, message, wParam, lParam);

    break;

    }

    return 0;

    }

    生成代码

    正如我们所承诺的,以下是适用于工作应用程序的完整代码。

    生成此示例

    在编辑器中删除在 HelloWindowsDesktop 中输入的任何代码。 复制此示例代码,然后将其粘贴到 HelloWindowsDesktop 中:

    // HelloWindowsDesktop.cpp

    // compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c

    #include

    #include

    #include

    #include

    // Global variables

    // The main window class name.

    static TCHAR szWindowClass[] = _T("DesktopApp");

    // The string that appears in the application's title bar.

    static TCHAR szTitle[] = _T("Windows Desktop Guided Tour Application");

    HINSTANCE hInst;

    // Forward declarations of functions included in this code module:

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

    int CALLBACK WinMain(

    _In_ HINSTANCE hInstance,

    _In_opt_ HINSTANCE hPrevInstance,

    _In_ LPSTR lpCmdLine,

    _In_ int nCmdShow

    )

    {

    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style = CS_HREDRAW | CS_VREDRAW;

    wcex.lpfnWndProc = WndProc;

    wcex.cbClsExtra = 0;

    wcex.cbWndExtra = 0;

    wcex.hInstance = hInstance;

    wcex.hIcon = LoadIcon(hInstance, IDI_APPLICATION);

    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

    wcex.lpszMenuName = NULL;

    wcex.lpszClassName = szWindowClass;

    wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION);

    if (!RegisterClassEx(&wcex))

    {

    MessageBox(NULL,

    _T("Call to RegisterClassEx failed!"),

    _T("Windows Desktop Guided Tour"),

    NULL);

    return 1;

    }

    // Store instance handle in our global variable

    hInst = hInstance;

    // The parameters to CreateWindow explained:

    // szWindowClass: the name of the application

    // szTitle: the text that appears in the title bar

    // WS_OVERLAPPEDWINDOW: the type of window to create

    // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)

    // 500, 100: initial size (width, length)

    // NULL: the parent of this window

    // NULL: this application does not have a menu bar

    // hInstance: the first parameter from WinMain

    // NULL: not used in this application

    HWND hWnd = CreateWindow(

    szWindowClass,

    szTitle,

    WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT, CW_USEDEFAULT,

    500, 100,

    NULL,

    NULL,

    hInstance,

    NULL

    );

    if (!hWnd)

    {

    MessageBox(NULL,

    _T("Call to CreateWindow failed!"),

    _T("Windows Desktop Guided Tour"),

    NULL);

    return 1;

    }

    // The parameters to ShowWindow explained:

    // hWnd: the value returned from CreateWindow

    // nCmdShow: the fourth parameter from WinMain

    ShowWindow(hWnd,

    nCmdShow);

    UpdateWindow(hWnd);

    // Main message loop:

    MSG msg;

    while (GetMessage(&msg, NULL, 0, 0))

    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

    }

    return (int) msg.wParam;

    }

    // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)

    //

    // PURPOSE: Processes messages for the main window.

    //

    // WM_PAINT - Paint the main window

    // WM_DESTROY - post a quit message and return

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

    {

    PAINTSTRUCT ps;

    HDC hdc;

    TCHAR greeting[] = _T("Hello, Windows desktop!");

    switch (message)

    {

    case WM_PAINT:

    hdc = BeginPaint(hWnd, &ps);

    // Here your application is laid out.

    // For this introduction, we just print out "Hello, Windows desktop!"

    // in the top left corner.

    TextOut(hdc,

    5, 5,

    greeting, _tcslen(greeting));

    // End application-specific layout section.

    EndPaint(hWnd, &ps);

    break;

    case WM_DESTROY:

    PostQuitMessage(0);

    break;

    default:

    return DefWindowProc(hWnd, message, wParam, lParam);

    break;

    }

    return 0;

    }

    在 “生成” 菜单上,选择 “生成解决方案” 。 编译结果应显示在 Visual Studio 的 " 输出 " 窗口中。

    e8bbedc4bc1589eca856863a9aef628d.gif

    若要运行应用程序,请按 F5 。 包含文本 "Hello,Windows desktop!" 的窗口 文字的窗口。

    2fac49091ccf80e97e4a9c26af84cd32.png

    恭喜! 您已经完成了本演练,并构建了传统的 Windows 桌面应用程序。

    请参阅

    展开全文
  • 1.桌面app 响应速度快;无法共享;直接双击就可以运行,不需要IE;一般以Windows窗口形式存在; 2.web应用程序 需要IE来执行;...Web应用程序,只需要修改服务器上Web应用程序,则所有的客户端自动进行更新。而

    1.桌面app
    响应速度快;无法共享;直接双击就可以运行,不需要IE;一般以Windows窗口形式存在;
    2.web应用程序
    需要IE来执行;一般以网页形式存在;需要很多客户端来共享;

    优缺点:
    Web应用程序的优点:
    1)能够实现最大的资源共享,
    比如:开发一个网站,放在Internet上,就可以让全世界的人都来共享
    2)维护与部署起来成本低
    Web应用程序只需要在服务器上安装一次,就可以通过网络给所有客户端共享,以后要修改
    Web应用程序,只需要修改服务器上Web应用程序,则所有的客户端自动进行更新。而桌面
    应用程序必须在每台计算机上都安装一次,以后要修改时,每台计算机都要修改
    Web应用程序的缺点:
    响应速度比桌面应用程序要低很多,因为要通过Internet去访问远程网页.
    ————————————————
    版权声明:本文为CSDN博主「木瓜_团」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/It_1013/article/details/79228146

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to- HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。1

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. 注脚的解释 ↩︎

    展开全文
  • 名称设置为PyUIC,分组设置为Qt,描述选填,Programme选择.env/Scripts/python.exe,参数设置为-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py,目录设置为$FileDir$ 二、第一个桌面应用程序 ...

    一、环境安装级配置

    (1)首先需要安装python
    (2)安装pycharm
    (3)安装virtualenv

    pip install virtualenv
    

    (4)安装虚拟环境

    virtualenv .env
    

    (5)安装pyqt5,pyqt5-tools,pyqt5designer

    pip install pyqt5
    pip install pyqt5-tools
    pip install pyqt5designer
    

    (5)Pycharm设置虚拟环境的python解释器

    依次打开【Setting】-【Project xxx】-【Python Interpreter】,然后将解释器设置为.env/Scripts/python.exe
    在这里插入图片描述
    (6)设置QtDesigner
    依次点击【Setting】-【Tools】-【External Tools】,然后点击‘+’号,设置名称为QtDesigner,分组可以设置为QT,描述选填,Programm选择designer.exe,比如这里 为.D:\src\caterpillar_test.env\Scripts\designer.exe,目录设置为$ProjectFileDir$

    在这里插入图片描述
    (7)设置PyGUI
    依次点击【Setting】-【Tools】-【External Tools】,然后点击‘+’号,名称设置为PyUIC,分组设置为Qt,描述选填,Programme选择.env/Scripts/python.exe,参数设置为-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py,目录设置为$FileDir$

    在这里插入图片描述

    二、第一个桌面应用程序

    (1)新建一个python文件,比如demo.py,代码如下:

    import sys
    
    from PyQt5.QtWidgets import QApplication,QWidget
    
    if __name__=="__main__":
        # 创建QApplication类的实例
        app=QApplication(sys.argv)
        # 创建一个窗口
        w=QWidget()
        # 设置窗口的尺寸
        w.resize(600,400)
        # 移动窗口
        w.move(300,300)
        # 设置窗口的标题
        w.setWindowTitle("第一个基于PyQt的桌面应用")
        # 显示窗口
        w.show()
        # 进入程序死循环,并通过exit函数确保主循环安全结束
        sys.exit(app.exec())
    

    (2)执行,结果如下:

    在这里插入图片描述

    展开全文
  • 这个要看具体平台了,如果是...对于桌面应用程序开发来说,只需要简单的拖拽控件,设置属性,就可快速创建一个可视化界面,所见即所得,对于新手来说,非常容易学习和掌握,但要做好、做深入还需要花费一定功夫...
  • 上编blog说到用Python开发Windows桌面应用程序的环境搭建,下面就说说如何实现一个简单的远程日志读取的功能。 界面绘制 打开界面绘制工具,选中项目后,右键找到External Tools,然后选择QtDesigner 打开Qt ...
  • 我想构建一个本地 Go 桌面应用程序,有几种方法可以做到:Electron[1]:将 Node.js[2] 和 Chromium[3] 浏览器绑定在一起,以创建一个打包的本地 Web 应用程序。可与 Go 框架(例如 go-app[4] 或 go-astilectron[5])...
  • 题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试。所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试。要对Windows桌面应用程序进行UI自动化测试,...
  • HTML5桌面应用程序开发

    万次阅读 多人点赞 2018-10-22 20:27:27
    easy-window 是一个旨在简化桌面开发难度的通用窗体,它可以让你使用当前主流的HTML5技术快速地创建Windows桌面应用程序。创作桌面应用,不需要掌握QT,C++,C#,Java那些繁琐的东西,只要会创建网页就可以。同...
  • Flutter教程之Windows桌面应用程序开发

    万次阅读 2021-12-18 14:50:42
    一、前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。...本文主要讲如何使用Flutter来进行Windows桌面应用程序开发。
  • 用vue做桌面应用程序 Vue桌面基础样板 (vue-desktop-basic boilerplate) Boilerplate for a simple Desktop App made with Vue. 使用Vue制作的简单桌面应用程序的样板。 这是什么 (What is this) This is a ...
  • 浅谈桌面应用程序的开发

    千次阅读 2021-01-02 14:42:09
    浅谈桌面应用程序的开发 常用的桌面的应用程序的开发有这几个技术(难度递减) windows api > MFC > Qt > WinForm > WPF > Java 的Swing Python Qt Go语言等
  • php开发桌面应用程序PHP as a cross-platform desktop app development language? Blasphemy! Nonetheless, it’s possible. PHP作为跨平台的桌面应用程序开发语言? 亵渎! 尽管如此,还是有可能的。 A few years...
  • Linux 桌面应用程序

    千次阅读 2019-10-08 17:52:48
    要在Linux下开发具有图形界面的桌面应用程序,我们有许多选择。当然,除了语言方面的考虑外,我们更多的是考虑窗口部件工具箱(以前成为控件库或组件库)的选择,这将在很大程度上影响我们的开发效率。 总结:Pyqt...
  • Electron软件框架,允许使用JavaScript创建桌面GUI应用程序接口,并依赖...对于那些喜欢使用Web标准来创建桌面GUI的人来说,现在有一种方法可以使用HTML5和Golang创建桌面应用程序前端,而且负担更轻。开发人员Serge...
  • 在卸载AdobeCreative Cloud提示无法卸载弹窗,“无法卸载Creative Cloud 桌面应用程序。您的计算机上仍安装着需要使用该桌面应用程序的 Creative Cloud 应用程序。”之前素材君分享过一篇《Adobe官方卸载工具,轻松...
  • 学习了Java,一直做的是web方面的,想用Java写一个桌面应用程序,就是那种双击桌面图标即可运行的,但不知道如何下手,看到网上说Java不适合做桌面应用,怎么讲呢?
  • 如何创建一个 Windows 桌面应用程序

    万次阅读 多人点赞 2018-09-06 21:40:17
    工具:Visual Studio 2017 Community  在大学期间,不过学习 C/C++ 还是 Java,...本文就这个问题分享一下创建 Windows 桌面应用程序的两种途径。  创建 Windows 桌面程序有多种技术,但是哪种比较适合自己呢...
  • 下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考。 WinMain函数 Windows应用程序的唯一程序入口。 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, LPSTR ...
  • 最近想开发一套Netty网关日志分析程序,用来分析设备的原始数据。因为网关是放在linux服务器上,之前查看日志是通过Xftp工具将日志下载到本地,然后找到对应的日志数据进行分析。 对于运维人员来说,上述的日志分析...
  • 如何创建一个最简单的Windows桌面应用程序 (C++)

    万次阅读 多人点赞 2017-02-07 13:23:49
    如何创建一个最简单的Windows桌面应用程序 (C++)  最近刚开始学习C/C++开发Windows应用程序,这里将会以零基础的视角把学习过程完全记录下来。如果你也刚刚起步,那本文一定非常适合你。  进入正题,本文讨论...
  • 为什么用Python开发桌面应用程序

    万次阅读 2018-01-22 15:15:40
    为什么用Python开发桌面应用程序 为什么用Python开发桌面应用程序 1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植。 2)Python的面向...
  • JAVA程序包装成桌面应用程序

    千次阅读 多人点赞 2019-07-09 08:50:17
    现在主流都是web开发,有谁像我一样的,开发N年后被要求做几个桌面程序,哈哈,本来也不会,入了几个坑后,现在博文献主,希望解你忧愁。 一,首先你得有写好的JAVA代码,并能够跑起来,注意,不是WEB结构,是纯JAVA...
  • dotnet core 创建桌面应用程序(极简流程) 在最近 dotnet core 3.0发布 我们可以使用 dotnet core 开发windows PC端的桌面应用程序,我们下面出一下简单的创建项目流程,我用的vs版本是 ,vs企业版 16.3.1 环境:VS...
  • Java桌面应用程序

    万次阅读 多人点赞 2017-04-13 15:27:47
    java桌面应用印象因为桌面程序运行在宿主机器上, 所以比如你运行java桌面程序,必然要安装java虚拟机, 也就是相当于在操作系统上再加一层抽象, 这与直接调用api的桌面程序效率相比,或多或少低一点。 因为...
  • 用python打开桌面应用程序

    千次阅读 2020-03-14 22:26:52
    win32api.ShellExecute((0, ‘open’, r’要打开的程序路径’, ‘’,’’,1) import win32api#先要安装pywin32,pip install pywin32 win32api.ShellExecute(0, 'open', r'D:\Program Files (x86)\Tencent\QQ\Bin\...
  • C# 桌面应用程序

    千次阅读 2017-02-25 22:03:43
    桌面应用程序下面介绍建立 用户界面 的基础知识,说明如何 启动和运行 桌面应用程序。 但并不详细讨论应用程序实际完成的工作。 微软推荐我们使用 WPF 技术来创建桌面应用程序。 我们以后会详细研究桌面应用程序...
  • VS2019_Windows桌面应用程序_01

    千次阅读 2020-04-13 23:12:34
    最近跟着吕鑫老师学习VS的Windows应用开发,跟着新建Windows桌面应用程序 直有错误 在百度折腾了好久,最后才发现是工程属性的问题。 最后更改工程属性-连接器-系统-子系统-窗口 最终编译通过。 2020-04-13 ...
  • Electron 可以构建跨平台桌面程序(Mac、Windows、Linux),是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。 相当于你会js、html 你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 363,638
精华内容 145,455
关键字:

桌面应用程序

友情链接: vc_选型卡例程.zip