线程中的c ++ MFC Update变量

时间:2018-06-19 19:35:12

标签: c++ mfc

我想从另一个线程更新pragma solidity ^0.4.18; contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function Ownable() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(address(0), _to, _amount); return true; } function finishMinting() onlyOwner canMint public returns (bool) { mintingFinished = true; MintFinished(); return true; } } contract Crowdsale { using SafeMath for uint256; MintableToken public token; uint256 public startTime; uint256 public endTime; address public wallet; i uint256 public rate; uint256 public weiRaised; event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) public { require(_endTime >= _startTime); require(_rate > 0); require(_wallet != address(0)); token = createTokenContract(); startTime = _startTime; endTime = _endTime; rate = _rate; wallet = _wallet; } function createTokenContract() internal returns (MintableToken) { return new MintableToken(); } function () external payable { buyTokens(msg.sender); } function buyTokens(address beneficiary) public payable { require(beneficiary != address(0)); require(validPurchase()); uint256 weiAmount = msg.value; uint256 tokens = weiAmount.mul(rate); weiRaised = weiRaised.add(weiAmount); token.mint(beneficiary, tokens); TokenPurchase(msg.sender, beneficiary, weiAmount, tokens); forwardFunds(); } function forwardFunds() internal { wallet.transfer(msg.value); } function validPurchase() internal view returns (bool) { bool withinPeriod = now >= startTime && now <= endTime; bool nonZeroPurchase = msg.value != 0; return withinPeriod && nonZeroPurchase; } function hasEnded() public view returns (bool) { return now > endTime; } } contract CappedCrowdsale is Crowdsale { using SafeMath for uint256; uint256 public cap; function CappedCrowdsale(uint256 _cap) public { require(_cap > 0); cap = _cap; } function validPurchase() internal view returns (bool) { bool withinCap = weiRaised.add(msg.value) <= cap; return super.validPurchase() && withinCap; } function hasEnded() public view returns (bool) { bool capReached = weiRaised >= cap; return super.hasEnded() || capReached; } } contract FinalizableCrowdsale is Crowdsale, Ownable { using SafeMath for uint256; bool public isFinalized = false; event Finalized(); function finalize() onlyOwner public { require(!isFinalized); require(hasEnded()); finalization(); Finalized(); isFinalized = true; } function finalization() internal { } } contract RefundVault is Ownable { using SafeMath for uint256; enum State { Active, Refunding, Closed } mapping (address => uint256) public deposited; address public wallet; State public state; event Closed(); event RefundsEnabled(); event Refunded(address indexed beneficiary, uint256 weiAmount); function RefundVault(address _wallet) public { require(_wallet != address(0)); wallet = _wallet; state = State.Active; } function deposit(address investor) onlyOwner public payable { require(state == State.Active); deposited[investor] = deposited[investor].add(msg.value); } function close() onlyOwner public { require(state == State.Active); state = State.Closed; Closed(); wallet.transfer(this.balance); } function enableRefunds() onlyOwner public { require(state == State.Active); state = State.Refunding; RefundsEnabled(); } function refund(address investor) public { require(state == State.Refunding); uint256 depositedValue = deposited[investor]; deposited[investor] = 0; investor.transfer(depositedValue); Refunded(investor, depositedValue); } } contract RefundableCrowdsale is FinalizableCrowdsale { using SafeMath for uint256; uint256 public goal; RefundVault public vault; function RefundableCrowdsale(uint256 _goal) public { require(_goal > 0); vault = new RefundVault(wallet); goal = _goal; } function forwardFunds() internal { vault.deposit.value(msg.value)(msg.sender); } function claimRefund() public { require(isFinalized); require(!goalReached()); vault.refund(msg.sender); } function finalization() internal { if (goalReached()) { vault.close(); } else { vault.enableRefunds(); } super.finalization(); } function goalReached() public view returns (bool) { return weiRaised >= goal; } } contract TestToken is MintableToken { string public name = "Test Token"; string public symbol = "TST"; uint8 public decimals = 18; } contract TestCrowdsale is CappedCrowdsale, RefundableCrowdsale { enum CrowdsaleStage { PreICO, ICO, ICO2, ICO3 } CrowdsaleStage public stage = CrowdsaleStage.PreICO; uint256 public maxTokens = 75000000000000000000000000; uint256 public tokensForEcosystem = 10000000000000000000000000; uint256 public tokensForTeam = 10000000000000000000000000; uint256 public tokensForBounty = 10000000000000000000000000; uint256 public totalTokensForSale = 45000000000000000000000000; uint256 public totalTokensForSaleDuringPreICO = 15000000000000000000000000; uint256 public totalWeiRaisedDuringPreICO; event EthTransferred(string text); event EthRefunded(string text); function TestCrowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet, uint256 _goal, uint256 _cap) CappedCrowdsale(_cap) FinalizableCrowdsale() RefundableCrowdsale(_goal) Crowdsale(_startTime, _endTime, _rate, _wallet) public { require(_goal <= _cap); } function createTokenContract() internal returns (MintableToken) { return new TestToken(); } function setCrowdsaleStage(uint value) public onlyOwner { CrowdsaleStage _stage; if (uint(CrowdsaleStage.PreICO) == value) { _stage = CrowdsaleStage.PreICO; } else if (uint(CrowdsaleStage.ICO) == value) { _stage = CrowdsaleStage.ICO; } else if (uint(CrowdsaleStage.ICO2) == value) { _stage = CrowdsaleStage.ICO2; } else if (uint(CrowdsaleStage.ICO3) == value) { _stage = CrowdsaleStage.ICO3; } stage = _stage; if (stage == CrowdsaleStage.PreICO) { setCurrentRate(7500); } else if (stage == CrowdsaleStage.ICO) { setCurrentRate(6000); }else if (stage == CrowdsaleStage.ICO2) { setCurrentRate(4000); }else if (stage == CrowdsaleStage.ICO3) { setCurrentRate(3000); } } function setCurrentRate(uint256 _rate) private { rate = _rate; } function () external payable { uint256 tokensThatWillBeMintedAfterPurchase = msg.value.mul(rate); if ((stage == CrowdsaleStage.PreICO) && (token.totalSupply() + tokensThatWillBeMintedAfterPurchase > totalTokensForSaleDuringPreICO)) { msg.sender.transfer(msg.value); return; } buyTokens(msg.sender); if (stage == CrowdsaleStage.PreICO) { totalWeiRaisedDuringPreICO = totalWeiRaisedDuringPreICO.add(msg.value); } } function forwardFunds() internal { if (stage == CrowdsaleStage.PreICO) { wallet.transfer(msg.value); EthTransferred("forwarding funds to wallet"); } else if (stage == CrowdsaleStage.ICO) { EthTransferred("forwarding funds to refundable vault"); super.forwardFunds(); }else if (stage == CrowdsaleStage.ICO2) { EthTransferred("forwarding funds to refundable vault"); super.forwardFunds(); }else if (stage == CrowdsaleStage.ICO3) { EthTransferred("forwarding funds to refundable vault"); super.forwardFunds(); } } function finish(address _teamFund, address _ecosystemFund, address _bountyFund) public onlyOwner { require(!isFinalized); uint256 alreadyMinted = token.totalSupply(); require(alreadyMinted < maxTokens); uint256 unsoldTokens = totalTokensForSale - alreadyMinted; if (unsoldTokens > 0) { tokensForEcosystem = tokensForEcosystem + unsoldTokens; } token.mint(_teamFund,tokensForTeam); token.mint(_ecosystemFund,tokensForEcosystem); token.mint(_bountyFund,tokensForBounty); finalize(); } } 变量并将其绘制在空白line中。

