【问题标题】:I don't know how to use codeblocks win32 gui我不知道如何使用代码块 win32 gui
【发布时间】:2020-09-19 05:46:20
【问题描述】:

我使用 win32 GUI 并在谷歌搜索后设法制作了某种界面,但我不知道如何让按钮做某事或让整数从 GUI 中的文本框中获取值。

这是主要的

#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include "resource.h"

HINSTANCE hInst;

BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
    {
    }
    return TRUE;

    case WM_CLOSE:
    {
        EndDialog(hwndDlg, 0);
    }
    return TRUE;

    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
        }
    }
    return TRUE;
    }
    return FALSE;
}


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst=hInstance;
    InitCommonControls();
    return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);
}

这是资源.rc


#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"




//
// Dialog resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
DLG_MAIN DIALOG 0, 0, 125, 64
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Numar Factorial"
FONT 8, "Ms Shell Dlg"
{
    EDITTEXT        0, 82, 10, 23, 16, ES_AUTOHSCROLL, WS_EX_LEFT
    LTEXT           "Introdu numarul\r\n", 0, 20, 13, 50, 17, SS_LEFT, WS_EX_LEFT
    PUSHBUTTON      "Confirma\r\n", 0, 40, 34, 45, 14, 0, WS_EX_LEFT
}



//
// Manifest resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
1                  RT_MANIFEST    ".\\manifest.xml"

资源.h

#ifndef IDC_STATIC
#define IDC_STATIC (-1)
#endif

#define DLG_MAIN                                100

manifest.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

这是主界面 它说阶乘数字,插入一个数字并确认,我希望程序通过该文本框获取一个数字,并在您点击确认后返回该数字的阶乘。 我需要弄清楚如何让按钮做事,因为我是初学者,我的项目将在 2 天内到期。请帮忙。

【问题讨论】:

标签: c++ c user-interface winapi win32gui


【解决方案1】:

您的 PUSHBUTTON 需要一个控件 ID。而不是这个:

PUSHBUTTON      "Confirma\r\n", 0, 40, 34, 45, 14, 0, WS_EX_LEFT

这个:

PUSHBUTTON      "Confirma\r\n", IDC_BUTTON1, 40, 34, 45, 14, 0, WS_EX_LEFT

IDC_BUTTON1 是你的 resource.h 文件中的一个 ID。 (例如#define IDC_BUTTON1 101

给你的编辑框类似的处理。

EDITTEXT        IDC_EDIT1, 82, 10, 23, 16, ES_AUTOHSCROLL, WS_EX_LEFT

这样您就可以使用 GetDlgItemText 来获取该控件中的字符串:

然后您可以在对话框处理程序中处理单击事件,如下所示:

case WM_COMMAND:
{
    switch(LOWORD(wParam))
    {
        case IDC_BUTTON1:
        {
             wchar_t str[200];
             GetDlgItemText(hwndDlg, IDC_EDIT1, str, 200);
             HandleClick(str);
             return TRUE;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    相关资源
    最近更新 更多