小编xcd*_*n05的帖子

将BITMAP转换为HBITMAP

如果我有一个BITMAP名字bitmap,如何将其转换为HBITMAP?

到目前为止,我尝试过:

HBITMAP hbm = (HBITMAP)&bitmap; //doesn't work

HANDLE hand = &bitmap;
HBITMAP hbm = hand; //doesn't work

CImage cim;
cim.Attach(&bitmap);
HBITMAP hbm = cim.Detach(); //definitely doesn't work

CBitmap cbm;
cbm.Attach(bitmap);
CImage cim;
cim.Attach(cbm.Detach());
HBITMAP hbm = cbm.Detach(); //desperate I know, horribly failed
Run Code Online (Sandbox Code Playgroud)

必须有一些简单的,一行的方式来做它但我找不到它.我可以得到一些帮助吗?

c++ windows winapi

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

每当我使用纯虚函数时,"错误:未解析的外部符号"

我觉得我做的事情非常愚蠢,但我根本无法弄清楚我的代码有什么问题.我甚至制作了代码的超级简化版本,但仍然出现错误:

#include <iostream>

using namespace std;

class c1{
public:
    c1(){}
    ~c1(){}

    virtual int add(int a, int b);

private:
protected:


};

class c2 : c1{
public:
    c2(){}
    ~c2(){}

    int add(int a, int b){
        return a+b;
    }

};

int main(){

    c2 c;
    c.add(5,6);

}
Run Code Online (Sandbox Code Playgroud)

任何人都可以发现我确信有史以来最愚蠢的错误吗?

这是确切的错误消息:

1>main.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall c1::add(int,int)" (?add@c1@@UAEHHH@Z)
Run Code Online (Sandbox Code Playgroud)

c++ inheritance virtual-functions class

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

如何使8位位图在C++中显示为单色?

当我设置并创建这样的24位位图时:

   //fileheader
    BITMAPFILEHEADER* bf = new BITMAPFILEHEADER;
    bf->bfType = 0x4d42;
    bf->bfSize = 6054400 + 54;
    bf->bfOffBits = 54;

    //infoheader
    BITMAPINFOHEADER* bi = new BITMAPINFOHEADER;
    bi->biSize = 40;
    bi->biWidth = 2752;
    bi->biHeight = -733;
    bi->biPlanes = 1;
    bi->biBitCount = 24;
    bi->biCompression = 0;
    //bi->biSizeImage = 6054400;
    bi->biXPelsPerMeter = 2835;
    bi->biYPelsPerMeter = 2835;
    bi->biClrUsed = 0;
    bi->biClrImportant = 0;

    pFrame->GetImage(m_imageData);

    //
    //create bitmap...
    //(hbit is a global variable)

    BITMAPINFO* bmi;
    bmi = (BITMAPINFO*)bi; 
    HDC hdc = ::GetDC(NULL);

    hbit = CreateDIBitmap(hdc, bi, CBM_INIT, …
Run Code Online (Sandbox Code Playgroud)

c++ gdi image bitmap

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

Visual Studio中的行号旁边有哪些图标?

在Visual Studio 2010中的一些C++文件中,行号旁边有这些奇怪的图标.我无法点击它们,右键单击它们,或以任何方式与它们进行交互.我唯一能做的就是移动/删除代码行,这些图标遵循它们所在的行/删除行时删除.

我到处都看,但一无所获.有人能告诉我这些是什么吗?

PIC

visual-studio-2010 visual-studio

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

无法删除unsigned char*数组

在我的一个对象中,我创建了一个无符号字符数组成员来存储一些图像数据:

    unsigned char* imageData;
Run Code Online (Sandbox Code Playgroud)

在构造函数中,我用new初始化它:

    MyObject::MyObject()
    {
        int imageSize = 6054400;
        imageData = new unsigned char[imageSize];
    }
Run Code Online (Sandbox Code Playgroud)

imageData在整个循环过程中被填充.

直到循环结束时才会删除此对象(MyObject),但我需要在循环中途删除imageData.所以我刚刚创建了这个函数:

    void MyObject::DeleteAllMembers
    {
        delete [] imageData;
    }
Run Code Online (Sandbox Code Playgroud)

我在循环结束时调用它:

    theObj.DeleteAllMembers();
Run Code Online (Sandbox Code Playgroud)

问题是每次我的程序进入代码行:

    delete [] imageData;
Run Code Online (Sandbox Code Playgroud)

它崩溃了,留下这个错误信息:

错误

在这一点上,我不知道为什么会这样.

我尝试过的一些事情是:

  • 使用imageSize + 1而不仅仅是imageSize初始化imageData
  • 将delete命令移动到析构函数并手动删除每个遍历循环的对象
  • 使用delete imageData而不是delete [] imageData,即使我很确定我需要使用delete []
  • imageData = 0删除它后尝试过,不幸的是我的程序仍在崩溃delete [] imageData.
  • 我尝试过使用memset(&imageData, 0, imageSize);,但这给了我一个访问冲突错误.

每次,程序仍然在同一行崩溃.我知道有人在看我的代码,认为"你好,你要做的就是____________________." 有人可以告诉我我做错了什么吗?

编辑:对不起我说错了.我每次在开始时创建该对象循环和它能够在结束时删除循环,我不知道为什么我在节目的开头和结尾说.

c++ memory heap object

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

在非成员函数中访问MFC对话框的成员变量

我正在使用MFC对话框,我不知道如何从非成员函数访问对象的成员变量(编辑控件,按钮,复选框等).

由于对象是在创建任何的.cpp,所有的对象事件在whateverDlg.cpp处理,而后者#include的前者,我无法用常规手段获得DLG的成员.

澄清示例:

void BlahDlg::OnBnClickedblah()
{
    //...
    CString text = L"blahblahblah";
    m_bEditControl.SetWindowTextW(text.GetBuffer()); //works fine
    //...
}

void nonMember()
{
    //...
    CString text = L"blahblahblah";
    m_bEditControl.SetWindowTextW(text.GetBuffer()); //m_bEditControl is unknown
    //...
}
Run Code Online (Sandbox Code Playgroud)

换句话说:我应该怎么做才能m_bEditControl从非成员函数访问(或任何其他对话框的成员)?

c++ mfc scope object visual-c++

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