我有两个问题:

第一:

  

'CMFCApplicationUpdateUIDoc :: Thread_no_1':非标准语法;采用   '&'创建指向成员的指针

秒:

如何正确更新CMFCApplicationUpdateUIView::OnDraw(CDC* pDC)中的line?我需要使用PostMessageW吗?还是?

MFCApplicationUpdateUIDoc.h

Thread_no_1

MFCApplicationUpdateUIDoc.cpp

class CMFCApplicationUpdateUIDoc : public CDocument
{
public:
    virtual ~CMFCApplicationUpdateUIDoc();
    void StartCount();
    DWORD Thread_no_1(LPVOID lpParam);

};

MFCApplicationUpdateUIView.cpp

void CMFCApplicationUpdateUIDoc::StartCount()
{
    int Data_Of_Thread_1 = 1;
    HANDLE Handle_Of_Thread_1 = 0;
    Handle_Of_Thread_1 = CreateThread(NULL, 0, CMFCApplicationUpdateUIDoc::Thread_no_1, &Data_Of_Thread_1, 0, NULL);
    if (Handle_Of_Thread_1 == NULL)
        ExitProcess(Data_Of_Thread_1);
}

DWORD CMFCApplicationUpdateUIDoc::Thread_no_1(LPVOID lpParam)
{
    int     Data = 0;
    int     count = 0;
    HANDLE  hStdout = NULL;

    if ((hStdout = GetStdHandle(STD_OUTPUT_HANDLE))== INVALID_HANDLE_VALUE)
        return 1;

    Data = *((int*)lpParam);

    for (count = 0; count <= 4; count++)
    {
        line = count;
    }

    return 0;
}

0 个答案:

没有答案