|
void CreatMap(const char *Text)
{
char tmp[50]={0};
//如果输入的内容为空时
if(Text==NULL || *Text=='\0')
{
return;
}
//将输入内容按'*'两边分开
for(int i=0;(tmp=*Text)!='*' && (tmp=*Text)!='\0';++i,++Text);
CMap.Create(atoi(tmp),atoi(++Text));
}
void NewMap()
{
//弹出"新建地图对话框"
InputDlg* pDialog = new InputDlg;
std::wstring str = UI_T(" 新建地图(行*列)");
ulong ulStyle = ui_CWindow::uiWS_VISIBLE | ui_CWindow::uiWS_MOVE | ui_CDialog::uiDS_CRFRAME; // | ui_CWindow::uiWS_VSCROLL | ui_CWindow::uiWS_HSCROLL
ui_CRect Rect;
Rect.top() = 300;
Rect.bottom() = Rect.top() + 120;
Rect.left() = 550;
Rect.right() = Rect.left() + 200;
//最后的参数为回调函数指针
pDialog->Create( str, ulStyle, Rect, UI_WINDOWS_START_ID ,CreatMap );
pDialog->RedrawWin();
}
#pragma once
#include "stdafx.h"
class InputDlg :
public ui_CDialog
{
ui_CButton* m_pButton;
void (*Run)(const char *);
public:
InputDlg(void);
virtual ~InputDlg(void);
public:
//消息映射
UI_DECLARE_MESSAGE_MAP()
//初始化对话框
void OnInitDialog( void );
//点击确定时的处理函数
void ButtonOK_Clicked(void);
void Create( std::wstring& str_name, ulong ul_style, ui_CRect& st_rect, ulong ul_id ,void (*P)(const char*))
{
ui_CDialog::Create(str_name,ul_style,st_rect,ul_id);
Run=P;
}
};
#include ".\inputdlg.h"
class CMyEdit1 : public ui_CEdit
{
public:
CMyEdit1(void):ui_CEdit(){};
virtual ulong GetDrawBackColor( void ){ return (ulong)0;}
};
UI_BEGIN_MESSAGE_MAP( InputDlg, ui_CDialog )
uiON_DM_INITDIALOG()
//如确定点击是,调用ButtonOK_Clicked
uiON_BN_CLICKED( UIIDD_MYBUTTON, ButtonOK_Clicked )
UI_END_MESSAGE_MAP()
InputDlg::InputDlg(void)
: UI_NS::ui_CDialog()
{
}
InputDlg::~InputDlg(void)
{
}
void InputDlg::OnInitDialog( void )
{
std::wstring str;
ulong ulStyle;
ui_CRect Rect;
ui_CEdit* pEdit = new CMyEdit1;
str = UI_T("");
ulStyle = uiWS_VISIBLE | uiWS_TABSTOP | ui_CEdit::uiES_CENTER | ui_CEdit::uiES_NOHIDESEL | ui_CEdit::uiES_WANTRETURN;
Rect.top() = 40;
Rect.bottom() = Rect.top() + 20;
Rect.left() = 10;
Rect.right() = Rect.left() + 180;
//UIIDD_MYBUTTON+1是这个控件的ID.
pEdit->Create( str, ulStyle, Rect, this, UIIDD_MYBUTTON+1 );
pEdit->SetSel( 0, 5 );
pEdit->SetLimitText( 30 );
m_pButton = new ui_CButton;
str = UI_T("确定");
ulStyle = uiWS_VISIBLE | uiWS_TABSTOP | ui_CButton::uiBS_BOTTOM | ui_CButton::uiBS_CENTER;
Rect.top() = 80;
Rect.bottom() = Rect.top() + 20;
Rect.left() = 110;
Rect.right() = Rect.left() + 80;
m_pButton->Create( str, ulStyle, Rect, this, UIIDD_MYBUTTON );
ui_CDialog::OnInitDialog(); // 基类对话框的初始化函数
}
void InputDlg::ButtonOK_Clicked(void)
{
std::string strText;
GetDlgItem(UIIDD_MYBUTTON+1)->GetWinText(strText);
Run(strText.c_str());
}
我想输入完了,就关闭对话框的. |
|