0

每个人我都想尝试一些东西,我需要一点帮助。我想做的是创建一些函数,将它们的指针存储到一个数组中,然后在 Windows 消息过程中调用它们。例如:

int create_functions[10];
int paint_functions[10];

int func1() {
    // code
}

void func2(int arg1) {
    // code
}

create_functions[0] = *func1; // add pointer of func1 to the first array
create_functions[1] = *func2; // add pointer of func2 to the second array

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
        case WM_CREATE:
            // execute create_functions[0] - How do I do it?
        case WM_PAINT:
            // execute paint_functions[0] - How do I do it?
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
             return DefWindowProc(hWnd, message, wParam, lParam);
             break;
        }
        return 0;
    }

我知道有人会问:为什么不直接执行func1/func2。因为我将决定在运行时执行哪些功能。感谢大家的帮助!

编辑: 回调函数呢?我不太明白如何使用它们?

4

3 回答 3

3

如果问题是:如何做函数指针,我建议你看一下这个主题的文章,比如http://www.newty.de/fpt/index.html

如果这不是您的问题,您能否编辑并添加更多详细信息。

于 2012-05-11T20:58:48.533 回答
2

这个

int create_functions[10];
int paint_functions[10];

应该

void (*create_functions[10])(void);
void (*create_functions[10])(int);

// execute create_functions[0] - How do I do it?
// execute paint_functions[0] - How do I do it?

应该

create_functions[0]();
paint_functions[0](some_integer_here);

create_functions[0] = *func1; // add pointer of func1 to the first array
create_functions[1] = *func2; // add pointer of func2 to the second array

应该

create_functions[0] = func1; // add pointer of func1 to the first array
create_functions[1] = func2; // add pointer of func2 to the second array

或者

create_functions[0] = &func1; // add pointer of func1 to the first array
create_functions[1] = &func2; // add pointer of func2 to the second array

根据您的口味或心情。

于 2012-05-11T21:01:24.793 回答
0

您可以将指针传递给 wParam 中的数组。

于 2012-05-11T20:57:53.657 回答