小编The*_*ple的帖子

在c ++中修复类型转换警告的最佳方法

所以,当我收到这样的警告时,我从来不知道该怎么做,所以我想要其他专业程序员的建议.当我得到那种警告(而不是错误)

警告C4267:'=':从'size_t'转换为'ULONG',可能会丢失数据

(省略其他上下文代码)

wchar_t pszName[CREDUI_MAX_USERNAME_LENGTH + 1] = L"user";
wchar_t pszPwd[CREDUI_MAX_PASSWORD_LENGTH + 1] = L"password";

// ..

COAUTHIDENTITY authIdent;

// ...

memset(&authIdent, 0, sizeof(COAUTHIDENTITY));
authIdent.PasswordLength = wcslen(pszPwd);
authIdent.UserLength = wcslen(pszName);
Run Code Online (Sandbox Code Playgroud)

问题显然是wcslen()返回size_t,authIdent.PasswordLength是ULONG.照顾这些警告的最佳方法是什么?是否有winapi函数,他们希望我使用而不是wcslen()?

编辑:感谢大家的所有好评!

c++ windows warnings types

3
推荐指数
1
解决办法
384
查看次数

尝试移除打印机时拒绝访问

def on_printer_button_clicked(self, button):
    for i in range(len(self.printer_buttons)):
        if button == self.printer_buttons[i]:
            pHandle = win32print.OpenPrinter(self.printers[i]['pPrinterName'])
    win32print.DeletePrinter(pHandle)
    return
Run Code Online (Sandbox Code Playgroud)

所以我所做的就是打开打印机句柄并调用函数删除打印机,如您所见。这是我在运行该函数时在控制台中得到的信息:

uninstall_windowGUI.py", line 57, in on_printer_button_clicked
win32print.DeletePrinter(pHandle)
pywintypes.error: (5, 'DeletePrinter', 'Access is denied.')
Run Code Online (Sandbox Code Playgroud)

我试过运行 IDE(管理员模式下的 Pycharm,但仍然遇到同样的问题。关于如何继续前进的任何想法?在我弄清楚之前我有点卡住了。(另外:我正在使用 Gtk 和Gdk 创建接口,如果这有区别的话。)

python printing pywin32 pycharm

1
推荐指数
1
解决办法
759
查看次数

gtkmm 中的程序不会显示按钮

我正在尝试在 gtkmm 中编写一个程序,但按钮不会显示。我已经做了我所知道的一切来让这些按钮显示,但没有任何效果。我什至在 main 和 win_home.cpp 文件中都包含了“显示全部”方法,但仍然没有任何反应。然而,程序确实会执行代码,因为 cout 语句都被打印出来。有谁知道为什么这些按钮不会显示?

主要.cpp:

#include <gtkmm.h>
#include <iostream>
#include "win_home.h"

int main(int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv, "com.InIT.InITPortal");

    std::cout << "Creating Portal Window" << std::endl;
    HomeGUI win_home;

    win_home.set_default_size(600,400);
    win_home.set_title("St. George InIT Home");

    return app->run(win_home);
}
Run Code Online (Sandbox Code Playgroud)

win_home.cpp:

#include "win_home.h"

HomeGUI::HomeGUI()
{
    //build interface/gui
    this->buildInterface();
    //show_all_children();

    //register Handlers
    //this->registerHandlers();
}
HomeGUI::~HomeGUI()
{

}

void HomeGUI::buildInterface()
{

    std::cout << "Building Portal Interface" << std::endl;
    m_portal_rowbox = Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 5);
    add(m_portal_rowbox);
        Gtk::Button m_pia_button = Gtk::Button("Printer …
Run Code Online (Sandbox Code Playgroud)

c++ gtk button show gtkmm

1
推荐指数
1
解决办法
425
查看次数

标签 统计

c++ ×2

button ×1

gtk ×1

gtkmm ×1

printing ×1

pycharm ×1

python ×1

pywin32 ×1

show ×1

types ×1

warnings ×1

windows ×1