小编Bar*_*ani的帖子

Win32 LoadBitmap 返回错误 1814

LoadBitmap()一段时间以来我一直在努力上班。它返回错误 1814 ERROR_RESOURCE_NAME_NOT_FOUND,。下面的代码,但到目前为止我已经尝试过:

  • 使用(HBITMAP)LoadImage()代替LoadBitmap()
  • 使用MAKEINTRESOURCE('ICON.BMP')而不是资源标识符
  • 更改位图的文件名、资源标识符名称和资源类型,以及尝试使用完整路径名或仅使用文件名
  • 使用GetModuleHandle(NULL)而不是将实例句柄传递给函数
  • 将其分离MAKEINTRESOURCE并放在自己的错误检查后面只是为了确保问题不存在(它不存在)
  • 检查编译器和链接器的更新
  • 单步执行调试器

我还浏览了我能找到的关于此问题、其他网站、MSDN 文档的每个 SO 问题,并尝试应用我在那里找到的内容,但无济于事。我缺少什么?

在 Eclipse 上使用 MinGW

资源文件

#include "resource.h"

IDBMP_TREEICON BITMAP "icon.bmp"
Run Code Online (Sandbox Code Playgroud)

资源.h

#ifndef __RESOURCE_H_INCLUDED__
#define __RESOURCE_H_INCLUDED__

#define IDBMP_TREEICON 101

#endif
Run Code Online (Sandbox Code Playgroud)

主程序

#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include <string>
#include "resource.h"

BOOL InitTreeViewImage(HINSTANCE hInstance, HWND hWnd){
    HBITMAP hbmp = NULL;
    HIMAGELIST hImgList;

    if((hImgList = ImageList_Create(10, 10, FALSE, 1, 0)) == NULL){
        MessageBox(NULL, "Failed to create ImageList!", …
Run Code Online (Sandbox Code Playgroud)

c++ winapi

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

使用VC++ MFC对话框从数据库中检索数据

我编写了下面的代码,使用C#Windows Form Application从数据库中检索数据,但现在我想在VC++ MFC对话控件中实现相同的数据检索思想:这是我在C#Windows窗体应用程序中实现的代码:请亲切救命

c.Open();
DateTime startDateTime = Convert.ToDateTime(textBox1.Text);
DateTime endDateTime = Convert.ToDateTime(textBox2.Text);
string query = "SELECT * FROM People_Tracking WHERE Enter_Exit_Time BETWEEN @startDateTime AND @endDateTime ;";
SqlCommand cmd = new SqlCommand(query, c);
cmd.Parameters.Add("@startDateTime", SqlDbType.DateTime).Value = startDateTime;
cmd.Parameters.Add("@endDateTime", SqlDbType.DateTime).Value = endDateTime;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable t = new DataTable();
adapter.Fill(t);
dataGridView1.DataSource = t;
Run Code Online (Sandbox Code Playgroud)

这是我想如何在VC++中显示它的图像 MFC对话控件在这里输入图像描述:

c# c++ mfc

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

GetTextExtentPoint32不考虑当前字体

我需要找到任何字体的字符串的宽度。但是,当我使用时GetTextExtentPoint32,它不会考虑当前字体。这是我的代码:

HFONT hFont = CreateFont(36, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, 
    OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL);

SelectObject(GetDC(m_hSettingsWnd), hFont);
GetTextExtentPoint32(GetDC(m_hSettingsWnd), TITLE_TEXT, wcslen(TITLE_TEXT), &sTextSize);
// TITLE_TEXT is the string I'm trying to get the width of.
Run Code Online (Sandbox Code Playgroud)

任何人也可以更正格式吗?我是Stack Overflow的新手,并且代码示例对我来说无法正常工作。

c++ winapi text

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

为什么在系统服务中运行的此代码中 LoadUserProfile() 失败并出现错误 5“拒绝访问”?

我有一段代码在我的系统级 Windows 服务中运行,如下所示。如果我将 CreateEnvironmentBlock() 和 CreateProcessAsUser() 添加到代码中,那就可以了。但我使用“LoadUserProfile()”,它失败并出现错误 5,这应该意味着“访问被拒绝”。请帮忙检查一下缺少什么。我想要的是从此系统服务检索用户级注册表值。代码中的注释是另一种方式,但也未能检索到用户级注册表值。

void GetUserRegistry()
{
#ifdef Q_OS_WIN

    DWORD lastError = 0;

    DWORD sessionId = WTSGetActiveConsoleSessionId();
    qInfo() << "Session ID = " << sessionId;

    wchar_t* ppUserName[100];
    DWORD sizeOfUserName;
    WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, sessionId, WTSUserName, ppUserName, &sizeOfUserName);
    qInfo() << "Windows User Name = " << QString::fromWCharArray(*ppUserName);

    std::wstring strValueOfBinDir = L"Unknown Value";
    // LONG regOpenResult = ERROR_SUCCESS;

    HANDLE hUserToken = NULL;
    HANDLE hFakeToken = NULL;

    if (WTSQueryUserToken(sessionId, &hUserToken))
    {
         if (DuplicateTokenEx(hUserToken, TOKEN_ASSIGN_PRIMARY | TOKEN_ALL_ACCESS, 0, SecurityImpersonation, TokenPrimary, &hFakeToken) == TRUE) …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi visual-studio

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

标签 统计

c++ ×4

winapi ×3

c# ×1

mfc ×1

text ×1

visual-studio ×1

windows ×1