// ThreadDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Thread.h"
#include "ThreadDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CThreadDlg dialog
CThreadDlg::CThreadDlg(CWnd* pParent /*=NULL*/)
: CDialog(CThreadDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CThreadDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CThreadDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CThreadDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CThreadDlg, CDialog)
//{{AFX_MSG_MAP(CThreadDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CThreadDlg message handlers
BOOL CThreadDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CThreadDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CThreadDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CThreadDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
HANDLE handle;
DWORD WINAPI mythread(LPVOID lParam)
{
CThreadDlg *p=(CThreadDlg*)lParam;
char buf[256];
for(int i=0;i<10;i++)
{
sprintf(buf,"%d",i);
Sleep(200);
p->test+=buf;
}
AfxMessageBox(p->test);
DWORD m;
GetExitCodeThread(handle,&m);
::ExitThread(m);
return 0;
}
void CThreadDlg::OnButton1()
{
DWORD nThreadId=0;
handle=(HANDLE)::CreateThread(NULL,0,mythread,(LPVOID)this,CREATE_SUSPENDED,&nThreadId );
if(handle!=NULL)
GetDlgItem(IDC_BUTTON2)->EnableWindow(true);
SetThreadPriority(handle,THREAD_PRIORITY_NORMAL);
ResumeThread(handle);
}
void CThreadDlg::OnButton2()
{
DWORD i;
GetExitCodeThread(handle,&i);
::TerminateThread(handle,i);
CloseHandle(handle);
AfxMessageBox(test);
}
没有合适的资源?快使用搜索试试~ 我知道了~
《Visual C++开发技术大全》光盘内容 28
共60个文件
h:16个
cpp:12个
dsp:4个
需积分: 10 8 下载量 154 浏览量
2009-12-03
11:19:01
上传
评论
收藏 57KB RAR 举报
温馨提示
《Visual C++开发技术大全》光盘内容,按照说明直接运行,参考源代码
资源推荐
资源详情
资源评论
收起资源包目录
28.rar (60个子文件)
28
02
Sample
StdAfx.cpp 208B
Thread.dsp 4KB
resource.h 730B
Thread.plg 2KB
Thread.rc 5KB
ThreadDlg.h 1KB
Thread.h 1KB
ThreadDlg.cpp 5KB
StdAfx.h 1KB
Thread.clw 1KB
res
Thread.rc2 398B
Thumbs.db 6KB
Thread.ico 1KB
Thread.dsw 535B
Thread.cpp 2KB
03
Sample
StdAfx.cpp 211B
ThreadMsg.dsw 543B
ThreadMsg.h 1KB
ThreadMsg.plg 2KB
resource.h 825B
ThreadMsg.dsp 4KB
ThreadMsg.clw 1KB
ThreadMsgDlg.cpp 5KB
ThreadMsg.cpp 2KB
StdAfx.h 1KB
ThreadMsgDlg.h 2KB
res
ThreadMsg.rc2 401B
ThreadMsg.ico 1KB
Thumbs.db 6KB
ThreadMsg.rc 5KB
01
MapshareSub
MapshareSub.clw 793B
StdAfx.cpp 213B
resource.h 597B
MapshareSub.rc 4KB
MapshareSubDlg.cpp 3KB
MapshareSub.cpp 2KB
MapshareSub.dsp 4KB
MapshareSub.plg 2KB
StdAfx.h 1KB
MapshareSubDlg.h 1KB
MapshareSub.dsw 547B
res
MapshareSub.rc2 403B
Thumbs.db 6KB
MapshareSub.ico 1KB
MapshareSub.h 1KB
MapshareMain
StdAfx.cpp 214B
resource.h 598B
MapshareMainDlg.cpp 3KB
MapshareMain.h 1KB
MapshareMain.cpp 2KB
MapshareMainDlg.h 1KB
MapshareMain.clw 813B
StdAfx.h 1KB
MapshareMain.plg 2KB
res
MapshareMain.rc2 404B
Thumbs.db 6KB
MapshareMain.ico 1KB
MapshareMain.dsp 4KB
MapshareMain.rc 4KB
MapshareMain.dsw 549B
共 60 条
- 1
资源评论
shifengyuan764
- 粉丝: 4
- 资源: 42
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功