惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
量子位
人人都是产品经理
人人都是产品经理
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
Recent Announcements
Recent Announcements
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
H
Help Net Security
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
The Cloudflare Blog
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
Vercel News
Vercel News

博客园 - abraham

I want learn the programming web by C#.Who can give a simple step by step tutorial,please? Today begin new life of blog. I want learn the programming web by C#.Who can give a simple step by step tutorial,please? Today begin new life of blog. create dll formt lib with cpp funcs or c just funcs by hand. pub class into dll in dos by hand step by step. put class into dll by using vc6.0 How To Read a Big Txt File into CEdit and write it as save!. Create a Dlg's Thread and use it,this can use dlg handle. Here is a reason why can not log a SQL CString How to Kill Blanks in a CString,but how to kill Chinese Blanks i can not solve. How to get a Chinese character's PinYin automaticly? PE format is very important,so learn it. create a dll by hand. static/register/atuo/extern/volatile/const STL is very important,so we learn. print a bmp 2 Create COM step by step 2. Create com step by step.1
Create a Thread and Use it.
abraham · 2004-04-18 · via 博客园 - abraham

Thread is very important for us to program.
You can take some steps to create it  and use it and terminite it.
1:create,MUST create a global ThreadProc that run the things you want.
like:
CTestPint2App theApp;
CString threadRet;
DWORD WINAPI threadProc()
//long __stdcall CAboutDlg::threadProc()
{
CTime time;
CString m_time;
int i=0;
for(;;)
{
 time=CTime::GetCurrentTime();
 m_time=time.Format("%H:%M:%S");
 AfxMessageBox(m_time);
 //::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,m_time);
 i++;
 Sleep(3000);
 if(i=3)
  threadRet="3";
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CTestPint2App initialization
2:use it ,must call an api:
//like:
public :
 DWORD threadId;
 HANDLE hThread;
//above are needed.
void CAboutDlg::OnThreadBegin()
{
 hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadProc,NULL,0,&threadId);
}
//3:terminte the thread is simple too.
like:
void CAboutDlg::OnEndThread()
{
TerminateThread(hThread,1);
}
4:but to use it ,you must declear some global var to store the thread's status
and then according the status,you can do your own desition.
//like:

CTestPint2App theApp;
CString threadRet;//must global!.
DWORD WINAPI threadProc()
////

void CAboutDlg::OnUseThread()
{   int end=0;
    OnThreadBegin();
    while(!end){
 if(threadRet.Compare("")!=0){
    AfxMessageBox("get threadRet:"+threadRet);
    end=1;
 OnEndThread();
 return;
 }
 ::Sleep(100);
}
}

///ok!enjoy it,please.