1

我正在用 c++ 创建一个 winAPI 应用程序我在预览窗格中有一张照片,我想在单击它们时创建两个按钮 NEXT 和 PREVIOUS 我将转到下一页。

你能告诉我如何在 C++ 中做到这一点吗?

我需要使用 QT libraray 还是可以使用 WinAPI 的内置函数来完成,例如 -

HWND hwndButton1 = CreateWindow(L"BUTTON",L"NEXT",WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,550,800,100,30,m_hwndPreview,(HMENU)buttonid1,(HINSTANCE)GetWindowLong(m_hwndPreview, -6),NULL);

    HWND hwndButton2 = CreateWindow(L"BUTTON",L"PREVIOUS",WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,650,800,100,30,m_hwndPreview,(HMENU)buttonid2,(HINSTANCE)GetWindowLong(m_hwndPreview, -6),NULL);

然后使用 WM_COMMAND 进行两次按钮单击。

我走对了吗?

我只是希望我的 API 应用程序像 .pdf 扩展文件一样工作......就像在 PDF 文件中我们有向上和向下箭头一样,点击它们我们可以转到下一页......在 winAPIc++ 中我找不到任何这样的箭头功能..请告诉我是否有任何这样的向上/向下箭头功能可以转到下一页(因为我对使用 createwindow 功能创建 NEXT 和 PREVIOUS 按钮不太感兴趣。它看起来很奇怪)。

4

3 回答 3

1

大多数按钮(和其他控件)是使用资源编辑器创建的,将控件放置在对话框模板或工具栏资源上。如果您这样做,Windows 将在您创建对话框或工具栏时创建按钮。这种方法更受欢迎,因为 Windows 将根据使用的屏幕设置的需要调整按钮的大小。

如果你不能这样做,你必须像你一样使用 CreateWindow。

于 2013-07-15T16:47:57.553 回答
1

您没有提到您使用的是什么工具,所以我们不知道您是否有资源编辑器。您应该在适合这些工具的论坛中进行研究。如果您认为编写一行代码来创建按钮“非常复杂”,那么您需要一个更好的工具。

如果您不希望按钮出现在图片顶部,那么您需要另一个位置来放置它们。一种常见的可能性是工具栏。它是主窗口顶部或底部的按钮条:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760435(v=vs.85).aspx

使用资源编辑器,您可以在按钮上绘制箭头。如果没有资源编辑器,您可以将按钮文本设置为 unicode 箭头:

SetWindowText(hwndButton1, L"\x25bc"); // 向下箭头,向上箭头使用 25b2

于 2013-07-15T20:33:29.893 回答
1

终于完成了..我既没有使用Qt也没有使用任何createWindowEx创建按钮。最好和最简单的方法是资源编辑器......只需在对话框上放置一些按钮并使用IDD_MAINDIALOG(在我的情况下)

m_hwndPreview = CreateDialogParam( g_hInst,MAKEINTRESOURCE(IDD_MAINDIALOG), m_hwndParent,(DLGPROC)DialogProc, (LPARAM)this);

接着

BOOL CALLBACK AMEPreviewHandler::DialogProc(HWND m_hwndPreview, UINT Umsg, WPARAM wParam, LPARAM lParam) 
    { 
switch(Umsg) // handle these messages
        {  .........
}
....
}

这样就完成了。非常简单的任务。

于 2013-07-23T10:58:12.973 回答