initwindow()无法调用
时间: 2023-08-12 10:06:58 浏览: 438
如果在使用`initwindow()`函数时出现无法调用的问题,可能是因为没有正确地链接graphics库。在使用graphics库时,需要在编译选项中添加`-lgraphics`参数,以告诉编译器链接graphics库。
具体来说,如果你使用的是Code::Blocks集成开发环境,可以按照以下步骤添加链接参数:
1. 打开项目的“Build options”对话框。在Code::Blocks顶部菜单栏中,选择“Project” -> “Build options”。
2. 在“Build options”对话框中,选择“Linker settings”选项卡。
3. 在“Link libraries”一栏中,点击“Add”按钮,然后输入“graphics”(不包括引号)。
4. 点击“OK”按钮保存更改,然后重新编译程序即可。
如果你使用的是其他开发环境,可以在编译选项中添加以下参数:
```
-lgraphics -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
```
其中,`-lbgi`参数表示链接BGI库,`-lgdi32`、`-lcomdlg32`、`-luuid`、`-loleaut32`、`-lole32`这些参数是在使用BGI库时需要链接的Windows系统库。
相关问题
c语言中initwindow用法
在 C 语言中,initwindow() 是用于初始化图形窗口的函数,它位于 graphics.h 头文件中。该函数的原型如下:
```
void initwindow(int width, int height, const char* title=" ", int left=0, int top=0);
```
其中,各参数的含义如下:
- `width`:窗口宽度(以像素为单位)
- `height`:窗口高度(以像素为单位)
- `title`:窗口标题(字符串类型)
- `left`:窗口左侧距离屏幕左侧的距离(以像素为单位)
- `top`:窗口顶部距离屏幕顶部的距离(以像素为单位)
使用 `initwindow()` 函数,可以创建一个指定大小和位置的图形窗口,并将其显示在屏幕上。例如,以下代码可以创建一个大小为 640x480 像素的窗口,并在其中显示标题为 "My Window" 的窗口:
```
#include <graphics.h>
int main()
{
initwindow(640, 480, "My Window");
// 其他绘图代码
getch();
closegraph();
return 0;
}
```
注意,使用 `initwindow()` 函数时需要先调用 `initgraph()` 函数进行图形环境初始化,使用完毕后需要调用 `closegraph()` 函数关闭图形环境。
DuiLib中例如我定义了一个窗口 class MainFrameWnd :public WindowImplBase 里面重写了InitWindow和Notify以及HandleMessage等函数,这些函数实在哪里调用的, MainFrameWnd* main_frame_wnd = new MainFrameWnd; main_frame_wnd->Create(nullptr, MainFrameWnd::kClassName, UI_WNDSTYLE_FRAME, 0);我只调用了Create(...)函数,并没有调用重写的虚函数
在DuiLib中,重写的虚函数如InitWindow、Notify和HandleMessage等函数是在创建窗口后自动被DuiLib框架调用的。当调用Create函数创建窗口时,DuiLib会根据窗口类的类型创建对应的窗口实例。然后,在创建窗口的过程中,DuiLib会自动调用重写的虚函数来完成一些初始化工作和消息处理。
具体的调用流程如下:
1. 调用Create函数创建窗口实例,此时会触发窗口的构造函数。
2. 在Create函数内部,会调用RegisterWindowClass函数注册窗口类。
3. 调用CreateWindowEx函数创建真实的Windows窗口,并将窗口句柄保存到窗口实例中。
4. 调用OnInitWindow函数来初始化窗口,包括设置窗口样式、加载布局等。
5. 调用Notify函数来处理窗口的通知消息,比如点击按钮、选择列表项等操作。
6. 当窗口收到消息时,会自动调用HandleMessage函数来处理消息。HandleMessage函数会根据消息类型和内容执行相应的逻辑。
所以,当你调用Create函数创建窗口时,重写的虚函数会在相应的时机被自动调用。你无需手动调用这些虚函数,DuiLib框架会负责在合适的时机去调用它们。
阅读全文