小编Ray*_*hen的帖子

如何设置替代文字颜色?

我想样式地图区域图像的替代文字颜色 - > alt ="维多利亚的秘密"默认为蓝色,但我想要红色!我尝试了一些没有成功的方法......有什么帮助吗?

这是我的代码:

<map name="Map" id="Map">
        <area shape="rect" coords="22,4,126,50" href="http://www.victoriassecret.com/" target="_blank" alt="Victoria's Secret"/>
Run Code Online (Sandbox Code Playgroud)

html text alt

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

创建具有特定格式的位图以反转/镜像它

我正在使用以下方法来创建反转位图:

HBITMAP CreateMirroredBitmap( HBITMAP hbmOrig)
{
    HDC hdc, hdcMem1, hdcMem2;
    HBITMAP hbm = NULL, hOld_bm1, hOld_bm2;
    BITMAP bm;
    if (!hbmOrig)
        return NULL;
    if (!GetObject(hbmOrig, sizeof(BITMAP), &bm))
        return NULL;

    // Grab the screen DC.
    hdc = GetDC(NULL);
    if (hdc)
    {
        hdcMem1 = CreateCompatibleDC(hdc);
        if (!hdcMem1)
        {
            ReleaseDC(NULL, hdc);
            return NULL;
        }
        hdcMem2 = CreateCompatibleDC(hdc);
        if (!hdcMem2)
        {
            DeleteDC(hdcMem1);
            ReleaseDC(NULL, hdc);
            return NULL;
        }
        hbm = CreateCompatibleBitmap(hdc, bm.bmWidth, bm.bmHeight);
        if (!hbm)
        {
            ReleaseDC(NULL, hdc);
            DeleteDC(hdcMem1);
            DeleteDC(hdcMem2);
            return NULL;
        }
        // Flip the …
Run Code Online (Sandbox Code Playgroud)

c++ winapi visual-c++

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

错误C2234:引用数组是非法的

我写了这样的代码:

 void Print(const int & dataArray[], const int & arraySize) {  // problem 
    for(int i = 0; i<arraySize; i++) {
        cout << dataArray[i] << " ";
    }
    cout << endl;
    }
Run Code Online (Sandbox Code Playgroud)

在mian()函数中:

`
int iArray[14] = { 7, 3, 32, 2, 55, 34, 6, 13, 29, 22, 11, 9, 1, 5 }; 
int numArrays = 14;
Print(iArray, numArrays);
....
`
Run Code Online (Sandbox Code Playgroud)

编译器说引用数组是非法的,为什么它是非法的?我看到<effective c ++>,它说建议我们使用const和reference,我只是尝试实现它(我是初学者),我也想知道void Print(const int dataArray[], const int & arraySize)参数我用const,&来限定arraySize,是不是?(或者它比int arraySize或const int arraySize好多了?),我也想使用const,&to dataArray [],但是我失败了.

c++

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

Windows C++ - 在类中创建窗口使它看起来不寻常

好的,所以我创建了一个创建HWND的类.

但是,创建的窗口显示了一些奇怪的属性:它不像其他窗口 - 它是不透明的,close-minimize-maximize按钮的位置与普通窗口不同.

但指定的样式是默认值(WM_OVERLAPPEDWINDOW).

更重要的是,它不能被关闭,除非我稍微移动它(似乎它在移动之前没有生成WM_DESTROY或WM_CLOSE消息).

这可能是主WinProc的实现使用指针调用另一个消息处理器的问题.但是,我不知道为什么窗户看起来异常.

更新:在WM_NCCREATE处理程序上设置HWND时,窗口正常显示.

无法关闭窗口的问题可以通过向类添加close变量并在生成WM_CLOSE或WM_DESTROY的消息时将其值设置为false来解决.

似乎正在生成消息WM_CLOSE,但PostQuitMessage(0)不会破坏mHwnd,除非窗口被移动.

因此,最好的选择是使用该变量手动转义消息循环.

我已经使用解决方案添加了代码更新.

我的代码:

//mywind.h
class Window
{
private:
    HWND mHwnd;
    const char* className="Window";
    static LRESULT CALLBACK StartWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); //main WindowProc function
    LRESULT ThisWindowProc(UINT msg, WPARAM wParam, LPARAM lParam); //Another, object-specific message processing function
    bool isClassRegistered(HINSTANCE hinst);

public:
    Window() : mHwnd( 0 ) { }
    ~Window();

    int create(std::string title, int width, int height);
};

//mywind.cpp
Window::~Window()
{
    if( mHwnd ) DestroyWindow( mHwnd );
}

int …
Run Code Online (Sandbox Code Playgroud)

c++ windows pointers

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

C++语法错误 - 找不到标识符

我有一个文件"injectdll.h",代码:

#include <windows.h>
#include <tlhelp32.h>

void GetTargetThreadIdFromProcname(char *procName);

bool LoadDll(char *procName, char *dllName);
Run Code Online (Sandbox Code Playgroud)

和一个文件"injectdll.cpp",代码如下:

#include "StdAfx.h"
#include "injectdll.h"

void GetTargetThreadIdFromProcname(char *procName)
{
} 

bool LoadDll(char *procName, char *dllName)
{
    GetTargetThreadIdFromProcName(procName);
}
Run Code Online (Sandbox Code Playgroud)

我无法编译那么简单的代码:

错误C3861:"GetTargetThreadIdFromProcName":Bezeichner wurde nicht gefunden./'identifier':找不到标识符,即使是依赖于参数的查找

哪里出错?这让我疯狂...

c++ windows visual-c++

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

x86程序集创建窗口 - 错误A2111:冲突的参数定义和A2008:语法错误 - 如何修复?

我正在关注Iczelion的Win32教程,特别是教程3("简单窗口"),当试图为了实验而"剥离"一些错误处理和不必要的代码时,我在编译时遇到以下错误:

test.asm(38) : error A2111: conflicting parameter definition.
Run Code Online (Sandbox Code Playgroud)

这是一行:

第38行:

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdShow:DWORD
Run Code Online (Sandbox Code Playgroud)

我的问题是:这行代码有什么问题?

提前致谢.

编辑:

这是整个脚本,其中有违规行注释:

.386 

.model flat, stdcall 
option casemap :none 

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

include \masm32\include\windows.inc 
include \masm32\include\user32.inc 
include \masm32\include\kernel32.inc 
include \masm32\include\gdi32.inc 
includelib \masm32\lib\user32.lib 
includelib \masm32\lib\kernel32.lib 
includelib \masm32\lib\gdi32.lib

.data 

    ClassName db "Testwin", 0
    AppName db "Testing Window", 0

.data?

    hInstance HINSTANCE ?

.code 
start: 

    push NULL
    call GetModuleHandle
        mov  hInstance,eax
    push SW_SHOWDEFAULT
    push NULL
    push hInstance
    call WinMain
    push eax
        call ExitProcess

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdShow:DWORD   ; this …
Run Code Online (Sandbox Code Playgroud)

windows x86 assembly masm32

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

JS- Math.atan(y/x),x == 0

我想通过xValue和yValue确定一个角度,但如果xValue为零,我就无法工作.那个案子我该怎么办?

Math.atan(yValue/xValue);
Run Code Online (Sandbox Code Playgroud)

javascript math

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

信号量上的WaitForSingleObject不等待,立即返回

我正在尝试使用Windows文件映射创建一个简单的客户端 - 服务器程序,并使用信号量.客户端向服务器发送2个号码,服务器计算nr1 + nr2和nr1*nr2.我尝试了一些东西,但它甚至不适用于1个客户端,我希望它能为更多客户工作.这是代码:

服务器:

#include <windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;

typedef struct {
    int nr1;
    int nr2;
} Mesaj;

int main(int argc, char** argv) {

    Mesaj* mesaj;

    HANDLE createSemaphore = CreateSemaphore(NULL, 1, 1, "Semafor");
    if (createSemaphore == NULL || createSemaphore == INVALID_HANDLE_VALUE) {
        wcout << "Failed to create a semaphore\n";
    } else {
        wcout << "Created the semaphore\n";
    }

    HANDLE hMemory = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,
            PAGE_READWRITE, 0, sizeof(Mesaj), "SharedMemory");

    WaitForSingleObject(createSemaphore, INFINITE);

    mesaj = (Mesaj*) MapViewOfFile(hMemory, FILE_MAP_READ, …
Run Code Online (Sandbox Code Playgroud)

c++ windows file-mapping

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

C++自定义删除操作符不能正常工作?

首先要说我是西班牙语,我的英语非常糟糕,我使用了一名翻译,因为我看起来像个文盲而道歉:)


我已经多年没有玩c ++而且我已经忘记了很多,以至于我可能怀疑或者可能的失败是语言中的基本内容.

我编写了一个小代码来测试c ++中带有虚拟析构函数的delete运算符的开销,我发现只有在第一次调用delete时它才能正常工作.

代码就在这里(这是一个允许你在线编写代码并执行代码的页面,我在visual studio和gcc中进行了测试,它完全相同):https://onlinegdb.com/SkiI1dNDQ

有人能告诉我为什么会这样吗?只有第一次运作良好,第二次运行不顺利

我也把代码放在这里,结果给出了:

#include <stdio.h>
class Base
{
public:
    virtual ~Base() { printf("~Base\r\n"); }
    void operator delete(void *m) { printf("delete Base\r\n"); }
};
class Derived : public Base
{
public:
    Derived() { x = 1; }
    ~Derived() { printf("~Derived\r\n"); }
    void operator delete(void *m) { printf("delete Derived\r\n"); }
    int x;
};

int main()
{
    Derived *derived = new Derived();
    printf("1) delete derived (%i)\r\n", ((Derived*)derived)->x);
    delete derived;
    printf("2) delete derived (%i)\r\n", ((Derived*)derived)->x); …
Run Code Online (Sandbox Code Playgroud)

c++ virtual delete-operator

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